Расширение виртуальных жестких дисков на виртуальной машине 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 или "Ультра".
- Не поддерживается для общих дисков.
- Установите и используйте любой из следующих вариантов:
- Последняя версия Azure CLI
- последняя версия модуля Azure PowerShell
- портал Azure.
- Или шаблон Azure Resource Manager с версией API,
2021-04-01
которая или более позднюю.
- Недоступно на некоторых классических виртуальных машинах. Используйте этот скрипт , чтобы получить список классических номеров SKU виртуальных машин, которые поддерживают расширение без простоя.
Развертывание с помощью диска "Ультра" и SSD уровня "Премиум" версии 2
Расширение дисков категории "Ультра" и ssd уровня "Премиум" версии 2 имеет следующие дополнительные ограничения:
- Вы не можете развернуть диск, пока фоновая копия данных также происходит на этом диске, например, когда диск гидратируется из моментальных снимков.
- Невозможно развернуть виртуальную машину, использующую контроллеры NVMe для дисков категории "Ультра" или SSD уровня "Премиум" версии 2 без простоя.
Доступность в регионах
Изменение размера дисков ценовой категории "Ультра" и дисков SSD уровня "Премиум" версии 2 в настоящее время доступно в следующих регионах:
- Центральная Австралия 2
- Восточная Австралия
- Brazil South
- Восточная Азия
- Северная Германия
- JIO Западная Индия
- Восточная Япония
- Республика Корея, центральный регион
- Республика Корея, южный регион
- Центрально-северная часть США
- Северная Европа
- Западная Норвегия
- Центральная Польша
- Центральный Катар
- Западная часть ЮАР
- Юго-Восточная Азия
- Юго-Восточная Азия
- Южная Швеция
- Западная Швейцария
- Центральная часть ОАЭ.
- западная часть Соединенного Королевства
- центрально-западная часть США
- Индия (запад)
Развертывание управляемого диска Azure
Обязательно установите последнюю версию Azure CLI и войдите в учетную запись Azure с помощью команды az login.
Для этой статьи потребуется существующая виртуальная машина в Azure с хотя бы одним подключенным и подготовленным диском данных. Если у вас еще нет виртуальной машины, которую можно использовать, см. статью "Создание и подготовка виртуальной машины с дисками данных".
В следующих примерах замените имена параметров собственными значениями, например myResourceGroup и myVM.
Внимание
Если диск соответствует требованиям, предъявляемым к функции Расширение без простоя, можно пропустить шаги 1 и 3.
Сжатие существующего диска не поддерживается и может привести к потере данных.
После расширения дисков необходимо развернуть том в операционной системе, чтобы воспользоваться преимуществами большего диска.
Нельзя выполнять операции с виртуальными жесткими дисками на работающей виртуальной машине. Отмените подготовку виртуальной машины, выполнив команду az vm deallocate. В следующем примере отменяется распределение виртуальной машины myVM, входящей в группу ресурсов с именем myResourceGroup.
az vm deallocate --resource-group myResourceGroup --name myVM
Примечание.
Для расширения виртуального жесткого диска следует отменить распределение виртуальной машины. Остановка виртуальной машины
az vm stop
с не освобождает вычислительные ресурсы. Чтобы освободить вычислительные ресурсы, используйтеaz vm deallocate
.Просмотрите список управляемых дисков в группе ресурсов, выполнив команду 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".
Запустите виртуальную машину, выполнив команду 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 ГиБ.
Определение распознанного в настоящее время размера в первой строке выходных данных
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
1
Вставьте символ в файл повторного сканирования для этого устройства. Обратите внимание на ссылку на sda в примере. Идентификатор диска изменится, если другое дисковое устройство было изменено.echo 1 | sudo tee /sys/class/block/sda/device/rescan
Убедитесь, что новый размер диска теперь распознается
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, если для операции изменения размера будет немного свободного места. В этом случае последовательность просто
- Увеличьте размер диска ОС, как описано ранее
- Перезапустите виртуальную машину и получите доступ к виртуальной машине с помощью учетной записи корневого пользователя.
- Убедитесь в том, что размер файловой системы на диске ОС увеличился.
Как показано в следующем примере, диск ОС был изменен с портала на 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
}
}
}