ZUSAMMENFASSUNG
Ich habe einen Dell Inspiron 17-5767-Laptop mit einer internen 1-TB-Festplatte, auf der ich das ursprünglich ausgelieferte Windows 10 belassen habe, das weiterhin für sich allein steht (es ist mein Gaming-Betriebssystem). Zusätzlich habe ich zwei externe Laufwerke, von denen ich mein aktuelles und zukünftiges Linux-Betriebssystem boote. Mein aktuelles Setup ist wie folgt:
- USB 3.0-Port Nr. 0: Seagate Expansion+ 931,5 GiB (1000204885504 Bytes) Externe Festplatte erkannt als /dev/sdb
- beherbergt derzeit eine leere ext4-Partition in voller Größe, hat aber Probleme, diese durch ein optimal ausgerichtetes Partitionsschema mit 12 Partitionen zu ersetzen (das Problem liegt in der Ausrichtung)
- USB 3.0-Port Nr. 1: 238,5 GiB (256060514304 Bytes) Samsung SSD 840 Pro wird als /dev/sdc erkannt
- wurde mit dem Installationsprogramm der Fedora LiveCD partitioniert (mit der Option „Benutzerdefiniert“) und beherbergt sowohl meine Fedora LXDE- als auch meine Lubuntu-Linux-Distributionen in einem einzigen LVM mit einem gemeinsamen Swap-Speicher, einem gemeinsamen Benutzerspeicher, separaten Root-Partitionen und separaten externen Boot-Partitionen (mit „extern“ meine ich hier nicht im LVM, sondern in ihren eigenen separaten primären Partitionen an anderer Stelle auf derselben Festplatte).
- Dieses Laufwerk hat sowohl eine physische als auch eine logische Blockgröße von 512 und ist laut dem Dienstprogramm „align-check opt x“ von parted optimal ausgerichtet, und fdisk ist auch mit der Ausrichtung zufrieden (keine Ausrichtungsbeschwerden von irgendeinem Dienstprogramm).
- Das UEFI-BIOS versucht, zuerst vom USB-Stick und dann vom internen Computer zu booten, sodass Grub mit allen verfügbaren Optionen angezeigt wird.
ZIEL
Ich versuche, etwas Ähnliches wie das, was ich mit /dev/sdc mache, auf dem Laufwerk /dev/sdb zu replizieren, aber mit 5 Linux-Distributionen. Diesen Aspekt meines Projekts habe ich abgedeckt, da ich ein erfahrener Multi-Booter bin. Aber der andere Teil meines Ziels ist, dass meine Partitionierung auf /dev/sdb optimal ausgerichtet ist, genau wie es bei /dev/sdc der Fall ist, und hier stoße ich auf Probleme.
UMFELD
Ich arbeite derzeit mit meiner relativ neuen und aktualisierten Installation von Fedora LXDE und die Ergebnisse, die ich erhalte, sind auch mit meiner ebenfalls relativ neuen und aktualisierten Installation von Lubuntu vollständig reproduzierbar.
GEMELDETE FESTPLATTENPARAMETER
[root@frank ~]# cat /sys/class/block/sdb/queue/physical_block_size
4096
[root@frank ~]# cat /sys/class/block/sdb/queue/logical_block_size
512
[root@frank ~]# cat /sys/class/block/sdb/queue/minimum_io_size
4096
[root@frank ~]# cat /sys/class/block/sdb/queue/optimal_io_size
33553920
[root@frank ~]# cat /sys/class/block/sdb/alignment_offset
0
[root@frank ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 931.5 GiB, 1000204885504 bytes, 1953525167 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 33553920 bytes
Disklabel type: gpt
Disk identifier: 9428D9DB-746C-40CA-B189-060F92A10E3C
Device Start End Sectors Size Type
/dev/sdb1 65535 1953467279 1953401745 931.5G Linux filesystem
Partition 1 does not start on physical sector boundary.
[root@frank ~]#
PROBLEM
Basierend auf der Meldung der physischen Blockgröße scheint es also, dass die Festplatte 4 KB (Advanced Format) statt 512 KB wie das andere Laufwerk hat, obwohl sie aus Gründen der Abwärtskompatibilität eine logische Sektorgröße von 512 KB verwendet. Ich kann feststellen, dass das GNU-Dienstprogramm parted eine Blockgröße von 512 annimmt, weil es bei der Berechnung des optimalen IO-Intervalls
(optimal_io_size + alignment_offset) / physical_block_size = optimal_sector_interval
Es erhält einen Wert von 65535, bei dem die erste Partition automatisch gestartet wird. Das Unterprogramm align-check erkennt eine Partitionsausrichtung nur dann als optimal, wenn sie mit einem Vielfachen von 65535 beginnt. Das Ergebnis von parted ergibt nur dann Sinn, wenn man bedenkt, dass es die physical_io_size als 512 statt als 4096 behandelt.
(33553920 + 0) / 512 = 65535.
Parted kann jedoch verständlicherweise nicht die Blockgröße 4096 verwenden, da die Gleichung dann lauten würde:
(33553920 + 0) / 4096 = 8191.875.
Diese Antwort würde einen Highschool-Algebralehrer zufriedenstellen, ergibt aber offensichtlich keinen Sinn als Sektorintervall, für das man einen diskreten Wert (also eine Ganzzahl!) erwarten würde. Da ich 12 Partitionen erstellen möchte, von denen einige nur 256 MiB groß sind, ist dies in GNU Parted mit Prozentangaben ohnehin nicht möglich, und um es kurz zu machen, ich konnte die Ausrichtungsprüfungen für optimale Ausrichtung nur erfüllen, indem ich bei „unit s“ blieb und die modulare Arithmetik selbst durchführte, um sicherzustellen, dass meine Partitionen in 65535er-Intervallen begannen, wie es Parted von mir wollte. Aufgrund meiner Recherchen hielt ich es nicht für so wichtig, sicherzustellen, dass meine Partitionen auch in diesen Intervallen endeten, und daher blieben zwischen den meisten meiner Partitionen Lücken (offensichtlich nicht größer als 65535).
Wieder einmal dachte parted, mein Ergebnis sei optimal ausgerichtet und behandelte die physische Blockgröße als 512 statt 4096. Aber nachdem ich parted dann beendet und „fdisk -l /dev/sdb“ ausgeführt hatte, enthielt die Ausgabe Folgendes:
Partition 1 does not start on physical sector boundary.
Partition 2 does not start on physical sector boundary.
Partition 3 does not start on physical sector boundary.
Partition 4 does not start on physical sector boundary.
Partition 5 does not start on physical sector boundary.
Partition 6 does not start on physical sector boundary.
Partition 7 does not start on physical sector boundary.
Partition 8 does not start on physical sector boundary.
Partition 9 does not start on physical sector boundary.
Partition 10 does not start on physical sector boundary.
Partition 11 does not start on physical sector boundary.
Partition 12 does not start on physical sector boundary.
Was parted also mag, mag fdisk nicht. Also habe ich versucht, mein Partitionierungsschema mit gParted zu überarbeiten, wobei ich 1 MiB als Einheitengröße verwendet habe. Die erste Partition wurde bei 2048 s gestartet, wie Sie es auf meiner anderen Festplatte (/dev/sdc) sehen würden. fdisk war dann zufrieden und beschwerte sich nicht mehr über die Sektorausrichtung, aber dann hat GNU parted die Ausrichtungsprüfungen für den optimalen Modus nicht bestanden, obwohl es für den minimalen Modus bestanden hätte.
Ich habe jedoch festgestellt, dass mkswap (das ich zum Erstellen eines Swap-Volumes innerhalb des auf /dev/sdb11 platzierten LVM verwendet habe) in beiden Fällen die folgende Warnung ausgab:
[root@frank ~]# mkswap /dev/strange_quark_experimental/swap
mkswap: warning: /dev/strange_quark_experimental/swap is misaligned
Daher stellt mkswap fest, dass mein Swap-Volume falsch ausgerichtet ist, unabhängig davon, ob parted denkt, dass die Platte optimal oder minimal ausgerichtet ist. Und mkswap stellt ebenfalls fest, dass mein Swap-Volume falsch ausgerichtet ist, unabhängig davon, ob fdisk mit der Ausrichtung zufrieden ist oder nicht.
THEORIEN
All dies hinterlässt bei mir den Eindruck, dass ich möglicherweise Warnungen von mindestens einem Festplattenberichts- oder Partitionierungsprogramm ignorieren muss, aber ich bin mir nicht sicher, von welchem. Es ist auch möglich, dass alle Berichte von vornherein unzuverlässig sind, da das USB-kompatible Gehäuse, das die Festplatte enthält, möglicherweise mindestens einen der Sektorparameter falsch meldet. Vielleicht ist es beispielsweise gar kein AF-Laufwerk? Oder vielleicht wird die optimale IO-Größe falsch gemeldet. Oder vielleicht beides? Und glauben Sie mir, ich habe auch die Möglichkeit in Betracht gezogen, dass dies ein PEBKAC-Fall ist, da ich möglicherweise einfach etwas falsch verstehe, was die Ausrichtung von Partitionen auf einem 4k-Laufwerk betrifft. Ich bin mir nicht sicher.
Was auch immer vor sich geht, ich werde mit meinen eigentlichen Linux-Installationen zufrieden sein, sobald ich davon überzeugt bin, dass meine Partitionen optimal ausgerichtet sind und mkswap oder zumindest die Dienstprogramme, denen ich am meisten vertrauen sollte, aufhören, sich über die Ausrichtung zu beschweren.
HELFEN
Bitte helfen Sie mir zu verstehen, warum ich Parted und andere Festplattendienstprogramme nicht dazu bringen kann, sich auf mehr als die Mindestausrichtung zu einigen (die nur beim Partitionieren mit gParted oder gdisk erreicht wird), und geben Sie mir bitte einen Rat, ob ich mir in meinem Fall wirklich zu viele Gedanken über die Vorteile der optimalen Ausrichtung gegenüber der Mindestausrichtung machen sollte, da ich keine weitere Zeit verschwenden werde, wenn der Unterschied bei Leistung oder Festplattenzustand zu gering ist. Andernfalls möchte ich die Vorteile der erweiterten Formatierung meiner Festplatte voll ausnutzen können.
Antwort1
Falls Sie die bizarre Zahl 65535 immer noch verwirrt. Mich verwirrt diese Frage seit kurzem auch. Ich habe nach einer Antwort gesucht und bin auf diese gestoßen:http://gparted-forum.surf4.info/viewtopic.php?id=17839
Kurz gesagt, die optimale_io_size ist möglicherweise ungültig, wenn die Festplatte mit einem USB-SATA-Adapter an einen PC angeschlossen ist.
Die Lösung besteht darin, diese Zahl einfach zu ignorieren und sich an den Vorschlag einer 1-MiB-Grenze zu halten.