Rozszerzanie wirtualnych dysków twardych na maszynie wirtualnej z systemem Linux

Uwaga

W tym artykule odwołuje się do systemu CentOS — dystrybucji systemu Linux, która zbliża się do stanu zakończenia życia (EOL). Rozważ odpowiednie użycie i zaplanuj. Aby uzyskać więcej informacji, zobacz wskazówki dotyczące zakończenia życia systemu CentOS.

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

W tym artykule opisano sposób rozszerzania dysków zarządzanych dla maszyny wirtualnej z systemem Linux. Możesz dodać dyski danych, aby zapewnić dodatkowe miejsce 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 rozmiar do 2 TiB. Jeśli potrzebujesz więcej niż 2 TiB, utwórz i dołącz dyski danych i użyj ich do przechowywania 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, typ tabeli partycji dysku (GPT lub MBR) będzie obsługiwać nowy rozmiar i upewnij się, że kopia zapasowa danych jest wykonywana 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

W przypadku rozszerzania dysku danych, gdy na maszynie wirtualnej znajduje się kilka dysków danych, może być trudno powiązać 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 df polecenia pokazują ścieżkę urządzenia niezależnie od tego, czy dysk jest zainstalowany przez ścieżkę urządzenia, czy (preferowany) identyfikator UUID w pliku fstab. Zwróć również uwagę na kolumnę Typ wskazującą format systemu plików. Jest to ważne później.

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

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 cofnięcia przydziału maszyny wirtualnej. Ustawienie pamięci podręcznej hosta dysku nie zmienia się, czy można rozwinąć dysk danych bez cofnięcia przydziału maszyny wirtualnej.

Ta funkcja ma następujące ograniczenia:

  • Obsługiwane tylko w przypadku dysków danych.
  • Jeśli dysk ma wielkość 4 TiB lub mniej, należy cofnąć przydział maszyny wirtualnej i odłączyć dysk przed rozszerzeniem go do rozmiaru większego niż 4 TiB. Jeśli dysk jest większy niż 4 TiB, można go rozszerzyć bez cofania przydziału maszyny wirtualnej i odłączania dysku.
  • Nieobsługiwane w przypadku dysków w warstwie Ultra lub dysków SSD w warstwie Premium w wersji 2.
  • Nieobsługiwane w przypadku dysków udostępnionych.
  • Zainstaluj jedną z następujących opcji:
  • Niedostępne na niektórych klasycznych maszynach wirtualnych. Użyj tego skryptu , aby uzyskać listę klasycznych jednostek SKU maszyn wirtualnych, które obsługują rozszerzanie bez przestojów.

Rozwijanie dysku zarządzanego platformy Azure

Upewnij się, że masz zainstalowany najnowszy interfejs wiersza polecenia platformy Azure i zalogowano się do konta platformy 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 przykładowe nazwy parametrów, takie jak myResourceGroup i myVM własnymi wartościami.

Ważne

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

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

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

    Uwaga

    Aby rozszerzyć wirtualny dysk twardy, należy cofnąć przydział maszyny wirtualnej. 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ą polecenia 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,Gb:diskSizeGb,Tier:accountType}' \
        --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
    

    Uwaga

    Po rozwinięciu dysku zarządzanego zaktualizowany rozmiar jest zaokrąglany do najbliższego rozmiaru dysku zarządzanego. Aby uzyskać tabelę dostępnych rozmiarów dysków zarządzanych i warstw, zobacz Azure Dyski zarządzane Overview — Pricing and Billing (Omówienie usługi Azure Dyski zarządzane — cennik i rozliczenia).

  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

Uwaga

Chociaż istnieje wiele narzędzi, które mogą być używane do przeprowadzania zmiany rozmiaru partycji, narzędzia opisane w pozostałej części tego dokumentu są tymi samymi narzędziami używanymi przez niektóre zautomatyzowane procesy, takie jak cloud-init. Jak opisano tutaj, growpart narzędzie z pakietem gdisk zapewnia uniwersalną zgodność z dyskami tabeli partycji GUID (GPT), ponieważ starsze wersje niektórych narzędzi, takie jak fdisk nie obsługują GPT.

Wykrywanie zmienionego rozmiaru dysku

Jeśli dysk danych został rozszerzony bez przestoju przy użyciu procedury wymienionej wcześniej, rozmiar dysku nie zostanie zmieniony, dopóki urządzenie nie zostanie ponownie zeskanowane, co zwykle dzieje się tylko podczas procesu rozruchu. To ponowne skanowanie można wywołać na żądanie, wykonując poniższą procedurę. W tym przykładzie wykryliśmy użycie metod w tym dokumencie, że 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 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. 1 Wstaw znak do pliku ponownego skanowania dla tego urządzenia. Zwróć uwagę na odwołanie do sda. Spowoduje to zmianę w przypadku zmiany rozmiaru innego urządzenia dyskowego.

    echo 1 | sudo tee /sys/class/block/sda/device/rescan
    
  3. Sprawdź, czy nowy rozmiar dysku został rozpoznany

    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 zwiększania rozmiaru woluminu na poziomie systemu operacyjnego. Jeśli dysk rozwinięty jest dyskiem danych, skorzystaj z poprzednich wskazówek dotyczących identyfikowania urządzenia dysku danych i postępuj zgodnie z tymi instrukcjami jako wytyczne, podstawiając urządzenie dysku danych (na przykład /dev/sda), numery partycji, nazwy woluminów, punkty instalacji i formaty systemu plików, w razie potrzeby.

Wszystkie wskazówki dotyczące systemu operacyjnego Linux powinny być wyświetlane jako ogólne i mogą być stosowane w dowolnej dystrybucji, ale ogólnie są zgodne z konwencjami nazwanego wydawcy platformy handlowej. Zapoznaj się z dokumentami red hat dotyczącymi wymagań dotyczących pakietu w dowolnej dystrybucji, która zapewnia zgodność z systemem Red Hat, takimi jak CentOS i Oracle.

Zwiększanie rozmiaru dysku systemu operacyjnego

Poniższe instrukcje dotyczą zatwierdzonych dystrybucji systemu Linux.

Uwaga

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 systemu operacyjnego i systemów plików zostanie automatycznie rozszerzona w celu wykorzystania całego wolnego ciągłego miejsca na dysku głównym przez pakiet cloud-init, pod warunkiem, że jest trochę wolnego miejsca na operację zmiany rozmiaru. Dla tej sytuacji sekwencja jest po prostu

  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 systemu operacyjnego został zmieniony z portalu na 100 GB. System plików /dev/sda1 zainstalowany 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:~#

Rozszerzanie bez przestoju — obsługa klasycznej jednostki SKU maszyny wirtualnej

Jeśli używasz klasycznej jednostki SKU maszyny wirtualnej, może nie obsługiwać rozszerzania dysków bez przestojów.

Użyj następującego skryptu programu PowerShell, aby określić, które jednostki SKU maszyn wirtualnych są dostępne w następujących usługach:

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
       }
   }
}