Wie kann eine Festplatte ohne Partition „partitioniert“ werden, ohne dass Daten verloren gehen?

7

Ich habe eine tragbare 1-TB-Festplatte, die ich für Backups verwende. Das gesamte Laufwerk ( /dev/sdb) wurde als ext4Dateisystem formatiert .

Ich habe über die Vorteile von btrfsBackups (Prüfsummen, Selbstheilung usw.) gelesen und erwäge, diese Festplatte von auf ext4zu konvertieren btrfs.

Ich bin mir ziemlich sicher, dass ich die Größe der Festplatte ( e2fsck -f /dev/sdb && resize2fs /dev/sdb 500G && fdisk /dev/sdboder ungefähr) noch ändern kann . Ich bin mir jedoch nicht sicher, wie ich Partitionen in ein Gerät "einführen" soll, das zunächst keine Partitionen hatte.

Kann das gemacht werden und wenn ja, wie?

(Beachten Sie, dass die Dateisysteme selbst - ext4, btrfsusw. - sind so ziemlich irrelevant - die Frage ist lediglich über eine Vorrichtung Partitionierung , die zunächst ohne Partition erstellt wurde -. Und dies ohne das bestehende Dateisystem zu verlieren)

Magnus
quelle
2
Dies beantwortet die Frage nicht, aber Sie können ein ext4-Dateisystem mit btrfs-convert
Torin
an Ort und Stelle zur lvm-Konvertierung: github.com/g2p/blocks und obwohl dies immer noch keine Partitionstabelle hinzufügt, ist es einfacher, eine nach der pvmoveDatenverlagerung nachträglich hinzuzufügen
Frostschutz

Antworten:

7

Partitionstabellen (zumindest im MBR- oder GPT-Stil) befinden sich am Anfang und / oder Ende von Festplatten, sodass Sie sie einführen können, wenn Sie den erforderlichen Speicherplatz freigeben können.

Wenn ich mit einer Terabyte-Festplatte arbeite, gehe ich wie folgt vor.

  1. Ändern Sie die Größe des ext4-Dateisystems auf 499G (auf der sicheren Seite fehlerhaft). Dies stellt sicher, dass alle Daten, Dateisystemstrukturen usw. in die Blöcke der ersten 499G auf der Festplatte passen. Idealerweise sollten Sie das Dateisystem so weit wie möglich reduzieren, um die Datenmenge zu verringern, die Sie in den folgenden Schritten kopieren müssen.
  2. Kopieren Sie die Blöcke mit ddeinem ähnlichen Werkzeug in die zweite Hälfte der Festplatte .
  3. Partitionieren Sie die Festplatte und erstellen Sie eine Partition, die etwas größer als das Dateisystem ist (500G). Verwenden Sie dazu GPT. Sie überschreiben Blöcke am Anfang und Ende der Festplatte, sodass die Kopie des Dateisystems am Anfang der Festplatte jetzt getoastet wird.
  4. Kopieren Sie die Rohblöcke von der zweiten Hälfte der Festplatte auf die neu erstellte Partition, und verwenden Sie erneut ddoder ähnliches. Sie müssen die Offsets und Größen basierend auf dem, was Sie in Schritt 2 getan haben, berechnen, aber das Ziel ist einfach ( /dev/sdX1).
  5. Ändern Sie die Größe des Dateisystems erneut, damit es die gesamte Partition belegt.

Mit einem Tool wie dem, ddrescuedas umgekehrt kopieren kann, können Sie dies leicht vereinfachen:

  1. Ändern Sie die Größe des Quelldateisystems so weit wie möglich.
  2. Berechnen Sie, wo die erste Partition beginnen würde (ohne die Partitionstabelle tatsächlich zu erstellen).
  3. Verschieben Sie die Blöcke, aus denen das Quelldateisystem besteht, so, dass sie dort beginnen, wo die erste Partition beginnen würde. (Hier müssen Sie am Ende mit dem Kopieren beginnen.)
  4. Partitionieren Sie die Festplatte.
  5. Ändern Sie die Größe des Dateisystems.

Angesichts des Kopieraufwands wäre es einfacher, die Daten an einem anderen Ort zu sichern und wiederherzustellen! Sie können den Kopieraufwand begrenzen, indem Sie den Start des ext4-Dateisystems speichern und den Rest der Daten wiederherstellen. Dies erfordert jedoch eine sorgfältigere Buchführung.

Stephen Kitt
quelle
Klingt logisch. Ich bin auf halbem Weg btrfs-convert, kann es also nicht versuchen, aber ich habe in der Vergangenheit Partitionstabellen manuell zusammengefügt, damit dies funktionieren kann.
Magnus
Kann das ddDienstprogramm (oder etwas anderes) Blöcke ab dem Ende verschieben? Verschieben Sie beispielsweise Block 8 nach 9, 7 nach 8, 6 nach 7 usw. Dies kann dazu führen, dass nur ein einziger ddAufruf erforderlich ist.
Magnus
Ja, ddrescuekann das, also habe ich eine "einfachere" Variante hinzugefügt , die diese Fähigkeit nutzt.
Stephen Kitt
0

Ich habe ein 2-TB-Laufwerk ohne Datenverlust erfolgreich neu partitioniert. Ich wollte Backups von einer GNU / Linux-Box und einer Windows-Box durchführen, also habe ich die EXT4-Partition auf 1 TB verkleinert und eine neue 1-TB-Partition erstellt, die ich als NTFS-Dateisystem formatiert habe.

Ich musste lediglich die GUI Disks App in Ubuntu verwenden. Andere Distributionen sollten eine ähnliche GUI-App zum Verwalten von Partitionen haben. Ich stelle mir vor, dass die Verwendung von BTRFS anstelle von NTFS genauso gut funktionieren würde.

Natürlich sollten Sie auch in der Lage sein, die Neupartitionierung vom Terminal aus durchzuführen.

Auf den Rücken klopfen
quelle
2
Sie vermissen die Tatsache, dass das Laufwerk derzeit keine Partitionen hat, sodass eine partitionverwaltende GUI-Anwendung nicht weiß, was sie damit tun soll (außer sie zu partitionieren und alles zu verlieren, was sich derzeit auf dem Laufwerk befindet).
Stephen Kitt
@StephenKitt Würden Sie bitte erklären, warum es keine Partition gibt? Nach meinem Verständnis verfügt jedes Laufwerk über mindestens eine Partition, die das Dateisystem enthält. Verstehe ich etwas falsch?
PatOnTheBack
Siehe Matteos Antwort und die dazugehörigen Kommentare. Dateisysteme können ohne Partitionen direkt auf einem Laufwerk erstellt werden. Dies ist das besondere Problem, um das es hier geht.
Stephen Kitt
-1

Ich bin verwirrt.

Sie sagten, die Festplatte sei als ext4 formatiert, Sie haben also eine Partition. Möglicherweise zeigt fdisk es nicht an, weil die Partitionstabelle der Festplatte gpt ist und Ihre fdisk es nicht unterstützt. In diesem Fall können Sie parted verwenden

sudo parted -l /dev/sdb

Außerdem können Sie ext4 in btrfs konvertieren, wie in diesem Arch Linux-Handbuch beschrieben .

Matteo Fabbroni
quelle
1
Falsch. Sogar eine reguläre Datei in einem vorhandenen Dateisystem kann als Dateisystem behandelt werden. Versuchen Sie Folgendes : dd if=/dev/zero of=/tmp/my.ext4 bs=$((1024 * 1024)) count=1 && mkfs.ext4 -F /tmp/my.ext4 && mkdir /tmp/my.ext4.mounted && sudo mount -t ext4 /tmp/my.ext4 /tmp/my.ext4.mounted && ls -l /tmp/my.ext4.mounted. Sie sollten ein Verzeichnis "Lost + Found" sehen. Wenn eine reguläre Datei ein Dateisystem sein kann, kann dies auch ein ganzes Blockgerät.
Magnus
Ich verstehe das, aber es wird normalerweise für (Krypto-) Schleifenbilder verwendet. Warum hätten Sie jemals ein Blockgerät so behandelt? Ich sehe keine Vorteile
Matteo Fabbroni
2
Leider verwenden viele Leute Laufwerke direkt, ohne sie überhaupt zu partitionieren. Und erleiden Sie Datenverlust, nachdem eine wilde Partitionstabelle
angezeigt wurde