Согласен - не так много примеров этого общего сценария.Я думаю, что часть проблемы, с которой вы столкнулись выше, заключается в том, что вы ссылаетесь на раздел вместо диска в disk_setup.
В Azure первый диск с данными, подключенный к виртуальной машине, обычно обозначается как /dev/sdc
, второй - /dev/sdd
и т. Д.Это не гарантируется, однако.Документация здесь указывает, что существуют обстоятельства, которые могут привести к назначению другой буквы диска.В результате мы будем ссылаться на диски, используя встроенный псевдоним.Этот псевдоним гарантированно всегда будет отображаться с использованием LUN, назначенного в шаблоне ARM (или в определении диска).Эти псевдонимы имеют вид /dev/disk/azure/scsi1/lun#
(с псевдонимами разделов /dev/disk/azure/scsi1/lun#-part#
).
Если вы используете ARM, шаблон будет включать ссылку в определении виртуальной машины на диск.В рамках этого определения вы будете указывать значение LUN.Вы можете ссылаться на это назначенное значение в вашем облаке-init.Например, следующий фрагмент ARM создаст /dev/disk/azure/scsi1/lun0
:
"dataDisks": [
{
"lun": 0,
"name": "[concat(variables('vmName'),'-datadisk0')]",
"createOption": "Attach",
"managedDisk":
{
"id": "[resourceId('Microsoft.Compute/disks/',
concat(variables('vmName'),'-datadisk0'))]"
}
},
Зная это, мы можем создать содержимое для облачной конфигурации.Сначала мы определим диск данных.Я предлагаю использовать GPT в качестве типа таблицы для включения поддержки дисков и разделов размером> 2 ТБ.
disk_setup:
/dev/disk/azure/scsi1/lun0:
table_type: gpt
layout: True
overwrite: True
Далее мы указываем настройку файловой системы для дисков.Мы ссылаемся на каждый раздел и объявляем используемую файловую систему.
fs_setup:
- device: /dev/disk/azure/scsi1/lun0
partition: 1
filesystem: ext4
Наконец, мы монтируем разделы.Процесс, используемый cloud-init, создаст папки и смонтирует указанные разделы.Я использую рекомендованный nofail
(гарантирует, что виртуальная машина может загрузиться в случае проблем или отсоединенного диска) вместе с noexec
(что предотвращает выполнение двоичных файлов в этом разделе).Поскольку мы поместили файловую систему в первый раздел lun0, нам нужно смонтировать lun0-part1
.
mounts:
- ["/dev/disk/azure/scsi1/lun0-part1", "/datadisk", auto, "defaults,noexec,nofail"]