bash - Testen, ob die Festplatte nicht partitioniert ist

bash - Testen, ob die Festplatte nicht partitioniert ist

Ich arbeite derzeit an einem selbstgebauten Netzwerkspeicher, der freien Speicherplatz mithilfe von mhddfs aggregiert.

Jetzt möchte ich beispielsweise bei einem Hotswap-Schacht beim Einsetzen einer brandneuen, unpartitionierten Festplatte diese automatisch mit einem Bash-Skript partitionieren und die neue MHDDF-Partition mounten.

Die gleiche Situation tritt ein, wenn der Server ausgeschaltet, eine neue Festplatte eingelegt und der Server wieder eingeschaltet wird.

Die Frage ist also: Wie kann ich mit einem Bash-Skript eine nicht partitionierte Festplatte erkennen?

Die Frage beinhaltet auch, dass es zu keinen Fehlerkennungen kommen darf. Wenn beispielsweise eine verschlüsselte Festplatte eingelegt wird, darf sie nicht automatisch neu partitioniert und formatiert werden. Dieser Punkt ist das Hauptinteresse der Frage.

Antwort1

Eine Möglichkeit zum Durchführen der Überprüfung und Partitionierung ist der partedBefehl. So erhalten Sie Partitionsinformationen zu allen Festplattenblockgeräten im System in einem für Menschen lesbaren Format:

/sbin/parted -l

oder verwenden Sie im „maschinenlesbaren“ Format:

/sbin/parted -lm

Sie müssen die Ausgabe analysieren, um zu bestimmen, ob die Festplatte über eine gültige Partitionstabelle verfügt.

Verwenden Sie dann etwas wie:

/sbin/parted <device> --script mkpart primary 1 -- -1

um eine einzelne Partition zu erstellen, die die gesamte Festplatte nutzt. Die Syntax des Unterbefehls mkpart stammt aus dem Speicher und ich habe kein System mit einer verfügbaren Festplatte, um zu überprüfen, ob sie korrekt ist

Antwort2

Hier ist eine Methode, die ich für Backups verwende.

if [ $(/sbin/sfdisk -d ${DEV} 2>&1) == "" ]; then echo "Device not partitioned"; fi

wobei ${DEV} das Gerät ist, das Sie abfragen. (Am besten über ein Udev-Skript ausführen.)

Antwort3

Ich gehe davon aus, dass Sie dies auf einem Linux-Kernel tun.

Verwenden Sie fdiskoder sfdiskaus der util-linuxVerpackung:

fdisk -l /path/to/disk

oder:

sfdisk -l /path/to/disk

um die aktuelle Partitionstabelle aufzulisten.

Linux erkennt verfügbare Partitionen, daher /dev/diskreicht es für Ihre Anforderungen möglicherweise aus, in den Verzeichnissen zu suchen.

Antwort4

Mir gefiel die Antwort sehr gut, die gepostet wurde aufPaketüberflusswas darauf hindeutet:

parted --script

Wie:

parted --script /dev/sdb print

verwandte Informationen