Udostępnij za pomocą


Formatowanie i instalowanie dysków zarządzanych

Dotyczy: ✔️ Maszyny wirtualne z systemem Linux — elastyczne zestawy skalowania ✔️

W tym artykule opisano sposób formatowania, instalowania i utrwalania dysków zarządzanych na maszynach wirtualnych z systemem Linux platformy Azure. Dyski zarządzane są magazynem trwałym dołączonym do maszyny wirtualnej, który może używać interfejsów SCSI lub NVMe w zależności od rozmiaru maszyny wirtualnej.

Wymagania wstępne

Przed sformatowaniem i zainstalowaniem dysku danych upewnij się, że:

Ostrzeżenie

Przed sformatowaniem zawsze sprawdź, czy pracujesz z poprawnym dyskiem. Formatowanie niewłaściwego dysku może spowodować utratę danych.

Formatowanie dysku

Użyj najnowszej dostępnej wersji parted dla Twojej dystrybucji. Jeśli rozmiar dysku to 2 tebibajty (TiB) lub większy, użyj partycjonowania GPT. Jeśli rozmiar dysku jest poniżej 2 TiB, można użyć partycjonowania MBR lub GPT.

Po zidentyfikowaniu poprawnego dysku (na przykład /dev/nvme0n2 dla dysku danych) można go sformatować:

W poniższym przykładzie użyto parted na /dev/sdc, gdzie zwykle znajduje się pierwszy dysk danych na większości maszyn wirtualnych. Zastąp sdc poprawną opcją dla twojego dysku. Formatuje również dysk przy użyciu systemu plików XFS .

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

Użyj narzędzia partprobe , aby upewnić się, że jądro jest świadome nowej partycji i systemu plików. Jeśli nie używasz polecenia partprobe, polecenia blkid i lsblk nie zwrócą natychmiast identyfikatora UUID dla nowego systemu plików.

Instalowanie dysku

Teraz utwórz katalog, aby zainstalować system plików przy użyciu polecenia mkdir. Poniższy przykład tworzy katalog w witrynie /datadrive:

sudo mkdir /datadrive

Użyj polecenia mount , aby zainstalować system plików. Poniższy przykład instaluje partycję /dev/sdc1 (dla SCSI) lub /dev/nvme0n2p1 (dla nvme) do /datadrive punktu instalacji:

# Mount the disk identified earlier (replace sdc1 with your identified disk's partition)
sudo mount /dev/sdc1 /datadrive

Możesz również skorzystać ze ścieżki urządzenia w platformie Azure:

sudo mount /dev/disk/azure/scsi1/lun0-part1 /datadrive

Utrwalanie instalacji

Aby upewnić się, że dysk jest automatycznie instalowany po ponownym uruchomieniu, dodaj go do /etc/fstab pliku.

Zdecydowanie zaleca się użycie identyfikatora UUID (uniwersalnego unikatowego identyfikatora) w /etc/fstab do odwoływania się do napędu, zamiast ścieżki urządzenia (np. /dev/sdc1). Ścieżki urządzeń nie są trwałe i zmieniają się po ponownym uruchomieniu. Aby znaleźć identyfikator UUID nowego dysku, użyj blkid narzędzia :

sudo blkid

Dane wyjściowe wyglądają podobnie do następującego przykładu:

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

Ostrzeżenie

Niewłaściwa edycja pliku /etc/fstab może skutkować tym, że system nie będzie się uruchamiał. Jeśli nie masz pewności, zapoznaj się z dokumentacją dystrybucji, aby uzyskać informacje na temat prawidłowego edytowania tego pliku. Przed edycją należy również utworzyć kopię zapasową /etc/fstab pliku.

Następnie otwórz /etc/fstab plik w edytorze tekstów. Dodaj wiersz na końcu pliku przy użyciu wartości UUID dysku utworzonego w poprzednich krokach oraz punktu instalacji ./datadrive Korzystając z przykładu z tego artykułu, nowy wiersz będzie wyglądać następująco:

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

Po zakończeniu edytowania pliku zapisz i zamknij edytor.

Alternatywnie możesz uruchomić następujące polecenie, aby dodać dysk do /etc/fstab pliku:

# For SCSI disks
UUID=$(sudo blkid -s UUID -o value /dev/sdc1)
echo "UUID=$UUID   /datadrive   xfs   defaults,nofail   1   2" | sudo tee -a /etc/fstab

# For NVMe disks
UID=$(sudo blkid -s UUID -o value /dev/nvme1n1p1)
echo "UUID=$UUID   /datadrive   xfs   defaults,nofail   1   2" | sudo tee -a /etc/fstab

Uwaga / Notatka

Później usunięcie dysku danych bez edytowania fstab może spowodować niepowodzenie rozruchu maszyny wirtualnej. Większość dystrybucji zapewnia opcje nofail i/lub nobootwait fstab. Te opcje umożliwiają rozruch systemu nawet wtedy, gdy podczas uruchamiania nie można zamontować dysku. Aby uzyskać szczegółowe informacje na temat tych parametrów, zobacz dokumentację dystrybucji.

Opcja zapewnia, że maszyna wirtualna nofail jest uruchamiana nawet wtedy, gdy system plików jest uszkodzony lub dysk nie istnieje w czasie rozruchu. Bez tej opcji można napotkać zachowanie zgodnie z opisem w temacie Nie można nawiązać połączenia SSH z maszyną wirtualną z systemem Linux z powodu błędów FSTAB

Konsola szeregowa Azure VM może być używana do uzyskiwania dostępu do maszyny wirtualnej, jeśli modyfikowanie fstab powoduje awarię rozruchu. Więcej informacji można znaleźć w dokumentacji konsoli szeregowej.

Obsługa funkcji TRIM/UNMAP dla systemu Linux na platformie Azure

Niektóre jądra systemu Linux obsługują operacje TRIM/UNMAP w celu odrzucenia nieużywanych bloków na dysku. Ta funkcja jest przydatna przede wszystkim do informowania platformy Azure o tym, że usunięte strony nie są już prawidłowe i można je odrzucić. Ta funkcja może zaoszczędzić pieniądze na dyskach, które są rozliczane na podstawie ilości zużytej przestrzeni dyskowej, takich jak dyski standardowe bez zarządzania i migawki dysków.

Istnieją dwa sposoby włączenia obsługi TRIM dla maszyny wirtualnej z systemem Linux. Jak zwykle, skonsultuj się ze swoją dystrybucją w sprawie zalecanego podejścia.

• Użyj discard opcji montowania w /etc/fstab, na przykład:

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

• W niektórych przypadkach discard opcja może mieć wpływ na wydajność. Alternatywnie możesz uruchomić fstrim polecenie ręcznie z poziomu wiersza polecenia lub dodać je do narzędzia crontab w celu regularnego uruchamiania:

sudo apt install util-linux
sudo fstrim /datadrive

Rozwiązywanie problemów

Podczas dodawania dysków danych do maszyny wirtualnej z systemem Linux mogą wystąpić błędy, jeśli dysk nie istnieje w numerze LUN 0. Jeśli dodasz dysk ręcznie przy użyciu az vm disk attach -new polecenia i określisz jednostkę LUN (--lun) zamiast zezwalać platformie Azure na określenie odpowiedniej jednostki LUN, upewnij się, że dysk już istnieje /będzie istnieć w numerze LUN 0.

Rozważmy poniższy przykład pokazujący fragment kodu wyjściowego z pliku 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 

Dwa dyski danych znajdują się na jednostkach LUN 0 i LUN 1 (pierwsza kolumna w szczegółach lsscsi danych wyjściowych [host:channel:target:lun]). Oba dyski powinny być dostępne z poziomu maszyny wirtualnej. Jeśli ręcznie określono pierwszy dysk, który ma zostać dodany w numerze LUN 1, a drugi dysk o numerze LUN 2, dyski mogą nie być prawidłowo widoczne z poziomu maszyny wirtualnej.

Uwaga / Notatka

Wartość platformy Azure host wynosi 5 w tych przykładach, ale może się zmieniać w zależności od wybranego typu magazynowania.

To zachowanie dysku nie jest problemem platformy Azure, ale sposobem, w jaki jądro systemu Linux jest zgodne ze specyfikacjami SCSI. Gdy jądro systemu Linux skanuje magistralę SCSI pod kątem dołączonych urządzeń, urządzenie musi znajdować się pod numerem LUN 0, aby system kontynuował skanowanie pod kątem dodatkowych urządzeń. W związku z tym:

  • Przejrzyj dane wyjściowe lsscsi po dodaniu dysku danych, aby zweryfikować obecność dysku na LUN 0.
  • Jeśli dysk nie jest poprawnie wyświetlany na maszynie wirtualnej, sprawdź, czy dysk istnieje w numerze LUN 0.