Lägg till en disk till en virtuell Linux-dator

Gäller för: ✔️ Virtuella Linux-datorer ✔️ – flexibla skalningsuppsättningar

Den här artikeln visar hur du ansluter en beständig disk till den virtuella datorn så att du kan bevara dina data – även om den virtuella datorn etableras på nytt på grund av underhåll eller storleksändring.

Koppla en ny disk till en virtuell dator

Om du vill lägga till en ny, tom datadisk på den virtuella datorn använder du kommandot az vm disk attach med parametern --new . Om den virtuella datorn finns i en tillgänglighetszon skapas disken automatiskt i samma zon som den virtuella datorn. Mer information finns i Översikt över Tillgänglighetszoner. I följande exempel skapas en disk med namnet myDataDisk som är 50 Gb i storlek:

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

Kortare svarstider

I utvalda regioner har svarstiden för diskanslutningen minskat, så du ser en förbättring på upp till 15 %. Detta är användbart om du har planerade/oplanerade redundansväxlingar mellan virtuella datorer, om du skalar din arbetsbelastning eller kör en tillståndskänslig arbetsbelastning i hög skala, till exempel Azure Kubernetes Service. Den här förbättringen är dock begränsad till det explicita kommandot för diskanslutning, az vm disk attach. Prestandaförbättringen visas inte om du anropar ett kommando som implicit kan utföra en koppling, till exempel az vm update. Du behöver inte vidta någon annan åtgärd än att anropa det explicita attach-kommandot för att se den här förbättringen.

Kortare svarstider är för närvarande tillgängliga i alla offentliga regioner förutom:

  • Kanada, centrala
  • Central US
  • East US
  • USA, östra 2
  • USA, södra centrala
  • USA, västra 2
  • Tyskland, norra
  • Jio Indien, västra
  • Europa, norra
  • Europa, västra

Ansluta en befintlig disk

Om du vill ansluta en befintlig disk letar du upp disk-ID:t och skickar ID:t till kommandot az vm disk attach . Följande exempel frågar efter en disk med namnet myDataDisk i myResourceGroup och kopplar den sedan till den virtuella datorn med namnet myVM:

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

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

Formatera och montera disken

Om du vill partitionera, formatera och montera den nya disken så att den virtuella Linux-datorn kan använda den, SSH till den virtuella datorn. Mer information finns i Så här använder du SSH med Linux på Azure. Följande exempel ansluter till en virtuell dator med den offentliga IP-adressen 10.123.123.25 med användarnamnet azureuser:

ssh azureuser@10.123.123.25

Hitta disken

När du har anslutit till den virtuella datorn letar du upp disken. I det här exemplet använder lsblk vi för att lista diskarna.

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

Utdata ser ut ungefär så här:

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

sdc Här är den disk som vi vill ha, eftersom det är 50G. Om du lägger till flera diskar och inte är säker på vilken disk den baseras på enbart storlek kan du gå till den virtuella datorns sida i portalen, välja Diskar och kontrollera LUN-numret för disken under Datadiskar. Jämför LUN-numret från portalen med det sista numret för HTCL-delen av utdata, vilket är LUN. Ett annat alternativ är att visa innehållet i /dev/disk/azure/scsi1 katalogen:

ls -l /dev/disk/azure/scsi1

Utdata bör likna följande exempel:

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

Formatera disken

Formatera disken med parted, om diskstorleken är två tebibyte (TiB) eller större måste du använda GPT-partitionering, om den är under 2TiB kan du använda antingen MBR- eller GPT-partitionering.

Anteckning

Vi rekommenderar att du använder den senaste versionen parted som är tillgänglig för distributionen. Om diskstorleken är 2 tebibyte (TiB) eller större måste du använda GPT-partitionering. Om diskstorleken är under 2 TiB kan du använda antingen MBR- eller GPT-partitionering.

I följande exempel används parted/dev/sdc, där den första datadisken vanligtvis finns på de flesta virtuella datorer. Ersätt sdc med rätt alternativ för disken. Vi formaterar det också med hjälp av XFS-filsystemet .

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

partprobe Använd verktyget för att kontrollera att kerneln är medveten om den nya partitionen och filsystemet. Om det inte används partprobe kan blkid- eller lsblk-kommandona inte returnera UUID för det nya filsystemet omedelbart.

Montera disken

Skapa nu en katalog för att montera filsystemet med hjälp av mkdir. I följande exempel skapas en katalog på /datadrive:

sudo mkdir /datadrive

Använd mount för att montera filsystemet. I följande exempel monteras partitionen /dev/sdc1 till monteringspunkten /datadrive :

sudo mount /dev/sdc1 /datadrive

Spara monteringen

För att säkerställa att enheten monteras om automatiskt efter en omstart måste den läggas till i /etc/fstab filen. Vi rekommenderar också starkt att UUID (Universally Unique Identifier) används i för att referera till enheten i /etc/fstab stället för bara enhetsnamnet (till exempel /dev/sdc1). Om operativsystemet upptäcker ett diskfel vid start och använder UUID undviker du att den felaktiga disken monteras på en viss plats. Återstående datadiskar tilldelas sedan samma enhets-ID:n. Du kan hitta UUID för den nya enheten med verktyget blkid:

sudo blkid

Utdata ser ut ungefär som i följande exempel:

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

Anteckning

Felaktig redigering av filen /etc/fstab kan leda till att systemet inte kan startas. Om du är osäker läser du distributionens dokumentation för att få information om hur du redigerar filen på rätt sätt. Vi rekommenderar också att du skapar en säkerhetskopia av /etc/fstab filen innan du redigerar den.

Öppna sedan /etc/fstab filen i en textredigerare. Lägg till en rad i slutet av filen med UUID-värdet för enheten /dev/sdc1 som skapades i föregående steg och monteringspunkten /datadriveför . Med hjälp av exemplet från den här artikeln skulle den nya raden se ut så här:

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

När du är klar med redigeringen av filen sparar du och stänger redigeraren.

Du kan också köra följande kommando för att lägga till disken i /etc/fstab filen:

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

Anteckning

Om du senare tar bort en datadisk utan att redigera fstab kan den virtuella datorn misslyckas med att starta. De flesta distributioner tillhandahåller antingen nofail - och/eller nobootwait fstab-alternativen. De här alternativen gör att ett system kan starta även om disken inte kan monteras vid start. Mer information om dessa parametrar finns i distributionens dokumentation.

Nofail-alternativet säkerställer att den virtuella datorn startar även om filsystemet är skadat eller om disken inte finns vid starttiden. Utan det här alternativet kan du stöta på beteende enligt beskrivningen i Cannot SSH to Linux VM due to Linux VM due to FSTAB errors (Det går inte att använda SSH till virtuell Linux-dator på grund av FSTAB-fel)

Seriekonsolen för virtuella Azure-datorer kan användas för konsolåtkomst till den virtuella datorn om ändring av fstab har resulterat i ett startfel. Mer information finns i dokumentationen för seriekonsolen.

STÖD FÖR TRIM/UNMAP för Linux i Azure

Vissa Linux-kernels stöder TRIM/UNMAP-åtgärder för att ta bort oanvända block på disken. Den här funktionen är främst användbar för att informera Azure om att borttagna sidor inte längre är giltiga och kan tas bort. Den här funktionen kan spara pengar på diskar som debiteras baserat på mängden förbrukat lagringsutrymme, till exempel ohanterade standarddiskar och ögonblicksbilder av diskar.

Det finns två sätt att aktivera TRIM-stöd på din virtuella Linux-dator. Se som vanligt distributionen för den rekommenderade metoden:

  • Använd monteringsalternativet discard i /etc/fstab, till exempel:

    UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e   /datadrive   xfs   defaults,discard   1   2
    
  • I vissa fall kan alternativet discard ha prestandakonsekvenser. Du kan också köra fstrim kommandot manuellt från kommandoraden eller lägga till det i crontab för att köra regelbundet:

sudo apt install util-linux
sudo fstrim /datadrive

Felsökning

När du lägger till datadiskar på en virtuell Linux-dator kan det uppstå fel om det inte finns någon disk på LUN 0. Om du lägger till en disk manuellt med kommandot az vm disk attach -new och du anger ett LUN (--lun) i stället för att låta Azure-plattformen fastställa lämplig LUN bör du se till att det redan finns en disk/finns på LUN 0.

Tänk dig följande exempel som visar ett kodfragment av utdata från 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 två datadiskarna finns på LUN 0 och LUN 1 (den första kolumnen i utdatainformationen lsscsi[host:channel:target:lun]). Båda diskarna ska vara tillgängliga från den virtuella datorn. Om du manuellt hade angett den första disken som ska läggas till på LUN 1 och den andra disken på LUN 2 kanske du inte ser diskarna korrekt från den virtuella datorn.

Anteckning

Azure-värdet host är 5 i de här exemplen, men det kan variera beroende på vilken typ av lagring du väljer.

Det här diskbeteendet är inte ett Azure-problem, utan det sätt på vilket Linux-kerneln följer SCSI-specifikationerna. När Linux-kerneln söker igenom SCSI-bussen efter anslutna enheter måste en enhet hittas på LUN 0 för att systemet ska kunna fortsätta söka efter ytterligare enheter. Som sådan:

  • Granska utdata lsscsi från när du har lagt till en datadisk för att kontrollera att du har en disk på LUN 0.
  • Om disken inte visas korrekt i den virtuella datorn kontrollerar du att det finns en disk på LUN 0.

Nästa steg