Расширение виртуальных жестких дисков на виртуальной машине Linux

Область применения: ✔️ Виртуальные машины Linux ✔️ Гибкие масштабируемые наборы

В этой статье рассматриваются расширение дисков ОС и дисков данных для виртуальной машины Linux. Можно добавить диски данных, чтобы обеспечить больше места в хранилище, а также развернуть существующий диск данных. Как правило, размер виртуального жесткого диска по умолчанию для операционной системы на виртуальной машине Linux в Azure составляет 30 ГБ. В этой статье рассматривается расширение дисков ОС или дисков данных. Невозможно развернуть размер полосатых томов.

Диск ОС имеет максимальную емкость 4095 ГиБ. Однако многие операционные системы секционируются с основной загрузочной записью (MBR) по умолчанию. Формат MBR ограничивает доступный размер до 2 ТиБ. Если требуется более 2 ТиБ, рекомендуется подключить диски данных для хранилища данных. Если необходимо хранить данные на диске ОС и требовать дополнительного места, преобразуйте его в таблицу секций GUID (GPT).

Предупреждение

Всегда убедитесь, что файловая система находится в работоспособном состоянии, тип таблицы секций диска (GPT или MBR) будет поддерживать новый размер и обеспечить резервное копирование данных перед выполнением операций расширения диска. Дополнительные сведения см. в кратком руководстве Azure по резервному копированию.

Определение объекта диска данных Azure в операционной системе

При расширении диска данных при наличии нескольких дисков данных на виртуальной машине может быть трудно связать luNs Azure с устройствами Linux. Если диск ОС нуждается в расширении, он четко помечен в портал Azure как диск ОС.

Сначала определите связь между использованием диска, точкой подключения и устройством df с помощью команды.

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

Здесь мы видим, например, /opt/db/data файловую систему почти полностью и находится на секции /dev/sdd1 . В выходных df данных показан путь к устройству, подключен ли диск с помощью пути устройства или (предпочтительного) UUID в fstab. Кроме того, запишите столбец Type, указывающий формат файловой системы. Формат важен позже.

Теперь найдите LUN, который коррелирует с /dev/sdd /dev/disk/azure/scsi1содержимым. Выходные данные следующей ls команды показывают, что устройство, известное как /dev/sdd в ОС Linux, находится в LUN1 при просмотре в портал 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

Развертывание управляемого диска Azure

Расширение без простоя

Вы можете развернуть управляемые диски без освобождения виртуальной машины. Параметр кэша узла диска не изменяет, можно ли развернуть диск данных без освобождения виртуальной машины.

Сейчас эта функция имеет следующие ограничения:

  • Поддерживается только для дисков данных.
  • Если диск SSD уровня "Стандартный", "Стандартный" или "Премиум" составляет 4 ТиБ или меньше, разрешите виртуальную машину и отсоедините диск перед расширением до 4 ТиБ. Если один из этих типов дисков уже больше 4 ТиБ, его можно развернуть, не переключив виртуальную машину и отсоединив диск. Это не относится к дискам SSD уровня "Премиум" версии 2 или "Ультра".
  • Не поддерживается для общих дисков.
  • Установите и используйте любой из следующих вариантов:
  • Недоступно на некоторых классических виртуальных машинах. Используйте этот скрипт , чтобы получить список классических номеров SKU виртуальных машин, которые поддерживают расширение без простоя.

Развертывание с помощью диска "Ультра" и SSD уровня "Премиум" версии 2

Расширение дисков категории "Ультра" и ssd уровня "Премиум" версии 2 имеет следующие дополнительные ограничения:

  • Вы не можете развернуть диск, пока фоновая копия данных также происходит на этом диске, например, когда диск гидратируется из моментальных снимков.
  • Невозможно развернуть виртуальную машину, использующую контроллеры NVMe для дисков категории "Ультра" или SSD уровня "Премиум" версии 2 без простоя.

Доступность в регионах

Изменение размера дисков категории "Ультра" и дисков SSD уровня "Премиум" версии 2 в настоящее время доступно во всех поддерживаемых регионах SSD уровня "Премиум" версии 2 и "Ультра", за исключением следующих:

  • Западная часть США 2
  • Западная Европа
  • Восточная часть США

Развертывание управляемого диска Azure

Обязательно установите последнюю версию Azure CLI и войдите в учетную запись Azure с помощью команды az login.

Для этой статьи потребуется существующая виртуальная машина в Azure с хотя бы одним подключенным и подготовленным диском данных. Если у вас еще нет виртуальной машины, которую можно использовать, см. статью "Создание и подготовка виртуальной машины с дисками данных".

В следующих примерах замените имена параметров собственными значениями, например myResourceGroup и myVM.

Внимание

Если диск соответствует требованиям, предъявляемым к функции Расширение без простоя, можно пропустить шаги 1 и 3.

Сжатие существующего диска не поддерживается и может привести к потере данных.

После расширения дисков необходимо развернуть том в операционной системе, чтобы воспользоваться преимуществами большего диска.

  1. Нельзя выполнять операции с виртуальными жесткими дисками на работающей виртуальной машине. Отмените подготовку виртуальной машины, выполнив команду az vm deallocate. В следующем примере отменяется распределение виртуальной машины myVM, входящей в группу ресурсов с именем myResourceGroup.

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

    Примечание.

    Для расширения виртуального жесткого диска следует отменить распределение виртуальной машины. Остановка виртуальной машины az vm stop с не освобождает вычислительные ресурсы. Чтобы освободить вычислительные ресурсы, используйте az vm deallocate.

  2. Просмотрите список управляемых дисков в группе ресурсов, выполнив команду az disk list. В следующем примере выводится список управляемых дисков, входящих в группу ресурсов с именем myResourceGroup:

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

    Расширьте диск, выполнив команду az disk update. В следующем примере размер управляемого диска myDataDisk увеличивается до 200 ГБ:

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

    Примечание.

    При расширении управляемого диска его новый размер округляется до ближайшего размера управляемого диска. Таблица доступных размеров и уровней управляемых дисков см. в статье "Общие сведения о выставлении счетов за хранилище дисков Azure".

  3. Запустите виртуальную машину, выполнив команду az vm start. В следующем примере запускается виртуальная машина myVM, входящая в группу ресурсов с именем myResourceGroup.

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

Развертывание раздела диска и файловой системы

Примечание.

Хотя существует множество средств, которые могут использоваться для изменения размера секций, средства, описанные в оставшейся части этого документа, являются теми же средствами, которые используются определенными автоматизированными процессами, такими как cloud-init. Как описано здесь, growpart средство с gdisk пакетом обеспечивает универсальную совместимость с дисками таблицы секций GUID (GPT), так как старые версии некоторых средств, таких как fdisk не поддерживает GPT.

Обнаружение измененного размера диска

Если диск данных был развернут без простоя, используя описанную ранее процедуру, размер указанного выше диска не изменяется, пока устройство не будет пересканировано, которое обычно происходит только во время загрузки. Эту повторное сканирование можно вызвать по запросу с помощью следующей процедуры. В этом примере мы находим методы в этом документе, которые диск данных в настоящее время /dev/sda и изменен с 256 ГиБ до 512 ГиБ.

  1. Определение распознанного в настоящее время размера в первой строке выходных данных 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 Вставьте символ в файл повторного сканирования для этого устройства. Обратите внимание на ссылку на sda в примере. Идентификатор диска изменится, если другое дисковое устройство было изменено.

    echo 1 | sudo tee /sys/class/block/sda/device/rescan
    
  3. Убедитесь, что новый размер диска теперь распознается

    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
    

Оставшаяся часть этой статьи использует диск ОС для примеров процедуры увеличения размера тома на уровне ОС. Если развернутый диск является диском данных, используйте предыдущее руководство по идентификации устройства диска данных и следуйте этим инструкциям в качестве руководства, заменив устройство диска данных (например /dev/sda, номера секций, имена томов, точки подключения и форматы файловой системы).

Все рекомендации по ОС Linux должны рассматриваться как универсальные и могут применяться к любому дистрибутиву, но обычно соответствуют соглашениям издателя с именем Marketplace. Ссылка на документы Red Hat для требований к пакету для любого дистрибутива на основе Red Hat или утверждения совместимости Red Hat.

Увеличение размера диска ОС

Следующие инструкции применяются к утвержденным дистрибутивам Linux.

Примечание.

Прежде чем продолжить, сделайте полную резервную копию виртуальной машины или по крайней мере создайте моментальный снимок диска ОС.

В Ubuntu 16.x и более поздней версии корневая секция диска ОС и файловых систем автоматически развертывается, чтобы использовать все свободное непрерывное пространство на корневом диске с помощью cloud-init, если для операции изменения размера будет немного свободного места. В этом случае последовательность просто

  1. Увеличьте размер диска ОС, как описано ранее
  2. Перезапустите виртуальную машину и получите доступ к виртуальной машине с помощью учетной записи корневого пользователя.
  3. Убедитесь в том, что размер файловой системы на диске ОС увеличился.

Как показано в следующем примере, диск ОС был изменен с портала на 100 ГБ. Файловая система /dev/sda1, смонтированная на /, теперь имеет размер 97 ГБ.

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:~#

Расширение без поддержки SKU классической виртуальной машины простоя

Если вы используете классический номер SKU виртуальной машины, он может не поддерживать расширение дисков без простоя.

Используйте следующий скрипт PowerShell для определения доступных номеров SKU виртуальных машин:

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