Udostępnij za pośrednictwem


Zwiększanie wirtualnych dysków twardych na maszynie wirtualnej z systemem Linux

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

W tym artykule opisano rozszerzanie dysków systemu operacyjnego i dysków danych dla maszyny wirtualnej z systemem Linux. Możesz dodać dyski danych , aby zapewnić więcej miejsca do magazynowania, a także rozszerzyć istniejący dysk danych. Domyślny rozmiar wirtualnego dysku twardego dla systemu operacyjnego to zazwyczaj 30 GB na maszynie wirtualnej z systemem Linux na platformie Azure. W tym artykule opisano rozszerzanie dysków systemu operacyjnego lub dysków danych. Nie można rozszerzyć rozmiaru woluminów rozłożonych.

Dysk systemu operacyjnego ma maksymalną pojemność 4095 GiB. Jednak wiele systemów operacyjnych jest domyślnie podzielonych na partycje z głównym rekordem rozruchowym (MBR ). MBR ogranicza użyteczny rozmiar do 2 TiB. Jeśli potrzebujesz więcej niż 2 TiB, rozważ dołączenie dysków danych do magazynu danych. Jeśli musisz przechowywać dane na dysku systemu operacyjnego i wymagać dodatkowego miejsca, przekonwertuj je na tabelę partycji GUID (GPT).

Ostrzeżenie

Zawsze upewnij się, że system plików jest w dobrej kondycji, a typ tabeli partycji dysku (GPT lub MBR) może obsługiwać nowy rozmiar. Wykonaj kopię zapasową danych przed wykonaniem operacji rozszerzania dysku. Aby uzyskać więcej informacji, zobacz przewodnik Szybki start dotyczący usługi Azure Backup.

Identyfikowanie obiektu dysku danych platformy Azure w systemie operacyjnym

Po rozwinięciu dysku danych z kilkoma dyskami danych na maszynie wirtualnej może być trudno powiązać numery jednostek logicznych (LUN) platformy Azure z urządzeniami z systemem Linux. Jeśli dysk systemu operacyjnego wymaga rozszerzenia, jest on wyraźnie oznaczony w witrynie Azure Portal jako dysk systemu operacyjnego.

Zacznij od zidentyfikowania relacji między użyciem dysku, punktem instalacji i urządzeniem za df pomocą polecenia .

df -Th
Filesystem                Type      Size  Used Avail Use% Mounted on
/dev/sda1                 xfs        97G  1.8G   95G   2% /
<truncated>
/dev/sdd1                 ext4       32G   30G  727M  98% /opt/db/data
/dev/sde1                 ext4       32G   49M   30G   1% /opt/db/log

W tym miejscu widać na przykład, że /opt/db/data system plików jest prawie pełny i znajduje się na /dev/sdd1 partycji. Dane wyjściowe polecenia df pokazują ścieżkę urządzenia, czy dysk jest zainstalowany przy użyciu ścieżki urządzenia lub (preferowanego) identyfikatora UUID w pliku fstab. Zwróć uwagę na kolumnę Type (Typ), która wskazuje format systemu plików. Format jest ważny później.

Teraz znajdź jednostkę LUN, która jest skorelowana /dev/sdd , sprawdzając zawartość elementu /dev/disk/azure/scsi1. Dane wyjściowe z następującego ls polecenia pokazują, że urządzenie znane jako /dev/sdd w systemie operacyjnym Linux jest zlokalizowane pod LUN1 w portalu Azure.

sudo ls -alF /dev/disk/azure/scsi1/
total 0
drwxr-xr-x. 2 root root 140 Sep  9 21:54 ./
drwxr-xr-x. 4 root root  80 Sep  9 21:48 ../
lrwxrwxrwx. 1 root root  12 Sep  9 21:48 lun0 -> ../../../sdc
lrwxrwxrwx. 1 root root  12 Sep  9 21:48 lun1 -> ../../../sdd
lrwxrwxrwx. 1 root root  13 Sep  9 21:48 lun1-part1 -> ../../../sdd1
lrwxrwxrwx. 1 root root  12 Sep  9 21:54 lun2 -> ../../../sde
lrwxrwxrwx. 1 root root  13 Sep  9 21:54 lun2-part1 -> ../../../sde1

Rozszerzanie dysku zarządzanego platformy Azure

Rozwijanie bez przestoju

Dyski zarządzane można rozszerzyć bez dealokacji maszyny wirtualnej. Ustawienie pamięci podręcznej hosta dysku nie wpływa na to, czy można rozszerzyć dysk danych bez zwalniania zasobów maszyny wirtualnej.

Ta funkcja ma następujące ograniczenia.

Ważne

To ograniczenie nie dotyczy dysków Premium SSD v2 ani dysków Ultra.

Jeśli dysk Standard HDD, Standard SSD lub Premium SSD ma 4 TiB lub mniej, zdezaktywuj maszynę wirtualną i odłącz dysk przed jego rozszerzeniem poza 4 TiB. Jeśli jeden z tych typów dysków jest już większy niż 4 TiB, można go rozszerzyć bez zwalniania zasobów VM i odłączania dysku.

  • Jest obsługiwany tylko w przypadku dysków danych.
  • Nie jest obsługiwana w przypadku dysków udostępnionych.
  • Należy zainstalować i używać jedną z następujących opcji:
  • Nie jest dostępna na niektórych klasycznych maszynach wirtualnych. Użyj tego skryptu , aby uzyskać listę klasycznych produktów maszyn wirtualnych, które obsługują rozszerzanie się bez przestojów.

Rozszerzanie za pomocą dysków Ultra i dysków SSD Premium v2

Rozszerzanie dysków Ultra Disks i dysków Premium SSD v2 bez przestojów ma następujące dodatkowe ograniczenia:

  • Nie można rozwinąć dysku, gdy na tym dysku występuje również kopia danych w tle . Przykładem na to jest sytuacja, gdy dysk jest wypełniany z migawek.
  • Maszyny wirtualne można rozszerzać przy użyciu kontrolerów NVMe z dyskami Ultra lub dyskami SSD Premium v2 bez przestojów w ramach tej publicznej wersji zapoznawczej. Ponieważ ta wersja jest publiczną wersją zapoznawcza, należy jej używać tylko do testowania funkcjonalności rozszerzania bez przestojów. Nie rozszerzaj maszyn wirtualnych w środowisku produkcyjnym.

W następujących regionach można rozszerzyć maszyny wirtualne korzystające z kontrolerów NVMe z dyskami Ultra lub Premium SSD v2 bez przestojów. Użyj witryny Azure Portal, interfejsu wiersza polecenia platformy Azure lub modułu Azure PowerShell:

  • Azja Południowo-Wschodnia
  • Brazylia Południe
  • Kanada Środkowa
  • Niemcy Zachodnio-środkowe
  • Indie Środkowe (obecnie nieobsługiwane na maszynach wirtualnych V6)

W następujących regionach można rozszerzyć maszyny wirtualne korzystające z kontrolerów NVMe z dyskami Ultra lub Premium SSD v2 bez przestojów. Użyj tylko interfejsu wiersza polecenia platformy Azure lub modułu programu Azure PowerShell. Obecnie nie można używać witryny Azure Portal:

  • Azja Wschodnia
  • Centralno-zachodnie USA (obecnie nieobsługiwane na wirtualnych maszynach V6)

Poczekaj do 10 minut, aby prawidłowy rozmiar był odzwierciedlany na maszynach wirtualnych z systemem Windows i maszynach wirtualnych z systemem Linux. W przypadku maszyn wirtualnych z systemem Linux należy wykonać funkcję ponownego skanowania systemu Linux. W przypadku maszyny wirtualnej z systemem Windows, która nie ma obciążenia, należy wykonać funkcję ponownego skanowania systemu Windows. Możesz natychmiast ponownie wykonać skanowanie, ale jeśli czas wynosi 10 minut, może być konieczne ponowne skanowanie, aby wyświetlić prawidłowy rozmiar.

Rozwijanie dysku zarządzanego platformy Azure

Upewnij się, że masz zainstalowany najnowszy Azure CLI i jesteś zalogowany do konta Azure przy użyciu polecenia az login.

Ten artykuł wymaga istniejącej maszyny wirtualnej na platformie Azure z co najmniej jednym dyskiem danych dołączonym i przygotowanym. Jeśli nie masz jeszcze maszyny wirtualnej, której możesz użyć, zobacz Tworzenie i przygotowywanie maszyny wirtualnej z dyskami danych.

W poniższych przykładach zastąp nazwy parametrów zastępczych, takie jak myResourceGroup i myVM własnymi wartościami.

Ważne

Jeśli dysk spełnia wymagania opisane w temacie Rozwiń bez przestoju, możesz pominąć kroki 1 i 3.

Zmniejszanie istniejącego dysku nie jest obsługiwane i może spowodować utratę danych.

Po rozwinięciu dysków rozwiń wolumin w systemie operacyjnym, aby skorzystać z większego dysku.

  1. Nie można wykonywać operacji na wirtualnych dyskach twardych z uruchomioną maszyną wirtualną. Zwolnij zasoby maszyny wirtualnej przy użyciu polecenia az vm deallocate. Poniższy przykład dealokuje maszynę wirtualną o nazwie myVM w grupie zasobów o nazwie myResourceGroup:

    az vm deallocate --resource-group myResourceGroup --name myVM
    

    Aby rozszerzyć wirtualny dysk twardy, należy zdealokować maszynę wirtualną. Zatrzymanie maszyny wirtualnej za pomocą az vm stop polecenia nie zwalnia zasobów obliczeniowych. Aby zwolnić zasoby obliczeniowe, użyj polecenia az vm deallocate.

  2. Wyświetl listę dysków zarządzanych w grupie zasobów za pomocą az disk list. Poniższy przykład przedstawia listę dysków zarządzanych w grupie zasobów o nazwie myResourceGroup:

    az disk list \
        --resource-group myResourceGroup  \
        --query '[*].{Name:name,size:diskSizeGB,Tier:sku.tier}' \
        --output table
    

    Rozwiń wymagany dysk za pomocą polecenia az disk update. Poniższy przykład rozszerza dysk zarządzany o nazwie myDataDisk na 200 GB:

    az disk update \
        --resource-group myResourceGroup \
        --name myDataDisk \
        --size-gb 200
    

    Po rozwinięciu dysku zarządzanego zaktualizowany rozmiar jest zaokrąglany do najbliższego rozmiaru dysku zarządzanego.

  3. Uruchom maszynę wirtualną za pomocą polecenia az vm start. Poniższy przykład uruchamia maszynę wirtualną o nazwie myVM w grupie zasobów o nazwie myResourceGroup:

    az vm start --resource-group myResourceGroup --name myVM
    

Rozszerzanie partycji dysku i systemu plików

Do zmiany rozmiaru partycji można użyć wielu narzędzi. Narzędzia opisane w dalszej części tego artykułu są takie same, jak w przypadku niektórych zautomatyzowanych procesów, takich jak cloud-init. Jak opisano tutaj, narzędzie growpart z pakietem gdisk zapewnia uniwersalną zgodność z dyskami GPT, ponieważ starsze wersje niektórych narzędzi, takie jak fdisk, nie obsługiwały GPT.

Wykrywanie zmienionego rozmiaru dysku

Jeśli użyto wcześniej wymienionej procedury w celu rozszerzenia dysku danych bez przestoju, zgłoszony rozmiar dysku nie zmieni się, dopóki urządzenie nie zostanie ponownie przeskanowane. Ponowne skanowanie zwykle odbywa się tylko podczas procesu rozruchu. Aby wywołać to ponowne skanowanie na żądanie, wykonaj poniższą procedurę. Jeśli używasz metod w tym artykule, zwróć uwagę, że w tym przykładzie dysk danych jest obecnie /dev/sda i został zmieniony z 256 GiB na 512 GiB.

  1. Zidentyfikuj aktualnie rozpoznany rozmiar w pierwszym wierszu danych wyjściowych z fdisk -l /dev/sda.

    sudo fdisk -l /dev/sda
    
    Disk /dev/sda: 256 GiB, 274877906944 bytes, 536870912 sectors
    Disk model: Virtual Disk
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    Disklabel type: dos
    Disk identifier: 0x43d10aad
    
    Device     Boot Start       End   Sectors  Size Id Type
    /dev/sda1        2048 536870878 536868831  256G 83 Linux
    
  2. Wstaw znak 1 do pliku ponownego skanowania dla tego urządzenia. Zwróć uwagę na odwołanie do sda w przykładzie. Identyfikator dysku zmienia się, jeśli zmienia się rozmiar innego urządzenia dysku.

    echo 1 | sudo tee /sys/class/block/sda/device/rescan
    
  3. Sprawdź, czy nowy rozmiar dysku jest teraz rozpoznawany.

    sudo fdisk -l /dev/sda
    
    Disk /dev/sda: 512 GiB, 549755813888 bytes, 1073741824 sectors
    Disk model: Virtual Disk
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    Disklabel type: dos
    Disk identifier: 0x43d10aad
    
    Device     Boot Start       End   Sectors  Size Id Type
    /dev/sda1        2048 536870878 536868831  256G 83 Linux
    

W pozostałej części tego artykułu użyto dysku systemu operacyjnego dla przykładów procedury w celu zwiększenia rozmiaru woluminu na poziomie systemu operacyjnego. Jeśli rozszerzony dysk jest dyskiem danych, użyj wcześniejszych wskazówek, aby zidentyfikować urządzenie dysku danych. Postępuj zgodnie z tymi instrukcjami jako wskazówki. Zastąp urządzenie dysku danych (na przykład /dev/sda), numery partycji, nazwy woluminów, punkty instalacji i formaty systemu plików, w razie potrzeby.

Należy wziąć pod uwagę wszystkie wskazówki dotyczące systemu operacyjnego Linux jako ogólne i mogą być stosowane w dowolnej dystrybucji, ale zazwyczaj są zgodne z konwencjami nazwanego wydawcy platformy handlowej. Zapoznaj się z dokumentacją oprogramowania Red Hat, aby zapoznać się z wymaganiami dotyczącymi pakietów w dowolnej dystrybucji opartej na systemie Red Hat lub które twierdzą zgodność oprogramowania Red Hat.

Zwiększanie rozmiaru dysku systemu operacyjnego

Poniższe instrukcje dotyczą zatwierdzonych dystrybucji systemu Linux.

Przed kontynuowaniem utwórz pełną kopię zapasową maszyny wirtualnej lub wykonaj co najmniej migawkę dysku systemu operacyjnego.

W systemie Ubuntu 16.x i nowszych partycja główna dysku systemowego i system plików są automatycznie rozszerzane, aby korzystać ze wszystkich wolnych, sąsiadujących miejsc na dysku głównym przez cloud-init. Dla operacji zmiany rozmiaru musi być dostępna niewielka ilość wolnego miejsca. W takim przypadku sekwencja to:

  1. Zwiększ rozmiar dysku systemu operacyjnego zgodnie z wcześniejszym opisem.
  2. Uruchom ponownie maszynę wirtualną, a następnie uzyskaj dostęp do maszyny wirtualnej przy użyciu konta użytkownika głównego .
  3. Sprawdź, czy na dysku systemu operacyjnego jest teraz wyświetlany zwiększony rozmiar systemu plików.

Jak pokazano w poniższym przykładzie, rozmiar dysku systemowego został zmieniony w portalu na 100 GB. System plików /dev/sda1 zamontowany na / teraz wyświetla 97 GB.

df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
udev           devtmpfs  314M     0  314M   0% /dev
tmpfs          tmpfs      65M  2.3M   63M   4% /run
/dev/sda1      ext4       97G  1.8G   95G   2% /
tmpfs          tmpfs     324M     0  324M   0% /dev/shm
tmpfs          tmpfs     5.0M     0  5.0M   0% /run/lock
tmpfs          tmpfs     324M     0  324M   0% /sys/fs/cgroup
/dev/sda15     vfat      105M  3.6M  101M   4% /boot/efi
/dev/sdb1      ext4       20G   44M   19G   1% /mnt
tmpfs          tmpfs      65M     0   65M   0% /run/user/1000
user@ubuntu:~#

Rozszerz bez przestoju obsługę SKU klasycznej maszyny wirtualnej

Jeśli używasz klasycznej SKU maszyny wirtualnej, może nie mieć wsparcia dla rozszerzania dysków bez przerw w działaniu.

Użyj następującego skryptu programu PowerShell, aby określić, z którymi jednostkami SKU maszyn wirtualnych jest dostępny.

Connect-AzAccount
$subscriptionId="yourSubID"
$location="desiredRegion"
Set-AzContext -Subscription $subscriptionId
$vmSizes=Get-AzComputeResourceSku -Location $location | where{$_.ResourceType -eq 'virtualMachines'}

foreach($vmSize in $vmSizes){
    foreach($capability in $vmSize.Capabilities)
    {
       if(($capability.Name -eq "EphemeralOSDiskSupported" -and $capability.Value -eq "True") -or ($capability.Name -eq "PremiumIO" -and $capability.Value -eq "True") -or ($capability.Name -eq "HyperVGenerations" -and $capability.Value -match "V2"))
        {
            $vmSize.Name
       }
   }
}