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


Подготовка VHD Debian для Azure

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

Необходимые компоненты

В этом разделе предполагается, что вы уже установили операционную систему Debian Linux из файла .iso, скачаемого с веб-сайта Debian на виртуальный жесткий диск (VHD). Существует несколько средств для создания VHD-файлов. Hyper-V — это только один пример. Инструкции по использованию Hyper-V см. в разделе "Установка роли Hyper-V" и настройка виртуальной машины.

Замечания по установке

  • Дополнительные советы по подготовке Linux для Azure см . в общих заметках о установке Linux.
  • Более новый формат VHDX не поддерживается в Azure. Диск можно преобразовать в формат VHD с помощью диспетчера Hyper-V или командлета convert-vhd .
  • При установке системы Linux рекомендуется использовать стандартные секции, а не диспетчер логических томов (LVM), который часто используется по умолчанию для многих установок. Использование секций позволяет избежать конфликтов имен LVM с клонированных виртуальных машин, особенно если диск ОС когда-либо должен быть подключен к другой виртуальной машине для устранения неполадок. LVM или RAID также можно использовать на дисках данных.
  • Не настраивайте раздел подкачки на диске с ОС. Можно настроить агент Linux для Azure для создания файла подкачки на временном диске ресурсов. Дополнительные сведения см. в следующих шагах.
  • Размер виртуальной памяти всех виртуальных жестких дисков в Azure должен быть округлен до 1 МБ. При преобразовании из необработанного диска в VHD необходимо убедиться, что размер необработанного диска составляет 1 МБ перед преобразованием. Дополнительные сведения см . в заметках о установке Linux.

Подготовка образа Debian для Azure

Вы можете создать базовый облачный образ Azure Debian с помощью полностью автоматической установки (FAI) облачного построителя образов. Чтобы подготовить изображение без FAI, ознакомьтесь со статьей о универсальных шагах.

Следующие команды установки git и apt были извлечены из репозитория облачных образов Debian. Начните с клонирования репозитория и установки зависимостей:

$ git clone https://salsa.debian.org/cloud-team/debian-cloud-images.git
$ sudo apt install --no-install-recommends ca-certificates debsums dosfstools \
    fai-server fai-setup-storage make python3 python3-libcloud python3-marshmallow \
    python3-pytest python3-yaml qemu-utils udev
$ cd ./debian-cloud-images

Необязательно. Настройте сборку, добавив скрипты (например, скрипты оболочки) в ./config_space/scripts/AZURE.

Пример скрипта для настройки образа

$ mkdir -p ./config_space/scripts/AZURE
$ cat > ./config_space/scripts/AZURE/10-custom <<EOF
#!/bin/bash

\$ROOTCMD bash -c "echo test > /usr/local/share/testing"
EOF
$ sudo chmod 755 ./config_space/scripts/AZURE/10-custom

Префикс любых команд, с которыми $ROOTCMDвы хотите настроить изображение. Он называется chroot $target.

Создание образа Azure Debian

$ make image_[release]_azure_amd64

Эта команда выводит несколько файлов в текущем каталоге, в первую очередь image_[release]_azure_amd64.raw файл изображения.

Преобразуйте необработанный образ в VHD для Azure:

rawdisk="image_[release]_azure_amd64.raw"
vhddisk="image_[release]_azure_amd64.vhd"

MB=$((1024*1024))
size=$(qemu-img info -f raw --output json "$rawdisk" | \
gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}')

rounded_size=$(((($size+$MB-1)/$MB)*$MB))
rounded_size_adjusted=$(($rounded_size + 512))

echo "Rounded Size Adjusted = $rounded_size_adjusted"

sudo qemu-img resize "$rawdisk" $rounded_size
qemu-img convert -f raw -o subformat=fixed,force_size -O vpc "$rawdisk" "$vhddisk"

Этот процесс создает виртуальный жесткий диск image_[release]_azure_amd64.vhd с округленным размером, чтобы его можно было успешно скопировать на диск Azure.

Примечание.

Вместо клонирования репозитория salsa и создания образов локально, текущие стабильные образы можно создавать и загружать из FAI.

После создания стабильного образа VHD Debian и перед отправкой убедитесь, что установлены следующие пакеты:

  • apt-get install hyperv-daemons
  • apt-get install waagent # (необязательно, но рекомендуется для сброса пароля и использования расширений)
  • apt-get install cloud-init

Затем выполните полное обновление:

  • apt-get full-upgrade

Теперь ресурсы Azure должны быть созданы для этого образа. В этом примере используется $rounded_size_adjusted переменная, поэтому она должна находиться в одном процессе оболочки из предыдущего шага.

az group create -l $LOCATION -n $RG

az disk create \
    -n $DISK \
    -g $RG \
    -l $LOCATION \
    --for-upload --upload-size-bytes "$rounded_size_adjusted" \
    --sku standard_lrs --hyper-v-generation V1

ACCESS=$(az disk grant-access \
    -n $DISK -g $RG \
    --access-level write \
    --duration-in-seconds 86400 \
    --query accessSas -o tsv)

azcopy copy "$vhddisk" "$ACCESS" --blob-type PageBlob

az disk revoke-access -n $DISK -g $RG
az image create \
    -g $RG \
    -n $IMAGE \
    --os-type linux \
    --source $(az disk show \
        -g $RG \
        -n $DISK \
        --query id -o tsv)
az vm create \
    -g $RG \
    -n $VM \
    --ssh-key-value $SSH_KEY_VALUE \
    --public-ip-address-dns-name $VM \
    --image $(az image show \
        -g $RG \
        -n $IMAGE \
        --query id -o tsv)

Если пропускная способность локального компьютера к диску Azure приводит к длительной обработке отправки azcopy, можно использовать прыжки виртуальной машины Azure для ускорения процесса. Вот как это можно сделать:

  1. Создайте tarball виртуального жесткого диска на локальном компьютере: tar -czvf ./image_buster_azure_amd64.vhd.tar.gz ./image_[release]_azure_amd64.vhd.
  2. Создайте виртуальную машину Linux Azure (дистрибутив по вашему усмотрению). Убедитесь, что вы создаете его с достаточно большим диском для хранения извлеченного виртуального жесткого диска.
  3. Скачайте программу на azcopy виртуальную машину Linux Azure. Его можно получить из AzCopy.
  4. Скопируйте tarball на виртуальную машину: scp ./image_buster_azure_amd64.vhd.tar.gz <vm>:~.
  5. На виртуальной машине извлеките виртуальный жесткий диск: tar -xf ./image_buster_azure_amd64.vhd.tar.gz. Этот шаг занимает некоторое время на основе размера файла.
  6. Наконец, на виртуальной машине скопируйте VHD на диск Azure с azcopy помощью предыдущей команды.

Теперь вы готовы использовать виртуальный жесткий диск Debian Linux для создания новых виртуальных машин в Azure. Если вы отправляете VHD-файл в Azure впервые, см. раздел Вариант 1. Передача VHD.