Přidání disku do virtuálního počítače s Linuxem

Platí pro: ✔️ Flexibilní škálovací sady virtuálních počítačů s ✔️ Linuxem

V tomto článku se dozvíte, jak k virtuálnímu počítači připojit trvalý disk, abyste mohli zachovat data , a to i v případě, že se virtuální počítač kvůli údržbě nebo změně velikosti znovu zřizuje.

Připojení nového disku k virtuálnímu počítači

Pokud chcete do virtuálního počítače přidat nový prázdný datový disk, použijte příkaz az vm disk attach s parametrem --new . Pokud je váš virtuální počítač v zóně dostupnosti, disk se automaticky vytvoří ve stejné zóně jako virtuální počítač. Další informace najdete v tématu Přehled Zóny dostupnosti. Následující příklad vytvoří disk myDataDisk o velikosti 50 GB:

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

Nižší latence

Ve vybraných oblastech se snížila latence připojení disku, takže uvidíte zlepšení až o 15 %. To je užitečné, pokud máte naplánované nebo neplánované převzetí služeb při selhání mezi virtuálními počítači, škálujete úlohy nebo používáte stavovou úlohu s vysokým rozsahem, jako je Azure Kubernetes Service. Toto vylepšení je však omezeno na příkaz az vm disk attachexplicitního připojení disku . Zlepšení výkonu se nezobrazí, pokud zavoláte příkaz, který může implicitně provést připojení, například az vm update. Abyste viděli toto vylepšení, nemusíte provádět žádnou jinou akci než voláním explicitního příkazu attach.

Nižší latence je aktuálně dostupná ve všech veřejných oblastech s výjimkou:

  • Střední Kanada
  • Střední USA
  • East US
  • USA – východ 2
  • Středojižní USA
  • Západní USA 2
  • Německo – sever
  • Jio Indie – západ
  • Severní Evropa
  • West Europe

Připojení stávajícího disku

Pokud chcete připojit existující disk, vyhledejte ID disku a předejte ho příkazu az vm disk attach . Následující příklad se dotazuje na disk myDataDisk v myResourceGroup a pak ho připojí k virtuálnímu počítači myVM:

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

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

Formátování a připojení disku

Pokud chcete nový disk rozdělit na oddíly, naformátovat ho a připojit ho, aby ho virtuální počítač s Linuxem mohl používat, připojte se k virtuálnímu počítači SSH. Další informace najdete v tématu Jak použít SSH s Linuxem v Azure. Následující příklad se připojí k virtuálnímu počítači s veřejnou IP adresou 10.123.123.25 s uživatelským jménem azureuser:

ssh azureuser@10.123.123.25

Vyhledání disku

Jakmile se připojíte k virtuálnímu počítači, vyhledejte disk. V tomto příkladu používáme lsblk k výpisu disků.

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

Výstup se podobá následujícímu příkladu:

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

Tady je disk, sdc který chceme, protože je to 50G. Pokud přidáte více disků a nejste si jistí, který disk je založený jenom na velikosti, můžete přejít na stránku virtuálního počítače na portálu, vybrat Disky a zkontrolovat číslo logické jednotky disku v části Datové disky. Porovnejte číslo logické jednotky z portálu s posledním číslem htcl části výstupu, což je LUN. Další možností je výpis obsahu /dev/disk/azure/scsi1 adresáře:

ls -l /dev/disk/azure/scsi1

Výstup by měl být podobný následujícímu příkladu:

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

Formátování disku

Naformátujte disk pomocí parted, pokud je velikost disku dva tebibajty (TiB) nebo větší, musíte použít dělení GPT. Pokud je pod 2TiB, můžete použít dělení MBR nebo GPT.

Poznámka

Doporučujeme používat nejnovější verzi parted , která je k dispozici pro vaši distribuci. Pokud je velikost disku 2 tebibajty (TiB) nebo větší, musíte použít dělení GPT. Pokud je velikost disku pod 2 TiB, můžete použít dělení MBR nebo GPT.

V následujícím příkladu se používá parted na /dev/sdc, což je místo, kde bude první datový disk obvykle na většině virtuálních počítačů. Nahraďte sdc správnou možností pro váš disk. Formátujeme ho také pomocí systému souborů XFS .

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

Pomocí nástroje partprobe se ujistěte, že jádro ví o novém oddílu a systému souborů. Selhání použití partprobe může způsobit, že příkazy blkid nebo lsblk okamžitě nevrátí UUID pro nový systém souborů.

Připojení disku

Teď vytvořte adresář pro připojení systému souborů pomocí mkdir. Následující příklad vytvoří adresář na adrese /datadrive:

sudo mkdir /datadrive

Použijte mount k připojení systému souborů. Následující příklad připojí /dev/sdc1 oddíl k přípojovému /datadrive bodu:

sudo mount /dev/sdc1 /datadrive

Zachování připojení

Aby se zajistilo, že se jednotka po restartování automaticky znovu připojí, musí být přidána /etc/fstab do souboru. Důrazně se také doporučuje, aby se místo /etc/fstab názvu zařízení (například /dev/sdc1) v systému používalo UUID (Universally Unique Identifier). Pokud operační systém zjistí při spouštění chybu disku, zabráníte použitím identifikátoru UUID připojení nesprávného disku do daného umístění. Zbývajícím datovým diskům by se přiřadily stejné ID zařízení. Ke zjištění UUID nového disku použijte nástroj blkid:

sudo blkid

Výstup vypadá podobně jako v následujícím příkladu:

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

Poznámka

Pokud byste soubor /etc/fstab upravili nesprávně, může se stát, že systém nepůjde spustit. Pokud si nejste jistí, podívejte se do dokumentace k distribuci, kde najdete informace o tom, jak soubor správně upravit. Před úpravami se také doporučuje vytvořit zálohu /etc/fstab souboru.

Potom otevřete /etc/fstab soubor v textovém editoru. Na konec souboru přidejte řádek s použitím hodnoty UUID pro /dev/sdc1 zařízení vytvořené v předchozích krocích a přípojného /datadrivebodu . Při použití příkladu z tohoto článku by nový řádek vypadal takto:

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

Až dokončíte úpravy souboru, uložte a zavřete editor.

Případně můžete disk do /etc/fstab souboru přidat spuštěním následujícího příkazu:

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

Poznámka

Pozdější odebrání datového disku bez úprav nástroje fstab může způsobit selhání spuštění virtuálního počítače. Většina distribucí poskytuje buď možnosti nofail nebo nobootwait fstab. Tyto možnosti umožňují spuštění systému i v případě, že se při spuštění nepodaří připojit disk. Další informace o těchto parametrech najdete v dokumentaci k vaší distribuci.

Možnost nofail zajistí, že se virtuální počítač spustí i v případě, že je systém souborů poškozený nebo disk při spuštění neexistuje. Bez této možnosti se můžete setkat s chováním popsaným v tématu Kvůli chybám FSTAB nejde provést připojení SSH k virtuálnímu počítači s Linuxem.

Sériovou konzolu virtuálního počítače Azure je možné použít pro přístup konzoly k virtuálnímu počítači, pokud úprava fstab způsobila selhání spuštění. Další podrobnosti jsou k dispozici v dokumentaci k sériové konzole.

Podpora TRIM/UNMAP pro Linux v Azure

Některá linuxová jádra podporují operace TRIM/UNMAP, které zahodí nepoužívané bloky na disku. Tato funkce je primárně užitečná k informování Azure, že odstraněné stránky už nejsou platné a je možné je zahodit. Tato funkce může ušetřit peníze na discích, které se fakturují na základě množství spotřebovaného úložiště, jako jsou nespravované standardní disky a snímky disků.

Na virtuálním počítači s Linuxem můžete podporu TRIM povolit dvěma způsoby. Jako obvykle se poraďte s doporučeným postupem ve své distribuci:

  • discard Použijte možnost připojení v /etc/fstabnástroji , například:

    UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e   /datadrive   xfs   defaults,discard   1   2
    
  • V některých případech může mít tato možnost vliv na discard výkon. Případně můžete příkaz spustit fstrim ručně z příkazového řádku nebo ho přidat do crontab a spouštět ho pravidelně:

sudo apt install util-linux
sudo fstrim /datadrive

Řešení potíží

Při přidávání datových disků na virtuální počítač s Linuxem může dojít k chybám, pokud disk neexistuje v logické jednotce 0. Pokud přidáváte disk ručně pomocí az vm disk attach -new příkazu a zadáte logickou jednotku (--lun) místo toho, aby platforma Azure mohla určit příslušnou logickou jednotku, dbejte na to, aby disk již existoval na logické jednotce 0.

Podívejte se na následující příklad znázorňující fragment výstupu z 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 

Tyto dva datové disky existují na logických jednotkách 0 a logické jednotce 1 (první sloupec v podrobnostech výstupu lsscsi[host:channel:target:lun]). Oba disky by měly být přístupné z virtuálního počítače. Pokud jste ručně zadali první disk, který se má přidat do logické jednotky 1, a druhý disk s logickou jednotkou 2, nemusí se disky z virtuálního počítače správně zobrazit.

Poznámka

V těchto příkladech je hodnota Azure host 5, ale může se lišit v závislosti na typu vybraného úložiště.

Toto chování disku není problémem Azure, ale způsobem, jakým se jádro Linuxu řídí specifikacemi SCSI. Když jádro Linuxu prohledá připojená zařízení ve sběrnici SCSI, musí být zařízení nalezeno na logické jednotce 0, aby systém mohl pokračovat ve vyhledávání dalších zařízení. Takto:

  • Zkontrolujte výstup po přidání datového lsscsi disku a ověřte, že máte disk na logické jednotce 0.
  • Pokud se disk na virtuálním počítači nezobrazuje správně, ověřte, že disk existuje na logické jednotce 0.

Další kroky