Wie formatiere ich eine 4k-Sektor-Festplatte?

12

Ich habe eine 3-TB-Festplatte vom Typ Seagate ST3000DM001 gekauft. Es wurde in einem Gehege verkauft. Ich habe auf ext4 formatiert, einige Daten darauf kopiert und sie dann aus dem Gehäuse entfernt und direkt mit dem Motherboard verbunden. Meine Daten waren für das Betriebssystem nicht sichtbar (es wurde eine unbekannte ~ 300GiB-Partition und der Rest als freier Speicherplatz angezeigt), sodass ich anfing, mehr über Advanced Format und Laufwerke mit mehr als 2 TB zu lesen.

Ich habe die Festplatte wieder mit USB verbunden, alle Daten kopiert und wieder an SATA angeschlossen. Ich benutzen GParted eine GPT - Partitionstabelle zu erstellen (der ubuntu Festplatte - Dienstprogramm läßt mich nicht mit Error synchronizing after initial wipe: Timed out waiting for object (udisks-error-quark, 0), erstellt eine große 3TB Ext4 - Partition, verließ den Standard Align toauf Wert MiBund formatierte.

Das Laufwerk wird korrekt erkannt und ordnungsgemäß aktiviert. Dateien können erfolgreich von und auf das Laufwerk kopiert werden.

Jedoch:

Gparted zeigt die Festplatte mit 512k Sektoren, von denen ich weiß, dass sie nicht wahr ist 1

Geteilter Screenshot

während cat /sys/block/sdb/queue/physical_block_sizeberichtet4096

Ich habe einige Berichte gefunden, libparteddie ein Problem mit Nicht-512k-Sektoren 2 und anderen 3 haben , die besagen, dass die Ausrichtung auf MiB ausreicht.

Parted meldet, dass das Laufwerk ausgerichtet ist, wenn ich "Minimal" wähle:

(parted) align-check 
alignment type(min/opt)  [optimal]/minimal? min                           
Partition number? 1                                                       
1 aligned
(parted)    

Ist meine Konfiguration korrekt? Habe ich Leistungseinbußen, weil die Festplatte mit 512.000 Sektoren formatiert ist, gParted falsche Werte meldet oder ich das Ganze falsch verstanden habe?

  1. http://www.storagereview.com/seagate_barracuda_3tb_review_1tb_platters_st3000dm001
  2. http://ubuntuforums.org/showthread.php?t=1536933&p=9754234#post9754234
  3. http://wdc.custhelp.com/app/answers/detail/a_id/5655
qwazix
quelle
Ich besitze einige dieser Seagte-Laufwerke sowie WD- und Fujitsu / HGST 3-TB-Laufwerke, die alle problemlos funktionieren. Sie haben möglicherweise Recht mit GParted, da mein Seagate-Gerät, das derzeit über USB angeschlossen ist, eine Sektorgröße von 4096 in GParted aufweist. Meine GParted-Version ist 0.12.1, die Standardversion von quantal.
LiveWireBT
Ich glaube, dass es 4096 auch hier zeigen wird, wenn ich es über USB anschließe. Der USB-SATA-Controller steckt voller Magie.
Qwazix
Relevante QA: superuser.com/questions/679725/...
qwazix

Antworten:

5

Es werden 512 Byte gemeldet, da dies die logische Sektorgröße für die Abwärtskompatibilität mit älteren Betriebssystemen (Windows) ist. (g) parted richtet Partitionen auf 1 MB aus, was mehr als genug ist, um mit Laufwerken mit 4 KB physischen Sektoren ordnungsgemäß zu funktionieren. Es ist also in Ordnung, wie es ist.

Psusi
quelle
11

Erstens weisen die meisten Advanced Format-Laufwerke eine logische Sektorgröße von 512 Byte auf, obwohl die physische Sektorgröße 4096 Byte (4 KB) beträgt. Dies geschieht durch Jonglieren von Daten in der Firmware des Laufwerks. Wenn die Partitionen nicht richtig ausgerichtet sind , kann dies zu Leistungsproblemen führen . Möglicherweise ist dies jedoch nicht die Ursache für Ihr Problem, und Ihr Fokus auf die Partitionsausrichtung ist falsch platziert. (Um sicher zu gehen, Partitionsausrichtung ist wichtig, es ist nur nicht die Ursache des Problems.)

Meine Vermutung (und es istnur eine Vermutung) ist, dass Ihr Problem durch den Wechsel zwischen einem USB-Gehäuse und dem direkten Anschluss der Festplatte entsteht. Einige Gehäuse übersetzen logische 512-Byte-Sektoren auf der Festplatte in logische 4096-Byte-Sektoren, die dem Computer angezeigt werden - das Gegenteil von dem, was die Firmware auf einer Advanced Format-Festplatte leistet. Ich bin mir nicht sicher, aber ich vermute, dass einige Gehäuse dies nur bei Festplatten mit mehr als 2 TB tun. Sowohl MBR- als auch GPT-Partitionierungsschemata beziehen sich auf Daten nach Sektornummern. Wenn Sie also die Sektorgröße ändern, werden die Partitionierungsdaten ungültig. Wenn Sie also die Festplatte in einem USB-Gehäuse vorbereiten, das auf diese Weise übersetzt wird, und dann versuchen, die Festplatte direkt zu verwenden (oder umgekehrt), werden Fehler angezeigt, da die Partitionen (und sogar die GPT-Sicherungsdaten) nicht vorhanden sind wo der Computer es erwartet. Es wäre, als würde man einer Person mit verbundenen Augen sagen "

Die Lösung für dieses Problem besteht darin, die Festplatte auf eine Weise vorzubereiten und zu verwenden: Verwenden Sie entweder das USB-Gehäuse oder eine direkte Verbindung, nicht beides. Wenn beide aus irgendeinem Grund erforderlich sind, müssen Sie ein Gehäuse finden, das ohne diese Art der Übersetzung funktioniert.

Um meine Hypothese zu testen, können Sie ein Tool (wie parted) verwenden, das logische Sektorgrößen meldet . Zum Beispiel:

sudo parted /dev/sda print
Model: ATA Hitachi HDP72505 (scsi)
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/512B

Ich habe eine Reihe von Informationen aus dieser Ausgabe weggelassen. Das wichtige Detail befindet sich in der letzten hier gezeigten Zeile: Die logischen und physischen Sektorgrößen betragen jeweils 512 Bytes. Wenn Sie diesen Test ausführen, schließen Sie den Datenträger erneut an und führen Sie ihn erneut aus, um die Ergebnisse zu vergleichen. Wenn sich die Größe des logischen Sektors in Abhängigkeit davon ändert, wie Sie die Festplatte anhängen, ist meine Hypothese korrekt und die Ursache für Ihr Problem. Oder zumindest ist es ein Problem; es kann auch andere geben. Insbesondere der von Error synchronizing after initial wipeIhnen erwähnte Fehler könnte auf ein anderes Problem hinweisen. OTOH, das könnte eine Nebenwirkung von seinpartedversucht, Backup-GPT-Daten über das Ende der Festplatte hinaus zu lesen. In jedem Fall sollten Sie sich mit diesem Problem befassen, wenn sich die Größe des logischen Sektors ändert, bevor Sie sich mit etwas anderem befassen. Wenn Sie die Festplatte neu partitionieren möchten, aber aufgrund des Error synchronizingFehlers Probleme haben , versuchen Sie, gdiskoder cgdisk(im gdiskPaket) anstelle von partedoder GParted zu verwenden. Die gdiskFamilie ist robuster gegen Fehler als die partedFamilie.

Rod Smith
quelle
Ich glaube, dass das Problem auf den Wechsel zwischen USB und intern zurückzuführen ist. Das war in der Tat mein erster Gedanke und deshalb habe ich die Partitionstabelle neu erstellt, nachdem ich die Festplatte wieder in den PC eingelegt und mit SATA verbunden hatte. (Ich habe es zuerst herausgenommen, nur um meine Daten herauszunehmen). Ich möchte es nicht wieder entfernen, um den über USB gemeldeten logischen Sektor zu testen, aber alle Fakten legen dies nahe.
Qwazix
Ich habe nicht vor, die Schnittstellen zu wechseln, die Festplatte funktioniert so, wie sie jetzt unter SATA-Verbindung vorbereitet ist. Ich mache mir nur Sorgen um die von Ihnen erwähnten Leistungsnachteile und möchte verstehen, was wirklich passiert. parted /dev/sdb printgibt 512/4096anscheinend gParted die logische Sektorgröße zurück, was erklärt, warum @LiveWireBT 4096 für dieselbe Festplatte (über USB verbunden) erkennt und Ihre Vermutung wie oben bestätigt.
Qwazix
Das gleiche Problem mit einem Verbatim Store'n'Go externen Laufwerk hat, ist die logische Sektorgröße 512 , während die physikalische Größe ist 4096.
gaborous
4

Sowohl am Linux-Kernel als auch an den Dienstprogrammen wurden Änderungen vorgenommen, um Advanced Format-Laufwerke zu unterstützen. Diese Änderungen stellen sicher, dass alle Partitionen auf Advanced Format-Laufwerken ordnungsgemäß an 4K-Sektorgrenzen ausgerichtet sind. Die Kernel-Unterstützung für Advanced Format-Laufwerke ist in Kernel-Versionen 2.6.31 und höher verfügbar. Die Unterstützung für das Portionieren und Formatieren von Advanced Format-Laufwerken ist in den folgenden Linux-Dienstprogrammen verfügbar:

Fdisk: GNU Fdisk ist ein Befehlszeilenprogramm, das Festplatten partitioniert. Die Versionen 1.2.3 und höher unterstützen Advanced Format-Laufwerke.

Parted: GNU Parted ist ein grafisches Dienstprogramm zum Partitionieren von Festplatten. Ab Version 2.1 werden Advanced Format-Laufwerke unterstützt.

4K native (4Kn) Festplatten haben eine logische Sektorgröße von 4 KB. Moderne Betriebssysteme können Daten auf diesen Datenträgern speichern, können jedoch im Allgemeinen nicht von diesen Datenträgern booten. Diese Datenträger sind normalerweise externe Laufwerke mit USB-Anschluss.

Um eine Partition als Medienspeichergerät zu erstellen, drücken Sie einfach Ctrl+ Alt+ Tauf Ihrer Tastatur, um das Terminal zu öffnen. Führen Sie beim Öffnen die folgenden Befehle aus:

sudo mkfs.ext4 -m 0 /dev/sdb1

Die meisten 4-KByte-Festplatten haben eine physische Sektorgröße von 4096 Byte, sodass 3 TByte auf die Platten passen, aber sie haben immer noch eine logische Sektorgröße von 512 TByte, um mit Betriebssystemen kompatibel zu sein, die einen Sektor mit 512 TByte erwarten. Wenn Sie den Befehl print in parted verwenden, um die Details zu drucken, heißt das, dass die Sektorgröße logisch / physikalisch 512B / 4096B ist. Das ist normal.

Diese "Konvertierung" wird von der Intelligenz auf der Festplatte selbst durchgeführt und ist normal. So sollte es funktionieren.

Wenn Sie nicht alle 3 TB anzeigen können, überprüfen Sie zunächst im BIOS, ob die Festplattengröße dadurch nicht eingeschränkt wird. Möglicherweise benötigen Sie ein BIOS-Update, um die Festplatte zu unterstützen.

Verwenden Sie auch parted, um eine Partition ab 0 zu erstellen, was ein Fehler ist. Sie müssen die erste Partition auf Sektor 2048 starten, was 1 MB entspricht, damit die Partitionen auf der Festplatte für eine optimale Leistung ausgerichtet sind.

Ändern Sie also die Einheit in "MiB", drucken Sie die Datenträgerdetails, die auch die Datenträgergröße in "MiB" ausgeben, und erstellen Sie die Partition (wenn Sie nur eine einzelne Partition wünschen), beginnend mit 1 MB und endend mit der letzten (oder vorletzten) MiB. .

Zum Beispiel sollte eine 3-TB-Festplatte in Wirklichkeit etwa 2.861.022 MiB haben. Das Erstellen einer einzelnen Partition, die sich über die gesamte Festplatte erstreckt, auf einem Festplattengerät mit dem Namen / dev / sdX sieht folgendermaßen aus (ersetzen Sie das X durch den richtigen Buchstaben):

sudo parted /dev/sdX
unit MiB
mklabel gpt
print (to see the total size in MiB)
mkpart primary 1 2861022
quit

Wenn die Festplattengröße einige MiB mehr oder weniger als 2861022 beträgt, passen Sie die Endposition an.

Das ist es. Danach erstellen Sie das gewünschte Dateisystem auf der Partition.

Quellen und zusätzliche Lektüre

4K-Sektor-Laufwerke und Linux

Fehlerprüfung und Installation von 4k-Laufwerken unter Linux

Ubuntu-Foren

Mitch
quelle
Danke für die Antwort, aber sie beantwortet meine Frage nicht wirklich. Ich habe festgestellt, dass der Kernel die Sektorgröße des Laufwerks erkennt und dass gparted das auch erkennen soll , aber es meldet sich anders und ich bin gespannt, ob es eine Erklärung dafür gibt, ob es sich um einen Fehler handelt oder ob ich etwas falsch gemacht habe .
Qwazix
0

Solange Sie Ihre Partitionen auf ein Vielfaches von 4 KB ausrichten, ist alles in Ordnung. Ansonsten müssen Sie für Laufwerke mit physischen 4-KB-Sektoren nichts Besonderes tun.

Alte Partitionssoftware hat Partitionen auf einem Vielfachen von 63x512B Sektoren ausgerichtet, was zu einer schlechten Leistung führt, wenn das Laufwerk über 4 KB physische Sektoren verfügt, da dies 31,5 KB und NICHT ein Vielfaches von 4 KB sind.

In Ubuntu ist praktisch keine Partitionierungssoftware mehr verfügbar (es sei denn, Sie fordern dies ausdrücklich an). Die meisten werden standardmäßig auf ein Vielfaches von 1MiB (2048x512B Sektoren, also 256x4KB Sektoren) ausgerichtet.

Was würde passieren, wenn Sie es nicht ausrichten würden?

Wenn Sie die Partitionen nicht auf ein Vielfaches von 4 KB ausrichten, ist das Schlimmste, was passieren wird, ein Leistungsverlust (ein ziemlich schwerwiegender für kleine Dateien). Laufwerke mit 4-KB-Sektoren emulieren aus Kompatibilitätsgründen mit vorhandenen Systemen in der Regel 512-KB-Sektoren. Sie funktionieren also einwandfrei, wenn Sie sie nur als 512-B-Sektor-Laufwerk behandeln. Wenn Sie jedoch in einen einzelnen 512-KB-Bereich schreiben, wird ein ganzer 4-KB-Sektor neu geschrieben.

Aus Gründen der Leistung ist es daher wichtig, sicherzustellen, dass die in Ihrem Dateisystem verwendeten 4-KB-Cluster mit den 4-KB-Sektoren auf dem Laufwerk übereinstimmen, damit beim Schreiben eines einzelnen Clusters nicht zwei 4-KB-Sektoren auf das Laufwerk geschrieben werden müssen.

thomasrutter
quelle