Hinweis: Alle vorbereitenden Maßnahmen werden im Terminal der Virtualisierungssoftware Proxmox (Version 5.4.78-2-pve) als root vorgenommen. Entweder findet der Zugriff per Terminalsoftware putty remote statt oder von der Proxmox Weboberfläche, wenn Rechenzentrum (Datacenter) ausgewählt ist über die Konsole.
Die Problemstellung ist klar. Virtuelle Umgebungen benötigen enormen Speicherplatz in zweierlei Hinsicht, Hauptspeicherplatz und „Festplattenspeicherplatz“. Wobei der Festplattenspeicherplatz bei SSD nicht mehr so „fest“ ist wie bei den langsameren aber meist günstigeren HDD. Und die heute immer leistungsfähiger werdenden CPUs bieten bei richtigem Einsatz sogar ein Loadbalancing, um die Last gleichmäßiger auf die virtuellen Maschinen (VMs) zu verteilen.
Da die Anwendungsgebiete auch im Heimbereich immer weiter steigen, steigen die Ansprüche an solche Systeme ebenso. Aus diesem Grund wird hier ein Konzept der Erweiterung von Plattenkapazität vorgestellt, das noch etwas „Luft nach oben“ zuläßt.
In dieses System sind drei „Festplatten“ eingebaut:
SSD 500GB 2.3/3.4G 970 EVO PLUS M.2 SAM von Samsung mit M.2 PCI
ST2000DM001-1ER1 2 TB
ST4000NE0025-2EW 4 TB
Die SSD soll auf einer 100 GB Partition die Virtualisierung Proxmox und die ISO-Images der Betriebssysteme der Virtuellen Maschinen (VMs) aufnehmen und auf einer weiteren Partition für die VMs die installierten Betriebssysteme (vorwiegend Debian 10.6 oder höher) verschiedener Größen. Die VMs werden als Nummern ab VM 100 kontinuierlich hochgezählt.
Die 2TB HDD soll als /home für die VM 100 als File-Server eingebunden werden und die 4TB HDD soll verschiedene /home Verzeichnisse aufnehmen, die als Partitionen angelegt werden sollen.
Um das Erkennen und Bearbeiten der Hardware und die Einbindungen leichter zu gestalten, sollten die Programme cfdisk und lshw installiert sein. Sollte dies nicht der Fall sein, hilft
apt install cfdisk
und
apt install lshw
aus dieser Misere.
Mit lsblk läßt sich zeigen welche HDD welche Bezeichnung bekommen hat. Das ist insofern wichtig, weil cfdisk immer nur die erste HDD anzeigt und die weiteren beim Aufruf des Programms mit angegeben werden müssen.
Achtung: Die SSD werden anders verwaltet, weil ein anderer Controller dafür verantwortlich ist. Bei mir heißen HDD und Partitionen
root@pve:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1 259:0 0 465.8G 0 disk
├─nvme0n1p1 259:1 0 1007K 0 part
├─nvme0n1p2 259:2 0 512M 0 part /boot/efi
└─nvme0n1p3 259:3 0 465.3G 0 part
also sind die folgenden HDD, die an den SATA Ports angeschlossen sind, mit sda und sdb bezeichnet
root@pve:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1.8T 0 disk
└─sda1 8:1 0 1.8T 0 part
sdb 8:16 0 3.7T 0 disk
├─sdb1 8:17 0 300G 0 part
├─sdb2 8:18 0 1T 0 part
├─sdb3 8:19 0 50G 0 part
└─sdb4 8:20 0 100G 0 part
sda geht komplett zur vm-100 weshalb es dort nur die Partition sda1 gibt. Die 4TB HDD zeigt hier als sdb die Partitionen für die verschieden großen /home Verzeichnisse der erste vier VMs.
Angelegt werden sie über den Aufruf mit
cfdisk /dev/sdb
in putty als Terminal im pve oder auf der Proxmox Web-Oberfläche durch auswählen des Knotens pve und Aufruf der Konsole als root. Und nicht die Pfadangabe für die HDD vergessen. Sonst geht’s nicht.
Dann sieht das so aus, wenn es erledigt ist:
Oder so, wenn es bereits Partitionen gibt, sollte eine bereits in Verwendung gewesene HDD eingesetzt werden.
Mit New wird der noch freie Speicherplatz angeboten, wenn die Auswahl auf „Free space“ steht. Wichtig sind noch die Größenbezeichnungen der Partitionen, die ordnungsgemäß anzugeben sind. Die sind allerdings in der Fußzeile als Bespiel aufgelistet.
Nach der Auswahl von Write kommt die Nachfrage, ob die Partition angelegt werden soll, die mit geschriebenem „yes“ zu beantworten ist. Da es eine Vorbereitung auf ein Linux Filesystem ist, wird eine gpt Tabelle angelegt. Mit cfdisk wird nur die leere Partition angelegt, die mit ihrer Bezeichnung jeweils plus 1 hochgezählt und aufgelistet wird. Mit der Auswahl und Betätigen von Quit das Programm verlassen.
Um auch ein Filesystem einzurichten, ist dies mit dem Befehl
mkfs.ext4 /dev/sdbX
möglich. Damit wählt man das Filesystem aus und formatiert die Partition. Wobei X die jeweilige Partition aus der Liste in cfdisk ist. An dieser Stelle besteht auch die Möglichkeit die Partition mit ZFS oder btrfs zu formatieren.
Das Einbinden der Partition wie bei mount mit den Bezeichnungen /dev/sdbX wird nicht empfohlen, weil beim Verschieben der VM bzw. bei Neustart des pve oder Einbinden weiterer Komponenten die Bezeichnungen verändert werden könnten, weshalb zwingend empfohlen wird, das Einbinden „by-id“ vorzunehmen.
Dafür wechselt man entweder mit dem Kommando
cd /dev/disk/by-id
direkt in das Verzeichnis und schaut sich an wie die gewünschte Partition benannt ist –dabei ist es egal, welchen Bezeichner man für die gewünschte Partition nimmt, entweder den mit dem Präfix ata- oder wwn- — oder man liest die entstandenen Partitionen aus und selektiert die gewünschten Bezeichnungen aus der Auflistung. Dazu ist das Kommando
lshw –class disk –class storage
notwendig. Aufgelistet wird dann
*-disk:1
description: ATA Disk
product: ST4000NE0025-2EW
physical id: 1
bus info: scsi@1:0.0.0
logical name: /dev/sdb
version: EN02
serial: ZC19AZ4L
size: 3726GiB (4TB)
capabilities: gpt-1.00 partitioned partitioned:gpt
configuration: ansiversion=5 guid=ce107984-63af-48c6-b0d4-25271a2c9c35 logicalsectorsize=512 sectorsize=4096
Mit der eindeutigen Seriennummer kann nun nach der gewünschten Bezeichnung geforscht werden.
ls –al /dev/disk/by-id | grep ZC19AZ4L
als Antwort gibt’s dann
9 Dec 10 14:24 ata-ST4000NE0025-2EW107_ZC19AZ4L -> ../../sdb
10 Dec 10 14:24 ata-ST4000NE0025-2EW107_ZC19AZ4L-part1 -> ../../sdb1
10 Dec 10 14:24 ata-ST4000NE0025-2EW107_ZC19AZ4L-part2 -> ../../sdb2
10 Dec 10 14:24 ata-ST4000NE0025-2EW107_ZC19AZ4L-part3 -> ../../sdb3
10 Dec 10 14:24 ata-ST4000NE0025-2EW107_ZC19AZ4L-part4 -> ../../sdb4
Zugewiesen wird die gewünschte Partition sdb2 dann zur VM 102 und die nächste freie Schnittstelle scsi3 über das Kommando
qm set 102 –scsi3 /dev/disk/by-id/ata-ST4000NE0025-2EW107_ZC19AZ4L-part2
das Kommando liefert dann die Quittung zurück
update VM 102: -scsi3 /dev/disk/by-id/ata-ST4000NE0025-2EW107_ZC19AZ4L-part2
Die Proxmox Weboberfläche weist dann sofort die Einbindung aus. Damit ist die Einbindung aber noch nicht abgeschlossen, sondern die HDD ist erst der VM bekanntgemacht worden.
Nun muß die Partition sdb2 noch als 1TB HDD in die VM 102 eingehängt werden. Dazu mit putty oder der Konsole in die neu erstellte VM 102 einloggen.
Wer es etwas bequemer haben kann (will), weil Debian oder Ubuntu Desktop es ermöglichen, kann nun die Remotezugriffsmöglichkeit für root herstellen, indem er die Konfiguration des sshd verändert, um mit putty als root direkt auf die VM 102 zugreifen zu können. Im eigenen Netzwerk hinter einer gut konfigurierten Firewall ist das unkritisch.
nano /etc/ssh/sshd_config
Hier nach der Zeile
#PermitRootLogin prohibit-password
suchen, das Doppelkreuz entfernen und die Zeile in
PermitRootLogin yes
ändern. Mit Strg+o speichern und nano mit Strg+x verlassen. Anschließend den sshd neu starten
systemctl restart sshd
und die Anmeldung als root über das Terminalprogramm putty ist möglich.
Jetzt noch einen Mountpoint schaffen, in den sdb2 eingehängt werden kann. Im Terminal das Kommando aufrufen
mkdir /home/data
und mit
mount -t ext4 /dev/sdb2 /home/data/
die Partition als HDD einhängen.
Sicherheitshalber das mount in der fstab verstetigen, damit nach einem reboot die HDD auch wieder eingehängt wird. Dies geschieht idealerweise über die UUID die sich nicht ändert und damit die HDD immer im System fest verankert. Dafür die UUID auslesen mit
blkid
Die Rückmeldung sieht dann evtl. so aus
root@itc-dev:/home/data# blkid
/dev/sda1: LABEL=“System“ UUID=“18666665-a333-4172-8f55-4b261b6c6623″ TYPE=“ext4″ PARTUUID=“8968d90b-01″
/dev/sda5: LABEL=“var“ UUID=“00b8339b-1a4e-4cc5-a849-c62582a9f49a“ TYPE=“ext4″ PARTUUID=“8968d90b-05″
/dev/sda6: UUID=“f666df3b-35cd-405a-8b47-d80d6ce4ffa0″ TYPE=“swap“ PARTUUID=“8968d90b-06″
/dev/sda7: LABEL=“tmp“ UUID=“e644d383-f280-444b-a971-502f862fcf46″ TYPE=“ext4″ PARTUUID=“8968d90b-07″
/dev/sda8: LABEL=“home“ UUID=“01bdf1aa-e5cf-41d2-91ad-adaff8be62d4″ TYPE=“ext4″ PARTUUID=“8968d90b-08″
/dev/sdb: UUID=“c8532b5f-2736-4362-96ed-2a18b0494a52″ TYPE=“ext4″
Nun die UUID der sdb mit der Maus markieren und mit Strg+c die Kennung kopieren.
nano /etc/fstab
aufrufen und in die letzte leere Zeile mit der Maus mit Rechtsklick die UUID hineinkopieren. Nun noch die Anführungszeichen löschen, so daß als vorletzte Zeile in der /etc/fstab steht
UUID=c8532b5f-2736-4362-96ed-2a18b0494a52 ext4 default 0 2
Es sollte in der /etc/fstab nach der letzten Eintragung IMMER eine Leerzeile folgen. Nun mit Strg+o die Eintragung abspeichern, mit Strg+x nano verlassen und mit
mount –a
die /etc/fstab neu einlesen. Wer nun mit
cd /home/data
in den Moutpoint wechselt und mit
df –h
den verfügbaren Platz prüft, der wird das möglicherweise so ähnlich vorfinden:
root@itc-dev:/home/data# df -h
Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf
udev 4,9G 0 4,9G 0% /dev
tmpfs 1000M 9,1M 991M 1% /run
/dev/sda1 73G 3,3G 66G 5% /
tmpfs 4,9G 0 4,9G 0% /dev/shm
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
tmpfs 4,9G 0 4,9G 0% /sys/fs/cgroup
/dev/sda7 9,1G 37M 8,5G 1% /tmp
/dev/sda8 427M 3,4M 397M 1% /home
/dev/sda5 6,4G 306M 5,8G 5% /var
tmpfs 1000M 8,0K 1000M 1% /run/user/0
tmpfs 1000M 8,0K 1000M 1% /run/user/1000
/dev/sdb 1007G 77M 956G 1% /home/data
tmpfs 1000M 4,0K 1000M 1% /run/user/115
Sollte die Installation eine Desktop Version sein, kann von der Proxmox Weboberfläche über die Konsole die graphische Anmeldung aufgerufen und über den Dateiexplorer in das Verzeichnis /home/data gewechselt werden. Rechte Maustaste und Eigenschaften zeigt auch die Größe des Verzeichnisses.
Fertig.