NTFS-Format (mkfs) – welche Bereiche der Festplatte werden überschrieben?

NTFS-Format (mkfs) – welche Bereiche der Festplatte werden überschrieben?

Ich habe versehentlich mkfs.ntfs -Q /dev/sda(anstatt /dev/sda6) auf einer externen 2-TB-Festplatte ausgeführt. Glücklicherweise gibt es am Anfang eine 1-GB-Partition, die nicht genutzt wird, und am Ende auch jede Menge Platz:

Device     Boot      Start        End    Sectors  Size Id Type
/dev/sda1             2048    2099199    2097152    1G  b W95 FAT32
/dev/sda2  *       2099200 3739256831 3737157632  1.8T  7 HPFS/NTFS/exFAT
/dev/sda4       3739256832 3907029166  167772335   80G  5 Extended
/dev/sda5       3739258880 3751841791   12582912    6G 83 Linux
/dev/sda6       3751843840 3907029166  155185327   74G  7 HPFS/NTFS/exFAT

Ist /dev/sda2sicher? Oder schreibt mkfs.ntfs Metadaten in die Mitte des Zielspeichers, in diesem Fall schätze ichbeliebigDatei könnte ohne Warnung beschädigt werden?

Antwort1

Ist /dev/sda2sicher?

Im Allgemeinen: nein. Lesen Sie weiter, um zu erfahren, warum ich das denke.


Beispielprozedur

Meine 2TB-Festplatte hat eine Größe von 2000398934016 Bytes. Ziel ist es zu untersuchen, was mkfs.ntfs -Qmit einem Gerät dieser Größe passieren würde.

Ich erstelle eine Sparse-Datei mit genau dieser Größe:

$ # the filesystem must support sparse files
$ truncate -s 2000398934016 fakesda

ls -lsbestätigt, dass die gesamte Datei spärlich ist:

$ ls -ls fakesda
0 -rw-r--r-- 1 kamil kamil 2000398934016 Oct 31 18:48 fakesda

( 0das sagt der erste). Aber auchsparsemap(was später nützlich sein wird) bewirkt:

$ sparsemap fakesda
HOLE 2000398934016

Ich könnte tun mkfs.ntfs -FQ fakesda, würde dann aber mkfs.ntfsannehmen, dass die Sektorgröße 512 Byte beträgt. In diesem Beispiel nehmen wir an, dass meine Festplatte 4096 Byte als logische Sektorgröße verwendet. In diesem Fall denke ich, dass ich --sector-sizedie Option von verwenden kann mkfs.ntfs(siehe man 8 mkfs.ntfs). Aber um sicherzugehen, was allein mkfs.ntfs -Qmit meiner Festplatte passieren würde, entscheide ich mich, ein Loop-Gerät aus zu erstellen fakesda:

$ sudo losetup -f --show --sector-size 4096 fakesda
/dev/loop0

sparsemapsagt mir fakesdanoch ganz spärlich. Ich führe mkfs.ntfs -Qauf dem Loop-Device aus:

$ sudo mkfs.ntfs -Q /dev/loop0

Ich zerstöre das Loop-Gerät und syncnur für den Fall:

$ sudo losetup -d /dev/loop0
$ sync

Wie spärlich ist die Datei jetzt?

$ sparsemap fakesda
DATA 12288
HOLE 4096
DATA 110592
HOLE 250049753088
DATA 61460480
HOLE 750088122368
DATA 67125248
HOLE 1000132341760
DATA 4096

Lesen Sie weiter sparsemap -h, um zu erfahren, wie Sie dies interpretieren

Die Datei wird als eine Folge von Daten und Lücken interpretiert. Bei einer Datei mit 8192 Byte Daten, gefolgt von einer 4096 Byte großen Lücke, gefolgt von 8192 Byte Daten, wäre die Ausgabe von Sparsemap beispielsweise:

DATA 8192
HOLE 4096
DATA 8192

In meinem Ergebnis DATAbezeichnet jede Zeile ein Fragment, das von betroffen ist mkfs.ntfs.ich kann sehenmkfs.ntfs tutSchreiben Sie etwas in die Mitte des Zielfeldes.

Zum Schluss entferne ich die Datei mit rm fakesda.


Ihr konkreter Fall

Sie können Ihre eigenen Tests durchführen, indem Sie die genaue Größe (und Sektorgröße) Ihrer Festplatte und die von mkfs.ntfsIhnen verwendete verwenden. Auf diese Weise können Sie die betroffenen Fragmente wahrscheinlich genau identifizieren und feststellen, zu welchen Partitionen (welchen alten Dateisystemen) sie gehören. Die Zuordnung der Fragmente zu bestimmten Dateien oder Metadaten in Ihren alten Dateisystemen ist möglicherweise nicht einfach und stellt ein anderes Problem dar.

Die Partitionstabelle, die Sie gepostet haben, sagt mir, dass die Sektorgröße in Ihrem Fall 512 Byte beträgt. Ich denke, Sie können es verwenden, mkfs.ntfs -FQ fakesdaohne damit herumzuspielen losetup. In meinem Beispiel wird absichtlich eine andere Sektorgröße verwendet, damit die Antwort allgemeiner ist.


Zweifeln

Wenn mkfs.ntfs -QNullen in einen Teil der Datei geschrieben werden, mit der es arbeitet, und wenn es intelligent genug ist, dies durch Sparsifizierung der Datei zu erreichen, dann wird mein Verfahren dies nicht erkennen. Ehrlich gesagt weiß ich nicht, ob das Tool dies tut. Wenn ja, dann brauchen Sie etwas mehr als mein Verfahren, um Folgendes zu findenalledie betroffenen Fragmente.

Diese Unvollkommenheit des Verfahrens ändert nichts an der Schlussfolgerung: Das Dateisystem in Ihrem Computer /dev/sda2wurde möglicherweise teilweise überschrieben.

Ich stelle fest mkfs.ntfs, ohne -Qtatsächlich Nullen zu schreibenohnedie Datei zu spärlich zu machen; tatsächlich wird die ganze Datei entsparsam gemacht. Ich habe das mit Dateien getestet, die viel kleiner als 2 TB sind, aber trotzdem. Ich kann nurverdächtig mkfs.ntfs -Qist ähnlich und verdünnt die Datei nie.


Anmerkungen

  • Mein Testbett: Debian GNU/Linux 10.

  • Meine mkfs.ntfs -VDrucke mkntfs v2017.3.23AR.3 (libntfs-3g).

  • Ich installierte sparsemapvon

    sudo apt-get install python3-pip
    sudo pip3 install sparseutils
    

verwandte Informationen