Hinzufügen eines Datenträgers zu einem virtuellen Linux-Computer

Gilt für: ✔️ Linux-VMs ✔️ Flexible Skalierungsgruppen

In diesem Artikel wird gezeigt, wie Sie einen persistenten Datenträger an Ihren virtuellen Computer anfügen, um Ihre Daten beizubehalten, auch wenn der virtuelle Computer aufgrund einer Wartung oder Größenänderung neu bereitgestellt wird.

Anfügen eines neuen Datenträgers an einen virtuellen Computer

Wenn Sie einen neuen, leeren Datenträger für Ihren virtuellen Computer hinzufügen möchten, verwenden Sie den Befehl az vm disk attach mit dem --new-Parameter. Wenn Ihr virtueller Computer in einer Verfügbarkeitszone ist, wird der Datenträger automatisch in derselben Zone wie der virtuelle Computer erstellt. Weitere Informationen finden Sie in der Overview of Availability Zones (Übersicht über Verfügbarkeitszonen). Das folgende Beispiel erstellt einen Datenträger mit dem Namen myDataDisk mit einer Größe von 50GB:

az vm disk attach \
   -g myResourceGroup \
   --vm-name myVM \
   --name myDataDisk \
   --new \
   --size-gb 50

Geringere Latenz

In ausgewählten Regionen wurde die Wartezeit beim Anfügen von Datenträgern reduziert, sodass Sie eine Verbesserung von bis zu 15 % feststellen können. Dies ist nützlich, wenn Sie geplante/ungeplante Failover zwischen virtuellen Computern ausführen, Ihre Workload skalieren oder eine zustandsbehaftete Workload mit umfassender Skalierung wie Azure Kubernetes Service ausführen. Diese Verbesserung ist jedoch auf den expliziten Befehl zum Anfügen von Datenträgern beschränkt: az vm disk attach. Sie stellen keine Leistungsverbesserung fest, wenn Sie einen Befehl aufrufen, der möglicherweise implizit einen Anfügevorgang ausführt, z. B. az vm update. Sie müssen keine anderen Aktionen ausführen, als den expliziten Anfügebefehl aufzurufen, um von dieser Verbesserung zu profitieren.

Geringere Wartezeit ist derzeit in jeder öffentlichen Region verfügbar, außer in den folgenden:

  • Kanada, Mitte
  • USA (Mitte)
  • East US
  • USA (Ost) 2
  • USA Süd Mitte
  • USA, Westen 2
  • Deutschland, Norden
  • Jio Indien, Westen
  • Nordeuropa
  • Europa, Westen

Anfügen eines vorhandenen Datenträgers

Um einen vorhandenen Datenträger anzufügen, suchen Sie die Datenträger-ID, und übergeben Sie die ID an den Befehl az vm disk attach. Das folgende Beispiel fragt einen Datenträger mit dem Namen MyDataDisk in MyResourceGroup ab, und fügt ihn dann dem virtuellen Computer mit dem Namen myVM hinzu:

diskId=$(az disk show -g myResourceGroup -n myDataDisk --query 'id' -o tsv)

az vm disk attach -g myResourceGroup --vm-name myVM --name $diskId

Formatieren und Einbinden des Datenträgers

Sie benötigen SSH für Ihren virtuellen Computer, um den neuen Datenträger zu partitionieren, zu formatieren und bereitzustellen, damit er von Ihrem virtuellen Linux-Computer verwendet werden kann. Weitere Informationen finden Sie unter Verwenden von SSH mit Linux auf Azure. Im folgenden Beispiel wird eine Verbindung mit einem virtuellen Computer mit der öffentlichen IP-Adresse 10.123.123.25 und dem Benutzernamen azureuser hergestellt:

ssh azureuser@10.123.123.25

Suchen des Datenträgers

Nachdem Sie eine Verbindung mit Ihrer VM hergestellt haben, müssen Sie den Datenträger suchen. In diesem Beispiel wird lsblk zum Auflisten der Datenträger verwendet.

lsblk -o NAME,HCTL,SIZE,MOUNTPOINT | grep -i "sd"

Die Ausgabe sieht in etwa wie das folgende Beispiel aus:

sda     0:0:0:0      30G
├─sda1             29.9G /
├─sda14               4M
└─sda15             106M /boot/efi
sdb     1:0:1:0      14G
└─sdb1               14G /mnt
sdc     3:0:0:0      50G

Hier ist sdc der gewünschte Datenträger, da seine Größe 50G beträgt. Wenn Sie mehrere Datenträger hinzufügen und nicht nur basierend auf der Größe feststellen können, um welchen Datenträger es sich handelt, können Sie im Portal zur VM-Seite navigieren, dort auf Datenträger klicken und unter Datenträger die LUN für den Datenträgerüberprüfen. Vergleichen Sie die LUN aus dem Portal mit der letzten Nummer des HTCL-Teils der Ausgabe, bei dem es sich um die LUN handelt. Eine weitere Möglichkeit besteht darin, den Inhalt des Verzeichnisses /dev/disk/azure/scsi1 aufzulisten:

ls -l /dev/disk/azure/scsi1

Die Ausgabe sollte ungefähr wie das folgende Beispiel aussehen:

lrwxrwxrwx 1 root root 12 Mar 28 19:41 lun0 -> ../../../sdc

Formatieren des Datenträgers

Formatieren Sie den Datenträger mit parted. Wenn der Datenträger eine Größe von 2 TiB (Tebibyte) oder mehr aufweist, müssen Sie die GPT-Partitionierung verwenden. Bei einer Größe von weniger als 2 TiB können Sie entweder die MBR- oder die GPT-Partitionierung verwenden.

Hinweis

Es wird empfohlen, die neueste Version von parted zu verwenden, die für Ihre Distribution verfügbar ist. Wenn der Datenträger 2 TiB (Tebibytes) oder größer ist, müssen Sie die GPT-Partitionierung verwenden. Wenn der Datenträger kleiner als 2 TiB ist, können Sie entweder die MBR- oder die GPT-Partitionierung verwenden.

Im folgenden Beispiel wird parted für /dev/sdc verwendet. Dort befindet sich auf den meisten virtuellen Computern normalerweise der erste Datenträger. Ersetzen Sie sdc durch die richtige Option für Ihren Datenträger. Außerdem wird für die Formatierung das XFS-Dateisystem verwendet.

sudo parted /dev/sdc --script mklabel gpt mkpart xfspart xfs 0% 100%
sudo partprobe /dev/sdc
sudo mkfs.xfs /dev/sdc1

Verwenden Sie das Hilfsprogramm partprobe, um sicherzustellen, dass der Kernel die neue Partition und das neue Dateisystem erkennt. Wenn partprobe nicht verwendet wird, können die Befehle „blkid“ oder „lslbk“ die UUID für das neue Dateisystem nicht sofort zurückgeben.

Einbinden des Datenträgers

Erstellen Sie jetzt mit mkdir ein Verzeichnis zum Bereitstellen des neuen Dateisystems. Im folgenden Beispiel wird ein Verzeichnis unter /datadrive erstellt:

sudo mkdir /datadrive

Verwenden Sie mount, um anschließend das Dateisystem bereitzustellen. Im folgenden Beispiel wird die /dev/sdc1-Partition am Einbindungspunkt /datadrive eingebunden:

sudo mount /dev/sdc1 /datadrive

Beibehalten der Bereitstellung

Um sicherzustellen, dass das Laufwerk nach einem Neustart automatisch wieder eingebunden wird, muss es der Datei /etc/fstab hinzugefügt werden. Außerdem wird dringend empfohlen, den UUID (Universally Unique Identifier, universell eindeutiger Bezeichner) in /etc/fstab zu verwenden, um auf das Laufwerk und nicht auf den Gerätenamen zu verweisen (z. B. /dev/sdc1). Wenn das Betriebssystem während des Starts einen Datenträgerfehler erkennt, wird durch den UUID verhindert, dass an einem bestimmten Ort der falsche Datenträger bereitgestellt wird. Die verbleibenden Datenträger werden dann diesen Geräte-IDs zugewiesen. Verwenden Sie das Hilfsprogramm blkid, um den UUID des neuen Laufwerks herauszufinden:

sudo blkid

Die Ausgabe sieht etwa folgendermaßen aus:

/dev/sda1: LABEL="cloudimg-rootfs" UUID="11111111-1b1b-1c1c-1d1d-1e1e1e1e1e1e" TYPE="ext4" PARTUUID="1a1b1c1d-11aa-1234-1a1a1a1a1a1a"
/dev/sda15: LABEL="UEFI" UUID="BCD7-96A6" TYPE="vfat" PARTUUID="1e1g1cg1h-11aa-1234-1u1u1a1a1u1u"
/dev/sdb1: UUID="22222222-2b2b-2c2c-2d2d-2e2e2e2e2e2e" TYPE="ext4" TYPE="ext4" PARTUUID="1a2b3c4d-01"
/dev/sda14: PARTUUID="2e2g2cg2h-11aa-1234-1u1u1a1a1u1u"
/dev/sdc1: UUID="33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e" TYPE="xfs" PARTLABEL="xfspart" PARTUUID="c1c2c3c4-1234-cdef-asdf3456ghjk"

Hinweis

Eine fehlerhafte Bearbeitung der Datei /etc/fstab könnte zu einem nicht startfähigen System führen. Wenn Sie sich nicht sicher sind, helfen Ihnen die Informationen zur richtigen Bearbeitung dieser Datei in der Dokumentation weiter. Außerdem wird empfohlen, ein Backup der Datei /etc/fstab zu erstellen, bevor Sie sie bearbeiten.

Öffnen Sie als Nächstes die Datei /etc/fstab in einem Text-Editor. Fügen Sie am Ende der Datei eine Zeile hinzu, und verwenden Sie dabei den UUID-Wert für das /dev/sdc1-Gerät, das in den vorherigen Schritten erstellt wurde, und den Bereitstellungspunkt von /datadrive. Im Beispiel in diesem Artikel würde die neue Zeile wie folgt aussehen:

UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e   /datadrive   xfs   defaults,nofail   1   2

Wenn Sie mit der Bearbeitung der Datei fertig sind, speichern Sie die Datei, und schließen Sie den Editor.

Alternativ können Sie den folgenden Befehl ausführen, um den Datenträger der Datei /etc/fstab hinzuzufügen:

echo "UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e   /datadrive   xfs   defaults,nofail   1   2" >> /etc/fstab

Hinweis

Wenn Sie später einen Datenträger entfernen, ohne „fstab“ zu bearbeiten, kann der Start des virtuellen Computers fehlschlagen. Die meisten Verteilungen stellen entweder die „fstab“-Optionen nofail und/oder nobootwait zur Verfügung. Mit diesen Optionen kann ein System auch dann starten, wenn der Datenträger beim Start nicht bereitgestellt wird. Weitere Informationen zu diesen Parametern finden Sie in der Dokumentation zu Ihrer Distribution.

Die nofail-Option stellt sicher, dass der virtuelle Computer gestartet wird, selbst wenn das Dateisystem beschädigt oder der Datenträger zur Startzeit nicht vorhanden ist. Ohne diese Option können Verhalten auftreten, die unter Cannot SSH to Linux VM due to FSTAB errors (Aufgrund von FSTAB-Fehler keine SSH-Verbindung mit Linux-VM möglich) beschrieben sind.

Die serielle Konsole für Azure-VMs kann für den Konsolenzugriff auf Ihren virtuellen Computer verwendet werden, wenn die Änderung von „fstab“ zu einem Systemstartfehler geführt hat. Weitere Informationen finden Sie in der Dokumentation Serielle Konsole für virtuelle Computer für Linux.

TRIM/UNMAP-Unterstützung für Linux in Azure

Einige Linux-Kernels unterstützen TRIM/UNMAP-Vorgänge, um ungenutzte Blöcke auf dem Datenträger zu verwerfen. Dieses Feature ist in erster Linie nützlich, um Azure darüber zu informieren, dass gelöschte Seiten nicht mehr gültig sind und verworfen werden können. Dieses Feature kann Geld für Datenträger sparen, die basierend auf der Menge des verbrauchten Speichers abgerechnet werden, z. B. nicht verwaltete Standarddatenträger und Datenträgermomentaufnahmen.

Es gibt zwei Methoden, TRIM-Unterstützung auf Ihrem virtuellen Linux-Computer zu aktivieren. Den empfohlenen Ansatz finden Sie wie üblich in Ihrer Distribution:

  • Verwenden Sie die Bereitstellungsoption discard in /etc/fstab, z.B.:

    UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e   /datadrive   xfs   defaults,discard   1   2
    
  • In einigen Fällen kann sich die Option discard möglicherweise auf die Leistung auswirken. Alternativ können Sie den Befehl fstrim manuell über die Befehlszeile ausführen oder ihn „crontab“ hinzufügen, um eine regelmäßige Ausführung zu erzielen:

sudo apt install util-linux
sudo fstrim /datadrive

Problembehandlung

Beim Hinzufügen von Datenträgern zu einer Linux-VM können Fehler auftreten, wenn kein Datenträger in LUN 0 vorhanden ist. Wenn Sie einen Datenträger manuell mit dem Befehl az vm disk attach -new hinzufügen und eine LUN (--lun) angeben, statt die entsprechende LUN von Azure Platform bestimmen zu lassen, müssen Sie sicherstellen, dass in LUN 0 bereits ein Datenträger vorhanden ist/vorhanden sein wird.

Das folgende Beispiel zeigt einen Codeausschnitt der Ausgabe von lsscsi:

[5:0:0:0]    disk    Msft     Virtual Disk     1.0   /dev/sdc 
[5:0:0:1]    disk    Msft     Virtual Disk     1.0   /dev/sdd 

Die zwei Datenträger sind in LUN 0 und LUN 1 vorhanden (die erste Spalte in der lsscsi-Ausgabe enthält [host:channel:target:lun]). Auf beide Datenträger sollte über den virtuellen Computer zugegriffen werden können. Wenn Sie manuell angegeben haben, dass der erste Datenträger zu LUN 1 und der zweite Datenträger zu LUN 2 hinzugefügt werden soll, werden die Datenträger in Ihrem virtuellen Computer möglicherweise nicht richtig angezeigt.

Hinweis

Der host-Wert von Azure ist in diesen Beispielen 5, aber dies kann je nach Art des gewählten Speichers variieren.

Dieses Datenträgerverhalten ist kein Azure-Problem, sondern auf diese entspricht der Linux-Kernel den SCSI-Spezifikationen. Wenn der Linux-Kernel den SCSI-Bus auf angeschlossene Geräte überprüft, muss ein Gerät in LUN 0 gefunden werden, damit das System die Überprüfung auf weitere Geräte fortsetzt. Daher:

  • Überprüfen Sie die Ausgabe von lsscsi nach dem Hinzufügen eines Datenträgers, um sicherzustellen, dass in LUN 0 ein Datenträger vorhanden ist.
  • Wenn der Datenträger nicht richtig in Ihrem virtuellen Computer angezeigt wird, überprüfen Sie, ob ein Datenträger in LUN 0 vorhanden ist.

Nächste Schritte