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
- 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/sdc
van, 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 defstrim
opdracht ook handmatig uitvoeren vanaf de opdrachtregel of deze toevoegen aan uw crontab om regelmatig uit te voeren:
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.