Share via


Een schijf toevoegen aan een virtuele Linux-machine

Van toepassing op: ✔️ Flexibele schaalsets voor Linux-VM's ✔️

In dit artikel leest u hoe u een permanente schijf koppelt aan uw VIRTUELE machine, zodat u uw gegevens kunt behouden, zelfs als uw VIRTUELE machine opnieuw wordt ingerichte vanwege onderhoud of het wijzigen van de grootte.

Een nieuwe schijf koppelen aan een virtuele machine

Als u een nieuwe, lege gegevensschijf op uw virtuele machine wilt toevoegen, gebruikt u de opdracht az vm disk attach met de --new parameter. Als uw VM zich in een beschikbaarheidszone bevindt, wordt de schijf automatisch gemaakt in dezelfde zone als de virtuele machine. Zie Overzicht van Beschikbaarheidszones voor meer informatie. In het volgende voorbeeld wordt een schijf met de naam myDataDisk gemaakt die 50 Gb groot is:

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

Lagere latentie

In bepaalde regio's is de latentie van schijfkoppeling verminderd, dus u ziet een verbetering van maximaal 15%. Dit is handig als u geplande/niet-geplande failovers hebt tussen VM's, u uw workload schaalt of een stateful workload met hoge schaal uitvoert, zoals Azure Kubernetes Service. Deze verbetering is echter beperkt tot de opdracht voor expliciete schijfkoppeling, az vm disk attach. U ziet de prestatieverbetering niet als u een opdracht aanroept die impliciet een bijlage kan uitvoeren, zoals az vm update. U hoeft geen andere actie te ondernemen dan het aanroepen van de expliciete bijlageopdracht om deze verbetering te zien.

Lagere latentie is momenteel beschikbaar in elke openbare regio, met uitzondering van:

  • Canada - midden
  • VS - centraal
  • VS - oost
  • VS - oost 2
  • VS - zuid-centraal
  • VS - west 2
  • Duitsland - noord
  • Jio India West
  • Europa - noord
  • Europa -west

Een bestaande schijf koppelen

Als u een bestaande schijf wilt koppelen, zoekt u de schijf-id en geeft u de id door aan de opdracht az vm disk attach . In het volgende voorbeeld wordt een query uitgevoerd op een schijf met de naam myDataDisk in myResourceGroup en wordt deze gekoppeld aan de virtuele machine met de naam myVM:

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

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

De schijf formatteren en koppelen

Als u uw nieuwe schijf wilt partitioneren, formatteren en koppelen, zodat uw Linux-VM deze kan gebruiken, maakt u SSH in uw VIRTUELE machine. Zie voor meer informatie SSH gebruiken met Linux op Azure. In het volgende voorbeeld wordt verbinding gemaakt met een virtuele machine met het openbare IP-adres 10.123.123.25 met de gebruikersnaam azureuser:

ssh azureuser@10.123.123.25

De schijf vinden

Zodra u verbinding hebt gemaakt met uw virtuele machine, zoekt u de schijf. In dit voorbeeld gebruiken lsblk we om de schijven weer te geven.

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

De uitvoer lijkt op die in het volgende voorbeeld:

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 is sdc de schijf die we willen, omdat het 50G is. Als u meerdere schijven toevoegt en niet zeker weet welke schijf deze alleen is gebaseerd op de grootte, gaat u naar de vm-pagina in de portal, selecteert u Schijven en controleert u het LUN-nummer voor de schijf onder Gegevensschijven. Vergelijk het LUN-nummer van de portal met het laatste nummer van het HTCL-gedeelte van de uitvoer. Dit is de LUN. Een andere optie is om de inhoud van de /dev/disk/azure/scsi1 map weer te geven:

ls -l /dev/disk/azure/scsi1

De uitvoer moet er ongeveer uitzien als in het volgende voorbeeld:

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

De schijf formatteren

Maak de schijf op met parted, als de schijfgrootte twee tebibytes (TiB) of groter is, moet u GPT-partitionering gebruiken, als deze onder 2TiB valt, dan kunt u MBR- of GPT-partitionering gebruiken.

Notitie

Het is raadzaam om de nieuwste versie parted te gebruiken die beschikbaar is voor uw distributie. Als de schijfgrootte 2 tebibytes (TiB) of groter is, moet u GPT-partitionering gebruiken. Als de schijfgrootte kleiner is dan 2 TiB, kunt u MBR- of GPT-partitionering gebruiken.

In het volgende voorbeeld wordt gebruikgemaakt parted /dev/sdcvan, waarbij de eerste gegevensschijf zich meestal op de meeste VM's bevindt. Vervang door sdc de juiste optie voor uw schijf. We maken het ook op met behulp van het XFS-bestandssysteem .

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

Gebruik het partprobe hulpprogramma om ervoor te zorgen dat de kernel op de hoogte is van de nieuwe partitie en het bestandssysteem. Als het niet kan worden gebruikt partprobe , kunnen de blkid- of lsblk-opdrachten de UUID niet onmiddellijk retourneren voor het nieuwe bestandssysteem.

De schijf koppelen

Maak nu een map om het bestandssysteem te koppelen met behulp van mkdir. In het volgende voorbeeld wordt een map gemaakt op /datadrive:

sudo mkdir /datadrive

Gebruik mount dit om het bestandssysteem vervolgens te koppelen. In het volgende voorbeeld wordt de /dev/sdc1 partitie gekoppeld aan het /datadrive koppelpunt:

sudo mount /dev/sdc1 /datadrive

De koppeling behouden

Om ervoor te zorgen dat het station automatisch opnieuw wordt gekoppeld na het opnieuw opstarten, moet het worden toegevoegd aan het /etc/fstab bestand. Het wordt ook ten zeerste aanbevolen dat de UUID (Universally Unique Identifier) wordt gebruikt /etc/fstab om te verwijzen naar het station in plaats van alleen de apparaatnaam (zoals /dev/sdc1). Als het besturingssysteem een schijffout ontdekt tijdens het opstarten, kunt u door de UUID te gebruiken voorkomen dat de verkeerde schijf wordt gekoppeld aan een bepaalde locatie. Resterende gegevensschijven worden dan toegewezen aan dezelfde apparaat-id's. Als u de UUID van het nieuwe station wilt zoeken, gebruikt u het hulpprogramma blkid:

sudo blkid

De uitvoer ziet er ongeveer als volgt uit:

/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"

Notitie

Als u het bestand /etc/fstab onjuist bewerkt, kan dat erin resulteren dat het systeem niet meer kan worden opgestart. Als u niet zeker weet wat u moet doen, raadpleegt u de documentatie van de distributie over het bewerken van dit bestand. Het wordt ook aanbevolen om een back-up van het /etc/fstab bestand te maken voordat u het bewerkt.

Open vervolgens het /etc/fstab bestand in een teksteditor. Voeg een regel toe aan het einde van het bestand, met behulp van de UUID-waarde voor het /dev/sdc1 apparaat dat in de vorige stappen is gemaakt en het koppelpunt van /datadrive. Met behulp van het voorbeeld uit dit artikel ziet de nieuwe regel er als volgt uit:

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

Wanneer u klaar bent met het bewerken van het bestand, slaat u de editor op en sluit u deze.

U kunt ook de volgende opdracht uitvoeren om de schijf toe te voegen aan het /etc/fstab bestand:

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

Notitie

Als u later een gegevensschijf verwijdert zonder fstab te bewerken, kan dit ertoe leiden dat de virtuele machine niet meer opstart. De meeste distributies bieden de opties nofail en/of nobootwait fstab. Met deze opties kan een systeem worden opgestart, zelfs als de schijf niet kan worden gekoppeld tijdens het opstarten. Raadpleeg de documentatie van uw distributie voor meer informatie over deze parameters.

De nofail-optie zorgt ervoor dat de virtuele machine wordt gestart, zelfs als het bestandssysteem beschadigd is of de schijf niet bestaat tijdens het opstarten. Zonder deze optie kunt u gedrag tegenkomen, zoals beschreven in Kan SSH niet naar Linux-VM vanwege FSTAB-fouten

De seriële console van azure-VM kan worden gebruikt voor consoletoegang tot uw VIRTUELE machine als het wijzigen van fstab heeft geresulteerd in een opstartfout. Meer informatie vindt u in de seriële consoledocumentatie.

TRIM/UNMAP-ondersteuning voor Linux in Azure

Sommige Linux-kernels ondersteunen TRIM/UNMAP-bewerkingen om ongebruikte blokken op de schijf te verwijderen. Deze functie is voornamelijk handig om Azure te informeren dat verwijderde pagina's niet meer geldig zijn en kunnen worden verwijderd. Met deze functie kunt u geld besparen op schijven die worden gefactureerd op basis van de hoeveelheid verbruikte opslag, zoals onbeheerde standaardschijven en momentopnamen van schijven.

Er zijn twee manieren om TRIM-ondersteuning in te schakelen op uw Linux-VM. Zoals gebruikelijk raadpleegt u uw distributie voor de aanbevolen aanpak:

  • Gebruik de koppelingsoptie discard in /etc/fstab, bijvoorbeeld:

    UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e   /datadrive   xfs   defaults,discard   1   2
    
  • In sommige gevallen kan de optie gevolgen hebben voor de discard prestaties. U kunt de fstrim opdracht ook handmatig uitvoeren vanaf de opdrachtregel of deze toevoegen aan uw crontab om regelmatig uit te voeren:

sudo apt install util-linux
sudo fstrim /datadrive

Probleemoplossing

Wanneer u gegevensschijven toevoegt aan een Virtuele Linux-machine, kunnen er fouten optreden als er geen schijf bestaat op LUN 0. Als u handmatig een schijf toevoegt met behulp van de az vm disk attach -new opdracht en u een LUN (--lun) opgeeft in plaats van het Azure-platform de juiste LUN te laten bepalen, moet u ervoor zorgen dat er al een schijf bestaat /op LUN 0 bestaat.

Bekijk het volgende voorbeeld met een fragment van de uitvoer van 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 

De twee gegevensschijven bestaan op LUN 0 en LUN 1 (de eerste kolom in de lsscsi uitvoerdetails [host:channel:target:lun]). Beide schijven moeten toegankelijk zijn vanuit de VIRTUELE machine. Als u handmatig de eerste schijf hebt opgegeven die moet worden toegevoegd bij LUN 1 en de tweede schijf op LUN 2, ziet u de schijven mogelijk niet correct vanuit uw VIRTUELE machine.

Notitie

De Azure-waarde host is 5 in deze voorbeelden, maar dit kan variëren, afhankelijk van het type opslag dat u selecteert.

Dit schijfgedrag is geen Azure-probleem, maar de manier waarop de Linux-kernel de SCSI-specificaties volgt. Wanneer de Linux-kernel de SCSI-bus scant op gekoppelde apparaten, moet een apparaat worden gevonden op LUN 0 om door te gaan met scannen op extra apparaten. Als zodanig:

  • Controleer de uitvoer van na het toevoegen van lsscsi een gegevensschijf om te controleren of u een schijf op LUN 0 hebt.
  • Als uw schijf niet correct wordt weergegeven binnen uw VIRTUELE machine, controleert u of er een schijf aanwezig is op LUN 0.

Volgende stappen

  • Raadpleeg de aanbevelingen voor de prestaties van uw Linux-machine optimaliseren om ervoor te zorgen dat uw Virtuele Linux-machine correct is geconfigureerd.
  • Breid uw opslagcapaciteit uit door meer schijven toe te voegen en RAID te configureren voor extra prestaties.