Поделиться через


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

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

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

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

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

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

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

При развертывании диска данных с несколькими дисками данных на виртуальной машине может быть трудно связать номера логических единиц 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 уровня "Премиум" версии 2 или "Ультра".

Если диск "Стандартный HDD", "Стандартный SSD" или "Премиум SSD" составляет 4 ТиБ или меньше, деактивируйте вашу виртуальную машину и отсоедините диск перед его расширением свыше 4 ТиБ. Если один из этих типов дисков уже больше 4 ТиБ, его можно развернуть, не переключив виртуальную машину и отсоединив диск.

  • Поддерживается только для дисков данных.
  • Не поддерживается для общих дисков.
  • Необходимо установить и использовать один из следующих вариантов:
  • Недоступно на некоторых классических виртуальных машинах. Используйте этот скрипт, чтобы получить список классических продуктов виртуальной машины, которые поддерживают расширение без простоя.

Расширение с использованием Ultra-дисков и SSD 2-го уровня "Премиум"

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

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

В следующих регионах можно развернуть виртуальные машины, использующие контроллеры NVMe с дисками Категории "Ультра" или SSD уровня "Премиум" версии 2 без простоя. Используйте портал Azure, Azure CLI или модуль Azure PowerShell:

  • Юго-Восточная Азия
  • Бразилия (Юг)
  • Центральная Канада
  • Западно-Центральная Германия
  • Центральная Индия (в настоящее время не поддерживается на виртуальных машинах версии 6)

В следующих регионах можно развернуть виртуальные машины, использующие контроллеры NVMe с дисками Категории "Ультра" или SSD уровня "Премиум" версии 2 без простоя. Используйте только Azure CLI или модуль Azure PowerShell. В настоящее время нельзя использовать портал Azure:

  • Восточная Азия
  • Западная центральная часть США (в настоящее время не поддерживается на виртуальных машинах V6)

Разрешите до 10 минут правильного размера, отражаемого на виртуальных машинах Windows и виртуальных машинах Linux. Для виртуальных машин Linux необходимо выполнить функцию повторного сканирования Linux. Для виртуальной машины Windows, которая не имеет рабочей нагрузки, необходимо выполнить функцию повторного сканирования Windows. Вы можете выполнить повторное сканирование сразу, но если время находится в течение 10 минут, может потребоваться повторно выполнить повторное сканирование, чтобы отобразить правильный размер.

Расширение управляемого диска 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
    

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

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

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

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

Для изменения размера разделов можно использовать множество средств. Средства, описанные в оставшейся части этой статьи, совпадают с теми, которые используют определенные автоматизированные процессы, такие как cloud-init. Как описано здесь, средство growpart с пакетом gdisk обеспечивает универсальную совместимость с дисками 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 как универсальные, которые могут применяться к любому дистрибутиву, но, как правило, они соответствуют соглашениям наименованного поставщика на рынке. Ознакомьтесь с документацией от 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
       }
   }
}