Как уменьшить размер образа облака Azure с сайта cloud-images.ubuntu.com?

В настоящее время я настраиваю динамический кластер высокопроизводительных вычислений в Azure и подумываю основать его на Ubuntu.

В документации Microsoft рекомендуется создавать образ Ubuntu на основе протестированных облачных образов Ubuntu для Azure (например, https://cloud-images.ubuntu.com/bionic/current/bionic-server-cloudimg-amd64 -azure.vhd.zip )

Проблема в том, что эти образы уже имеют размер 30 ГБ, даже если фактически используется только часть пространства. Чтобы ускорить развертывание узлов кластера в Azure, я хотел бы иметь образ меньшего размера (например, 10 ГБ).

Что было бы наиболее эффективным способом уменьшить размер вышеупомянутого изображения? Есть ли какой-нибудь эффективный способ, или мне нужно создавать меньшее изображение с нуля?

Я был бы полностью счастлив, если бы кто-нибудь мог мне помочь с этой темой.

0
задан 16 April 2020 в 13:01

1 ответ

Вы не можете напрямую сжимать управляемые диски в Azure. Однако вы можете использовать другую виртуальную машину (или на своем компьютере) для обработки образа: скачать, сжать, отправить в свою учетную запись хранения как блочный BLOB-объект, а затем создать образ.

Используя Hyper-V:

  • Создайте/используйте виртуальную машину с Linux (желательно с графическим интерфейсом)
  • Прикрепите образ, который вы будете использовать
  • Уменьшите последний раздел до желаемого размера (например, 9 ГБ) ) (fsck перед)
  • Выключите виртуальную машину и отсоедините диск
  • Уменьшите размер диска (либо с помощью qemu-img, либо с помощью дисковой утилиты Hyper-V), обеспечив,
    • Полученный образ (намного) больше, чем конец последнего раздела)
    • Он занимает мегабайт(*)
  • Прикрепите образ диска еще раз
  • Загрузите виртуальную машину
  • Перераспределите сделайте резервную копию GPT в конец диска (используя gdisk или sgdisk)
  • Запустите fsck
  • Выключите виртуальную машину
  • Отключите диск, затем поменяйте местами его с образом диска, используемым для обработки нового диска
  • Убедитесь, что образ диска загружается в Hyper-V
  • Образ готов к загрузке в вашу учетную запись хранения и использованию для создания управляемого образа
  • Наконец, убедитесь, что образ диска загружается в Azure

(*)Обратите внимание, что для импорта управляемого диска из блочного BLOB-объекта (если вы хотите обрабатывать образ с локального компьютера, затем загрузите его в свою учетную запись хранения), образ должен быть выделен в МБ, а образ должен быть фиксированным на VHD. В противном случае импорт не удастся.Некоторые инструменты, такие как qemu-img (и даже дисковая утилита Hyper-V), добавляют дополнительные 512 байтов в конец результирующего образа.

Еще один (быстрый и грязный) подход — использование Azure:

  • Создайте виртуальную машину (желательно Ubuntu 18.04).
    • Прикрепить пустой управляемый диск нужного размера
  • Скачать и образ
  • Установить qemu-utils
  • Конвертировать образ в RAW
    • qemu-img convert -f vpc -O raw bionic.vhd bionic.img
  • Импортировать загруженный образ как циклическое устройство
    • sudo lostup -f bionic.img
  • Уменьшить размер последнего раздела до 9 ГиБ, используя parted (fsck раньше)
  • Отсоединить образ от устройства цикла
    • sudo losstup -d /dev/loop0
  • Скопируйте образ на подключенный управляемый диск, используя dd (быстро и грязно)
    • dd if /dev/loop0 of=/dev/sdb bs=4096
  • Переместите резервную копию GPT в конец диска (используя gdisk или sgdisk)
  • Расширить последний раздел до конца диска
  • Запустить fsck
  • Остановить (деллокировать) виртуальную машину
  • Отсоединить недавно заполненный диск
  • Заменить загрузочный диск на недавно созданный
  • Запустите виртуальную машину с недавно созданным диском, чтобы убедиться, что она загружается
  • сделайте что-нибудь для подготовки образа
  • если все пойдет хорошо, сохраните виртуальную машину в управляемый образ

наконец, НИКОГДА не усекайте образ, не сжимая последний раздел первым! В противном случае образ будет потерян (или, по крайней мере, трудно восстановить; лучше начать сначала).

0
ответ дан 24 June 2020 в 03:27

Другие вопросы по тегам:

Похожие вопросы: