Erstellen Sie eine Partition, die mit parted ausgerichtet ist


67

Ich partitioniere eine Nicht-SSD-Festplatte mit Parted, weil ich eine GPT-Partitionstabelle möchte.

parted /dev/sda mklabel gpt

Jetzt versuche ich, die Partitionen korrekt auszurichten, damit ich mit dem folgenden Befehl weiß, wo der erste Sektor beginnt:

parted /dev/sda unit s p free

Disk /dev/sda: 488397168s
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start  End         Size        File system  Name      Flags
        34s    488397134s  488397101s  Free Space

Wir können sehen, dass es in Sektor 34 startet (das ist die Standardeinstellung, wenn diese Partitionstabelle verwendet wird).

Also, um die erste Partition zu erstellen, habe ich versucht:

parted /dev/sda mkpart primary 63s 127s

es auf Sektor 64 auszurichten, da es ein Vielfaches von 8 ist, aber es zeigt:

Warnung: Die resultierende Partition ist nicht richtig ausgerichtet, um eine optimale Leistung zu erzielen.

Die logischen und physischen Sektorgrößen auf meiner Festplatte betragen jeweils 512 Byte:

cat /sys/block/sda/queue/physical_block_size
512

cat /sys/block/sda/queue/logical_block_size 
512

Wie erstelle ich korrekt ausgerichtete Partitionen? Was mache ich falsch?


Beginnen Sektornummern wirklich bei Null?
Burton Samograd

1
Ich habe es auch versucht parted /dev/sda mkpart primary 64s 128s(falls es in 1 beginnt), aber es gibt die gleiche Warnung zurück.
Marc

Anscheinend gibt es einen Befehl zum Überprüfen, ob ein Wert ausgerichtet ist: gnu.org/software/parted/manual/html_node/align_002dcheck.html . Vielleicht versuchen Sie das mit verschiedenen Werten unter Verwendung einer for-Schleife und spucken die Werte aus, die in Ordnung sind?
Burton Samograd

Burton, ich wusste nichts über diesen Befehl, aber er kann erst verwendet werden, wenn eine Partition vorhanden ist.
Marc

Tut mir leid, ich habe die Beschreibung nicht sorgfältig genug gelesen.
Burton Samograd

Antworten:


68

Zum Ausrichten der Partition partedkönnen Sie die --alignOption verwenden. Gültige Ausrichtungstypen sind:

  • none - Verwenden Sie die vom Festplattentyp zugelassene Mindestausrichtung.
  • Zylinder - Partitionen an Zylindern ausrichten.
  • minimal - Verwenden Sie die minimale Ausrichtung gemäß den Informationen zur Festplattentopologie. Dieser und der Opt-Wert verwenden die von der Festplatte bereitgestellten Layoutinformationen, um die Adressen der logischen Partitionstabellen an den tatsächlichen physischen Blöcken auf den Festplatten auszurichten. Der Mindestwert ist die Mindestausrichtung, die erforderlich ist, um die Partition ordnungsgemäß an physischen Blöcken auszurichten, wodurch Leistungseinbußen vermieden werden.
  • optimal Verwenden Sie die optimale Ausrichtung gemäß den Informationen zur Festplattentopologie. Dies entspricht einem Vielfachen der physischen Blockgröße, um eine optimale Leistung zu gewährleisten.

Ein weiterer nützlicher Tipp ist, dass Sie die Größe mit Prozentsätzen festlegen können, um sie auszurichten. Beginnen Sie bei 0% und enden Sie bei 100%. Zum Beispiel:

parted -a optimal /dev/sda mkpart primary 0% 4096MB


5
Sollte der Befehl nicht enden 0% 100%? Wo kommt 4096MBher?
Njahnke

4
Wert 4096MB ist hier nur ein Beispiel verwendet , um zu zeigen , Fähigkeit% und spezifische Größe Zahlen Misch
lik

3
Nur eine Anmerkung, ich musste die '0%'in Anführungszeichen setzen, damit meine Shell den Befehl richtig ausführte.
Adam Eberlin

@lik hast du einen Vorschlag für diesen Beitrag ? unix.stackexchange.com/questions/248939/…
AnkurTank

1
print
Trotzdem habe

9

Meine Lösung war die Verwendung von gdisk, mit der die Partitionsausrichtung standardmäßig automatisch auf 2048 Sektoren (1024 KB) durchgeführt werden kann, obwohl dies im Expertenmenü geändert werden kann.


7

Aus dem Arch Wiki :

Beim Erstellen einer Partition warnt parted möglicherweise vor einer falschen Partitionsausrichtung, gibt jedoch keinen Hinweis auf eine ordnungsgemäße Ausrichtung. Zum Beispiel:

(parted) mkpart primary fat16 0 32M
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel?                                                     

Die Warnung bedeutet, dass die Partition startnicht ausgerichtet ist.

Geben Sie ein Ignore, um trotzdem fortzufahren , drucken Sie die Partitionstabelle in Sektoren, um zu sehen, wo sie beginnt, und entfernen / erstellen Sie die Partition neu, wobei der Startsektor auf 2 aufgerundet wird, bis die Warnung aufhört. Auf einem Flash-Laufwerk mit 512B Sektoren wollte Parted beispielsweise, dass Partitionen auf Sektoren gestartet werden, die ein Vielfaches von 2048 waren, was einer Ausrichtung von 1 MB entspricht.

Darüber hinaus wird direkt über diesem Abschnitt angegeben, dass die genaueren IEC-Binäreinheiten von KiB, MiB, GiB usw. für Einheiten sowie die weniger genauen KB, MB, GB usw. zulässig sind.

Persönlich lautete mein genaues Kommando, das dies löste:

mkpart hd ext4 1024KiB 8470MB

Es hat sich nicht beschwert, ich denke, es wollte 1MB Alignments.


Nein, ich habe versucht 1048576KiB, keine Würfel.
Behrooz

5

Eine kleine Korrektur. Wie ich es verstehe, haben GPT-Festplatten keine Partitionstypen mehr, sie sind alle "primär". Der Befehl 'mkpart primary' erstellt keine primäre Partition wie auf MSDOS-Festplatten, sondern nur eine Partition namens primary. Sie können genauso gut den Befehl verwenden

(parted) mkpart Parted-FUN! 21476MB 4000787MB
(parted) print
Model: ATA ST4000DM000-1F21 (scsi)
Disk /dev/sdf: 4000787MB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start    End        Size       File system  Name         Flags
 1      1.05MB   17181MB    17180MB    ext4         raid-var
 2      17181MB  21476MB    4295MB                  raid-swap
 3      21476MB  4000786MB  3979310MB               Parted-FUN!

Dies kann zu Verwirrung führen, wenn Sie versuchen, logische Partitionen zu erstellen. Ich weiß, dass dies bei mir der Fall war.

(parted) mkpart extended 21476MB 4000787MB
(parted) mkpart logical 21476MB 1000787MB
Warning: You requested a partition from 21476MB to 1000787MB.
The closest location we can manage is 4000786MB to 4000786MB.
Is this still acceptable to you?
Yes/No? Yes
(parted) print
Model: ATA ST4000DM000-1F21 (scsi)
Disk /dev/sdf: 4000787MB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start      End        Size       File system  Name       Flags
 1      1.05MB     17181MB    17180MB    ext4         raid-var
 2      17181MB    21476MB    4295MB                  raid-swap
 3      21476MB    4000786MB  3979310MB               extended
 4      4000786MB  4000786MB  0.00MB                  logical

Sie können in einer Partition mit dem Namen "extended" keine Partition mit dem Namen "logical" erstellen.


danke, ich habe nur einiges an zeit verschwendet, dank dieses tools bad cli, und du hast mich dazu gebracht herauszufinden, was los ist.
Florian Heigl

5

Die akzeptierte Antwort von @lik zeigt, wie Sie die bevorzugte Ausrichtung angeben können. Parted verwendet diese Ausrichtung jedoch immer zum Überprüfen der resultierenden Partition, erstellt jedoch nicht immer Partitionen mit dieser Ausrichtung.

TL; DR: Wenn 1 MB die optimale Ausrichtung ist, funktioniert die Angabe von 0% für Festplatten mit 200 MB und mehr. Bei kleineren Festplatten oder größerer Ausrichtung kann die Angabe von 0G funktionieren, bei 0% nicht. Lesen Sie weiter unten, warum.

Parted versucht zwar, die Ausrichtungseinschränkungen beim Erstellen einer Partition zu erfüllen, weicht jedoch nicht zu stark von den von Ihnen angeforderten Werten ab. Was als "zu viel" gilt, hängt davon ab, wie Sie die Positionen angegeben haben.

Wenn Sie eine Start- (oder End-) Position für den Befehl mkpart angeben, wird intern ein Bereich akzeptabler Werte generiert. Dieser Bereich ist auf den von Ihnen angegebenen Wert zentriert und erstreckt sich auf beiden Seiten gleichmäßig um die Hälfte der von Ihnen verwendeten Einheitengröße (das ist, was ich aus dem Code gelesen habe , in den Kommentaren wird an beiden Enden eine vollständige Einheitengröße angegeben).

Wenn Sie beispielsweise "10M" angeben, wird versucht, eine beliebige Position zwischen 9,5M und 10,5M zu verwenden. Dasselbe gilt für Prozentangaben. Wenn Sie also 0% angeben, wird ein Wert zwischen 0% und 0,5% verwendet (dies ist natürlich nicht negativ).

Eine Ausnahme besteht darin, dass bei Verwendung von Zweierpotenzen (wie KiB für 1024 im Gegensatz zu K für 1000) parted davon ausgegangen wird, dass Sie versuchen, eine genaue Position anzugeben, und nur den von Ihnen angegebenen genauen Wert berücksichtigt.

Da eine optimale Ausrichtung in der Regel 1MiB-ausgerichtet zu sein scheint, haben die K- und M-Einheiten häufig nicht genügend Platz, um eine optimale Ausrichtung zu erreichen. Das Angeben von Positionen in G sollte ausreichend Platz bieten, aber% ist normalerweise auch in Ordnung.

Das ist der Grund, warum 0% normalerweise funktioniert, obwohl selbst das Grenzen hat.


Könnten Sie eine praktische TLDR Ihrer Antwort zusammenfassen: Was genau sollte anders als die akzeptierte Antwort getan werden?
Yurkennis

Guter Vorschlag, ich habe eine TL hinzugefügt; DR. In der Praxis denke ich, dass die 0% für alle außer wirklich kleinen Festplatten funktionieren, aber meine Antwort fügt einen kleinen Hintergrund hinzu, wie es genau funktioniert.
Matthijs Kooijman
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.