Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: ✔️ Maszyny wirtualne z systemem Linux — elastyczne zestawy skalowania ✔️
W tym artykule pokazano, jak dołączyć dysk trwały do maszyny wirtualnej, aby zachować dane — nawet jeśli maszyna wirtualna zostanie ponownie aprowizowana z powodu konserwacji lub zmiany rozmiaru.
Dołączanie nowego dysku do maszyny wirtualnej
Jeśli chcesz dodać nowy, pusty dysk danych na maszynie wirtualnej, użyj polecenia az vm disk attach z parametrem --new
. Jeśli maszyna wirtualna znajduje się w strefie dostępności, dysk zostanie automatycznie utworzony w tej samej strefie co maszyna wirtualna. Aby uzyskać więcej informacji, zobacz Omówienie Strefy dostępności. Poniższy przykład tworzy dysk o nazwie myDataDisk o rozmiarze 50 Gb:
az vm disk attach \
-g myResourceGroup \
--vm-name myVM \
--name myDataDisk \
--new \
--size-gb 50
Mniejsze opóźnienia
W wybranych regionach opóźnienie dołączania dysku zostało zmniejszone, więc zobaczysz poprawę do 15%. Jest to przydatne, jeśli występują planowane lub nieplanowane przejścia w tryb failover między maszynami wirtualnymi, jeśli skalujesz obciążenie, lub jeśli uruchamiasz obciążenie stanowe o dużej skali, takie jak Azure Kubernetes Service. Jednak to ulepszenie jest ograniczone do jawnego polecenia dołączania dysku, az vm disk attach
. Nie zobaczysz poprawy wydajności, jeśli wywołasz polecenie, które może niejawnie wykonać dołączanie, na przykład az vm update
. Nie musisz podejmować żadnych działań innych niż wywoływanie jawnego polecenia dołączania, aby zobaczyć to ulepszenie.
Mniejsze opóźnienie jest obecnie dostępne w każdym regionie publicznym, z wyjątkiem:
- Kanada Środkowa
- Środkowe Stany Zjednoczone
- East US
- Wschodnie stany USA 2
- Południowo-Centralne Stany Zjednoczone
- Zachodnie stany USA 2
- Niemcy Północne
- Indie Zachodnie
- Europa Północna
- Europa Zachodnia
Dołączanie istniejącego dysku
Aby dołączyć istniejący dysk, znajdź identyfikator dysku i przekaż go do polecenia az vm disk attach . Poniższy przykład wykonuje zapytania dotyczące dysku o nazwie myDataDisk w grupie myResourceGroup, a następnie dołącza je do maszyny wirtualnej o nazwie myVM:
diskId=$(az disk show -g myResourceGroup -n myDataDisk --query 'id' -o tsv)
az vm disk attach -g myResourceGroup --vm-name myVM --name $diskId
Formatowanie i instalowanie dysku
Aby podzielić na partycje, sformatować i zainstalować nowy dysk, aby maszyna wirtualna z systemem Linux mogła z niego korzystać, użyj protokołu SSH na maszynie wirtualnej. Aby uzyskać więcej informacji, zobacz temat dotyczący korzystania z protokołu SSH systemu Linux na platformie Azure. Poniższy przykład łączy się z maszyną wirtualną z publicznym adresem IP 10.123.123.25 z nazwą użytkownika azureuser:
ssh azureuser@10.123.123.25
Wyszukiwanie dysku
Po nawiązaniu połączenia z maszyną wirtualną znajdź dysk. W tym przykładzie używamy lsblk
polecenia , aby wyświetlić listę dysków.
lsblk -o NAME,HCTL,SIZE,MOUNTPOINT | grep -i "sd"
Dane wyjściowe są podobne do poniższego przykładu:
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
Oto dysk, sdc
który chcemy, ponieważ jest to 50G. Jeśli dodasz wiele dysków i nie masz pewności, który dysk jest oparty na samym rozmiarze, możesz przejść do strony maszyny wirtualnej w portalu, wybrać pozycję Dyski i sprawdzić numer LUN dysku w obszarze Dyski. Porównaj numer LUN z portalu z ostatnią liczbą części danych wyjściowych HTCL , która jest numerem LUN. Inną opcją jest wyświetlenie listy zawartości /dev/disk/azure/scsi1
katalogu:
ls -l /dev/disk/azure/scsi1
Dane wyjściowe powinny być podobne do następującego przykładu:
lrwxrwxrwx 1 root root 12 Mar 28 19:41 lun0 -> ../../../sdc
Formatowanie dysku
Sformatuj dysk za pomocą parted
, jeśli rozmiar dysku wynosi dwa tebibajty (TiB) lub więcej, wówczas należy użyć partycjonowania GPT; jeśli jest to 2 TiB lub mniejszy, można użyć partycjonowania MBR lub GPT.
Uwaga
Zaleca się użycie najnowszej wersji parted
dostępnej dla twojej dystrybucji.
Jeśli rozmiar dysku to 2 tebibajty (TiB) lub większy, należy użyć partycjonowania GPT. Jeśli rozmiar dysku wynosi poniżej 2 TiB, możesz użyć partycjonowania MBR lub GPT.
W poniższym przykładzie użyto parted
na /dev/sdc
, gdzie pierwszy dysk danych będzie się zwykle znajdować na większości maszyn wirtualnych. Zastąp sdc
odpowiednią opcją dla dysku. Formatujemy go również 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
partprobe
Użyj narzędzia , aby upewnić się, że jądro jest świadome nowej partycji i systemu plików. Niewykorzystanie partprobe
może spowodować, że polecenia blkid lub lsblk nie zwrócą identyfikatora UUID dla nowego systemu plików natychmiast.
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 mount
, aby zamontować system plików. Poniższy przykład instaluje partycję /dev/sdc1
/datadrive
w punkcie instalacji:
sudo mount /dev/sdc1 /datadrive
Utrzymaj zamontowanie
Aby upewnić się, że dysk jest instalowany ponownie automatycznie po ponownym uruchomieniu, należy go dodać do /etc/fstab
pliku. Zdecydowanie zaleca się również używanie identyfikatora UUID (uniwersalnego unikatowego identyfikatora) /etc/fstab
do odwoływania się do dysku, a nie tylko nazwy urządzenia (np . /dev/sdc1). Jeśli system operacyjny wykryje błąd dysku podczas rozruchu, w przypadku używania identyfikatora UUID w danej lokalizacji nie zostanie zainstalowany nieprawidłowy dysk. Do pozostałych dysków danych zostałyby w takiej sytuacji przypisane te same identyfikatory urządzeń. Identyfikator UUID nowego dysku możesz znaleźć za pomocą narzędzia blkid
:
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"
Uwaga
Nieprawidłowe edytowanie pliku /etc/fstab
może uniemożliwić rozruch systemu. Jeśli nie masz pewności, jak to zrobić, sprawdź informacje na temat prawidłowego edytowania tego pliku w dokumentacji dystrybucji. Zaleca się również utworzenie kopii zapasowej /etc/fstab
pliku przed edycją.
Następnie otwórz /etc/fstab
plik w edytorze tekstów. Dodaj wiersz na końcu pliku, używając wartości UUID dla urządzenia /dev/sdc1
, które zostało utworzone w poprzednich krokach, oraz punktu montowania /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:
echo "UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e /datadrive xfs defaults,nofail 1 2" >> /etc/fstab
Uwaga
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 w trakcie uruchamiania nie można zamontować dysku. Aby uzyskać więcej informacji na temat tych parametrów, zapoznaj się z dokumentacją dystrybucji.
Opcja nofail gwarantuje, że maszyna wirtualna zostanie uruchomiona, nawet jeśli 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 maszyny wirtualnej Azure może służyć do dostępu do konsoli maszyny wirtualnej, jeśli zmodyfikowanie fstab spowodowało 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 wykorzystanej przestrzeni dyskowej, takich jak niezarządzane dyski standardowe i migawki dysków.
Istnieją dwa sposoby włączania obsługi TRIM w maszynie wirtualnej z systemem Linux. Jak zwykle, skonsultuj się z dystrybucją w celu uzyskania zalecanego podejścia.
Użyj opcji montowania
discard
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:
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 są umieszczone w LUN 0 i LUN 1 (w szczegółach danych wyjściowych, pierwsza kolumna lsscsi
[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
Wartość platformy Azure host
wynosi 5 w tych przykładach, ale może się to różnić w zależności od wybranego typu przestrzeni magazynowej.
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 sprawdzić, czy masz dysk w numerze LUN 0. - Jeśli dysk nie jest poprawnie wyświetlany na maszynie wirtualnej, sprawdź, czy dysk istnieje w numerze LUN 0.
Następne kroki
- Aby upewnić się, że maszyna wirtualna z systemem Linux jest poprawnie skonfigurowana, zapoznaj się z zaleceniami dotyczącymi optymalizacji wydajności maszyny z systemem Linux.
- Zwiększ pojemność magazynu, dodając więcej dysków i konfigurując macierz RAID pod kątem dodatkowej wydajności.