Wie kann ich die Erstellung einer einzelnen Partition per Skript ausführen, die das gesamte Gerät verwendet?

9

Ich verwende dies speziell zum Partitionieren und Mounten von EBS-Volumes auf Amazon EC2-Instanzen, aber dies sollte im Allgemeinen für die Initialisierung eines neuen Laufwerks gelten.

Wie die Frage sagt, möchte ich die Erstellung einer einzelnen primären Partition per Skript ausführen, die den gesamten verfügbaren Speicherplatz auf dem angegebenen Gerät nutzt. Ich werde nicht im Voraus wissen, wie groß das Gerät ist und es könnte sehr groß sein (dh mehrere TB).

Bei der Untersuchung scheint dies partedder beste Befehl für die Skripterstellung zu sein. Ich denke, etwas in der Art von parted /dev/sdf mkpart primary 0 ENDist das, was ich will, aber es fällt mir schwer, einen eleganten Weg zu finden, um zu bestimmen, was END sein soll. Kennt jemand einen einfachen Weg, dies zu tun?

Mike Deck
quelle

Antworten:

11

Sie können dies folgendermaßen tun:

parted /dev/sdf --script -- mkpart primary 0 -1
Gilles Quenot
quelle
5

Ich bin auf Probleme gestoßen, als ich versucht habe, die andere Antwort zu verwenden. Was für mich funktioniert hat, war, stattdessen den prozentualen Ansatz wie folgt zu verwenden:

$ parted /dev/sdf --script -- mkpart primary 0% 100%

Es gibt ein Problem mit partedund die Art und Weise, wie es mit der Ausrichtung der Partitionen umgeht. Diese 2 Artikel diskutieren das Problem ein wenig:

Die in diesen Artikeln beschriebene Mathematik hat in meinen Szenarien einfach nicht funktioniert. In einem der Kommentare zum zweiten vergraben, schlug jemand vor, die Prozentsätze zu verwenden, und das hat funktioniert.

Übrigens müssen Sie in der Regel auch die Festplatte beschriften. Um dies über die CLI zu tun mit parted:

$ parted /dev/sde --script -- mklabel msdos

-oder-

$ parted /dev/sde --script -- mklabel gpt

Abhängig von Ihrer Festplatte.

slm
quelle
gdiskrichtet sich richtig aus. Meiner Meinung nach partedist ein Chaos. Es macht zu viel - und die Dinge, die es tut, sind nur lose miteinander verbunden. Es ist seltsam, wie Dateisysteme und Partitionstabellen zusammen erstellt werden - die Speicherorte für die Daten, die geschrieben werden, sind nicht mit denen in derselben Nachbarschaft vergleichbar. Ich begann erst zu verstehen, wie Festplatten funktionieren, als mir klar wurde, dass die Partitionstabelle eine kleine Karte ist, die sich an der Spitze befindet, und dem Betriebssystem mitteilt, wo es nach einem Dateisystem suchen könnte, wenn es möchte. Als das klickte, verstand ich Superblocks und Megaman und alles. Nun, ich denke sowieso gerne.
Mikesserv
Vielen Dank, die Website der Tools in diesem Bereich war für mich immer ein Chaos. Ich mische ständig sfdisk, fdisk, cfdisk, parted usw. Ich werde fdisk ausprobieren und sehen, ob das einfacher ist. Hauptsächlich auf der Suche nach einer einfach zu bedienenden CLI-Option für die Aufnahme in Skripte.
slm
Grundsätzlich [gf]diskdiskriminieren sie nicht ihre stdin - es ist ihnen egal, ob es von einem termInal ist. Jede Befehlssequenz, die Sie interaktiv eingeben würden, um das zu erhalten, was Sie möchten, kann direkt in ein printfSkript übersetzt werden. Alle Zeilenumbrüche in meiner Antwort sind nur die (or press enter for default)Optionen. Es ist ziemlich einfach. Wenn ich mit ihnen herumspiele, gehe ich einfach zu /tmpund verwende fallocate -l1g imgdann einfach meine neue /tmp/imgDatei als meine Festplatte - es ist ihnen egal. Sie wollen nur eine Partitionstabelle schreiben. Wenn Sie dasselbe tun, schauen Sie sich an, was strings -1 imggelegentlich passiert .
Mikeserv
Aber ich habe vorher gelogen - Megaman bleibt mir ein Rätsel. Vielleicht wird er es immer tun.
Mikeserv
1
mit parted /dev/sdf --script -- mkpart primary 0 -1bekam ich eine Warnung für nicht auf beste Leistung ausgerichtet. Es ging gut mit Prozentsätzen
Nachoparker
2

Du kannst tun...

printf 'n\n\n\n\n\nw\n' | fdisk /dev/disk

... für einen msdos-Typ. Praktisch das gleiche funktioniert für gpt ...

printf 'n\n\n\n\n\nw\ny\n' | gdisk /dev/disk

Und Sie können Ihre Festplatte während der Erstellungszeit des Dateisystems beschriften.

mikeserv
quelle