Вопрос или проблема
Я пытаюсь создать VHD фиксированного размера на Apple Silicon Mac для загрузки в Azure blob store, который не принимает динамически изменяемый размер VHD.
Я пробовал qemu-img
, а также VBoxManage
, но каждый раз, когда я передавал опцию -subformat=fixed
для команды преобразования, файл превращался в raw
вместо VHD.
Это ожидаемо? Как я могу сгенерировать VHD фиксированного размера?
Вот несколько примеров того, что я пробовал:
VBoxManage createhd --filename ~/path/to/test_vbox.vhd --size 10240 --format VHD --variant Fixed
qemu-img create -f vpc -o subformat=fixed ~/path/to/test_qemu.vhd 16G
Для обоих этих примеров выполнение qemu-img info --output=json
на соответствующих файлах возвращает:
{
"children": [
{
"name": "file",
"info": {
"children": [
],
"virtual-size": 17180320256,
"filename": "test_qemu.vhd",
"format": "file",
"actual-size": 28672,
"format-specific": {
"type": "file",
"data": {
}
},
"dirty-flag": false
}
}
],
"virtual-size": 17180320256,
"filename": "test_qemu.vhd",
"format": "raw",
"actual-size": 28672,
"dirty-flag": false
}
Я также пробовал создать файл qcow2 и конвертировать его в raw, а затем из raw в vhd, но это приводит к такому же результату.
Ответ или решение
Создание фиксированного размера VHD на Apple Silicon Mac для загрузки в Azure может быть непростой задачей, учитывая специфику инструментов, доступных в macOS. Рассмотрим, как это сделать с использованием QEMU и VirtualBox, а также возможные обходные пути для достижения желаемого результата.
Теория
Microsoft Azure требует VHD-файлов фиксированного размера, поскольку файлы с динамическим выделением противоречат условиям использования. Фиксированный VHD имеет постоянный размер, и его структура отличается от динамического VHD. Файл с динамическим выделением хранилища использует минимальное пространство и увеличивает его по мере необходимости, что не подходит для загрузки в Azure.
Примеры
-
Использование VBoxManage: Вы пробовали создать VHD с помощью
VBoxManage
, используя следующий синтаксис:VBoxManage createhd --filename ~/path/to/test_vbox.vhd --size 10240 --format VHD --variant Fixed
Этот инструмент от VirtualBox должен генерировать фиксированного размера VHD. Однако, если результат не отвечает ожиданиям, может возникнуть проблема в процессе конверсии или поддержке Apple Silicon.
-
Использование QEMU-img: Вы предприняли попытку создать VHD с помощью
qemu-img
, используя следующий синтаксис:qemu-img create -f vpc -o subformat=fixed ~/path/to/test_qemu.vhd 16G
Однако результат оказался формата
raw
. Это может быть связано с ограничениями или несоответствиями в обработке команд утилитой на вашей платформе.
Применение
Для исправления ситуации предлагаем следующие шаги:
-
Проверка версий инструментов: Убедитесь, что у вас установлены последние версии
VirtualBox
иQEMU
. Иногда новые версии исправляют известные проблемы или предлагают улучшенные функции. -
Идентификация проблемы: Использование
qemu-img info
показало, что файлы не создаются в формате VHD. Попробуйте использовать альтернативный подход:a. Преобразование из qcow2 в VHD:
Сначала создайте образ формата
qcow2
, а затем преобразуйте его в VHD:qemu-img create -f qcow2 ~/path/to/image.qcow2 16G qemu-img convert -f qcow2 -O vpc -o subformat=fixed ~/path/to/image.qcow2 ~/path/to/final_image.vhd
Этот метод иногда дает положительные результаты, так как разделение создания и конверсии может устранить проблему с форматом.
-
Проверка файловой системы: Убедитесь, что файловая система, на которой хранится ваш VHD, поддерживает файлы такого размера, и что у вас хватает места для создания файла фиксированного размера.
-
Использование Docker: Если инструменты на macOS не справляются, можно воспользоваться образом Docker, который будет иметь предустановленные необходимые версии пакетов и правильно оптимизирован для таких задач.
-
Тестирование на других системах: Попробуйте выполнить те же команды на другой системе, например, виртуальной машине Windows или Linux, для проверки кросс-платформенной совместимости.
-
Обратитесь к документации: Внимательно ознакомьтесь со всеми параметрами команд, описанными в документации VirtualBox и QEMU, чтобы убедиться, что настройки формата и размера соответствуют ожиданиям.
Если все вышеперечисленное не решает проблему, можно рассмотреть возможность использования альтернативных облачных сред или инструментов, которые могут предложить более дружелюбные для использования команды и элементы управления для вашей macOS-среды.
Этот процесс может требовать некоторого количества экспериментов и изучения ограничений используемых инструментов, но он позволит создать файл нужного формата, пригодный для загрузки в Azure.