Neue Festplatte partitionieren und formatieren unter Ubuntu Server

Wird eine neue Festplatte an einen Ubuntu-Server angeschlossen, muss zunächst eine neue Partition angelegt und die Festplatte mit einem Dateisystem (meist Ext4) formatiert werden. Bei eingebauten und somit dauerhaft genutzten Festplatten ist außerdem ein Eintrag in der /etc/fstab sinnvoll, sodass diese bei zukünftigen Starts automatisch gemountet wird.

1. Ermitteln des Devices

Zunächst müssen wir das Device unserer neuen Festplatte ermitteln. Es gibt mehrere Wege hierzu, einer ist lsblk. Mit dem Schalter -e7 verstecken wir Loop Devices. Dies sind virtuelle Devices, die zum mounten von Images angelegt werden und kommen beispielsweise bei Snaps zum Einsatz. Je mehr Snap-Pakete man installiert, um so unübersichtlicher wird die Liste ohne den Filter.

$ sudo lsblk -e7
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0   477G  0 disk
├─sda1   8:1    0     1M  0 part
├─sda2   8:2    0     2G  0 part /boot
└─sda3   8:3    0   475G  0 part /
sdb      8:16   0 465.8G  0 disk
sr0     11:0    1  1024M  0 rom

Ein Indiz für die neue Platte ist, dass diese noch nirgendwo eingehangen ist. Je nach Konstellation kann auch die Größe ud der Buchstabe herangezogen werden. Linux benennt die Geräte dem Alphabet nach von sda an, sodass in diesem Beispiel sdb die neue Platte ist.

Falls Unsicherheit besteht, können auch mit lshw alle Laufwerke aufgelistet werden:

$ sudo lshw -class disk -short | grep HGST
/0/a1/0.0.0          /dev/sdb         disk           500GB HGST HTS545050A7

2. Partition erstellen

Nun können wir mindestens eine Partition erstellen. Selbstverständlich ist es auch möglich, abhängig vom Anwendungsfall mehrere Partition anzulegen. In diesem Beispiel werden wir es bei einer belassen. Wie so oft lässt Linux einem hier die Freie wahl, welches Werkzeug man benutzen möchte. Eine gute Wahl ist parted, es befindet sich in einer Standard Ubuntu-Server Installation zudem bereits an Board. Als Argument übergeben wir das soeben ermittelte Device:

$ sudo parted /dev/sdb

Mit dem Befehl print können wir uns die bereits existerende Partitionstabelle zusammen mit Infos über das Laufwerk anzeigen lassen:

(parted) print
Model: ATA HGST HTS545050A7 (scsi)
Disk /dev/sdb: 500GB
Sector size (logical/physical): 512B/4096B
Partition Table: msdos
Disk Flags:

Number  Start   End    Size   Type     File system  Flags
 1      1049kB  500GB  500GB  primary  ext4

Dies dient nochmals als Verifikation, die richtige Festplatte ausgewählt zu haben. Existieren bereits Partitionen die wir löschen möchten, können wir dies mit rm <number> erledigen. Wobei <number> die Partitionsnummer am Anfang der Tabelle ist. Rufen wir anschließend erneut print auf, ist die Partitionstabelle leer:

(parted) rm 1
(parted) print
Model: ATA HGST HTS545050A7 (scsi)
Disk /dev/sdb: 500GB
Sector size (logical/physical): 512B/4096B
Partition Table: msdos
Disk Flags:

Number  Start  End  Size  Type  File system  Flag

Auf der leeren Platte legen wir eine neue Partitionstabelle an:

(parted) mklabel gpt
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? Yes

Und nun eine Partition:

(parted) mkpart primary ext4 1MB 500GB

Der Befehl schlüsselt sich wie folgt auf: Es soll eine Partition mit der Bezeichnung primary und dem Dateisystem ext4 werden. Andere Dateisysteme wie der Vorgänger ext3 sind natürlich ebenfalls möglich. Die Startgröße liegt bei 1MB, der letzte Parameter gibt die Gesamtgröße an. Hier sollen also die gesamten 500GB des Laufwerkes in einer Partition zur Verfügung gestellt werden.

Nun sind wir mit der Partitionierung fertig und können parted mit quit und Enter verlassen.

3. Dateisystem anlegen

Dies geschieht mit dem Befehl mkfs.* wobei * für das gewünschte Dateisystem (hier ext4) steht:

$ sudo mkfs.ext4 /dev/sdb1

Hier bestätigen wir mit y und Enter.

Hinweis: Nach dem Anlegen eines Ext4-Dateisystemes müssten die Inode-Tabellen erzeugt werden. Dies läuft standardmäßig im Hintergrund und kann – je nach Kapazität – für einige Zeit eine Auslastung verursachen.
Weitere Informationen und wie du dies umgehen kannst, findest du in diesem Beitrag.

4. Partition einhängen

Damit wir die Partition auch nutzen können, muss sie zunächst eingehangen werden. Dies ist über das mount Werkzeug möglich:

sudo mkdir /static-data
sudo mount /dev/sdb1 /static-data/
ls -lh /static-data/
total 16K
drwx------ 2 root root 16K Feb 15 21:13 lost+found

Allerdings ist das Mounten dadurch nicht persistent. Damit die Partition automatisch beim Starten gemounted wird, legen wir noch einen Eintrag in der Datei /etc/fstab an. Als Device kann man /dev/sdb1 angeben. Allerdings ist dieser Device-Pfad nicht fix. Er kann sich beispielsweise ändern, wenn das Laufwerk getrennt und stattdessen ein anderes angeschlossen wird. Dann ist dessen erste Partition in /dev/sdb1 eingehängt und die Patte, die wir dort erwarten, in /dev/sdc1.

Daher ist die Verwendung einer der Id-Pfade zu empfehlen. Ich bevorzuge /dev/disk/by-id da wir hier einen sprechenden Pfad erhalten, der Hersteller und Modell der Festplatte beinhaltet. So fällt die Zuordnung leichter als bei einer zufällig generierten Id wie unter /dev/disk/by-uuid. In by-id können wir nach der Partition sdb1 filtern:

$ ls -lh /dev/disk/by-id/ | grep sdb1
lrwxrwxrwx 1 root root 10 Feb 15 21:13 scsi-35000cca863e15f2e-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 Feb 15 21:13 scsi-SATA_HGST_HTS545050A7_RBG55A1N2BDU4P-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 Feb 15 21:13 wwn-0x5000cca863e15f2e-part1 -> ../../sdb1

Hier stehen uns drei Möglichkeiten zur Auswahl, ich würde den sprechendsten scsi-SATA_HGST_HTS545050A7_RBG55A1N2BDU4P-part1 verwenden. Unser Laufwerkspfad lautet daher /dev/disk/by-id/scsi-SATA_HGST_HTS545050A7_RBG55A1N2BDU4P-part1.

In der Datei /etc/fstab fügen wir folgende Zeile ein:

/dev/disk/by-id/scsi-SATA_HGST_HTS545050A7_RBG55A1N2BDU4P-part1 /static-data ext4 defaults 0 0

Der erste Pfad gibt das Gerät an, es folgt der Einhängepunkt /static-data. Über ihn kann auf die Partition zugegriffen werden. Das Dateisystem lautet ext4. Anschließend übergeben wir Standardparameter, die in den meisten Fällen ausreichen. Darunter zählt z.B. das wir Schreibrechte erhalten.

4.1 /etc/fstab testen

Da die Datei beim Systemstart geladen wird, möchte ich sie gerne vorher testen. Falls die Partition bereits händisch via mount gemountet wurde, müssen wir sie zuerst wieder entmounten:

$ sudo umount /static-data

Nach dem Speichern von /etc/fstab können wir die Datei mit mount -a neu laden und damit auch gleich unsere neue Partition einhängen. Der schaltet -a mountet alle Dateisysteme aus der fstab Datei, während -v den verbose Mode aktiviert. Dieser liefert detailliertere Informationen, was das Tool macht:

$ sudo mount -av
/                        : ignored
/boot                    : already mounted
none                     : ignored
/static-data             : successfully mounted

Die vom Start bereits eingehängten Dateisysteme wurden ignoriert, unsere neue Partition /static-data konnte erfolgreich eingehängt werden.

Leave a Reply