Настройка LVM и RAID на зашифрованных устройствах
Область применения: ✔️ Виртуальные машины Linux ✔️ Гибкие масштабируемые наборы
Эта статья представляет собой пошаговый процесс выполнения логического управления томами (LVM) и RAID на зашифрованных устройствах. Эта процедура применима к следующим средам:
- Дистрибутивы Linux
- RHEL 7.6+,
- Ubuntu 18.04+,
- SUSE 12+.
- Расширение для однопроходного шифрования дисков Azure
- Расширение для двухпроходного шифрования дисков Azure
Сценарии
Процедуры, описанные в этой статье, поддерживают следующие сценарии.
- Настройка LVM поверх зашифрованных устройств (LVM при шифровании)
- Настройка RAID поверх зашифрованных устройств (RAID при шифровании)
После шифрования базового устройства или устройств можно создать структуры LVM или RAID поверх этого зашифрованного слоя.
Физические тома (PV) создаются поверх зашифрованного слоя. Для создания группы томов используются физические тома. Создайте тома и добавьте необходимые записи в/etc/fstab.
Аналогичным образом, устройство RAID создается поверх зашифрованного слоя на дисках. Файловая система создается поверх устройства RAID и добавляется в /etc/fstab как обычное устройство.
Рекомендации
Рекомендуется использовать LVM при шифровании. RAID можно использовать в том случае, если LVM не может использоваться из-за ограничений конкретного приложения или среды.
Вы будете использовать параметр EncryptFormatAll. Дополнительные сведения об этом параметре см. в статье Использование функции EncryptFormatAll для дисков данных на виртуальных машинах Linux.
Хотя этот метод можно использовать при шифровании операционной системы, здесь мы просто зашифруем диски с данными.
Выполнение процедур предполагает, что вы уже выполнили предварительные требования, указанные в разделах Сценарии Шифрования дисков Azure на виртуальных машинах Linux и Краткое руководство по созданию и шифрованию виртуальной машины Linux с помощью Azure CLI.
Версия с двухпроходным шифрованием дисков Azure скоро устареет, она не должна использоваться для вновь шифруемых дисков.
Общие действия
При использовании конфигураций "при шифровании" используйте процедуру, описанную ниже.
Примечание.
Мы используем переменные в этой статье. Заменяйте значения соответствующим образом.
Развертывание виртуальной машины
Следующие команды являются необязательными, но их рекомендуется применять к вновь развертываемым виртуальным машинам.
PowerShell.
New-AzVm -ResourceGroupName ${RGNAME} `
-Name ${VMNAME} `
-Location ${LOCATION} `
-Size ${VMSIZE} `
-Image ${OSIMAGE} `
-Credential ${creds} `
-Verbose
Azure CLI:
az vm create \
-n ${VMNAME} \
-g ${RGNAME} \
--image ${OSIMAGE} \
--admin-username ${username} \
--admin-password ${password} \
-l ${LOCATION} \
--size ${VMSIZE} \
-o table
Подключите диски к виртуальной машине
Повторите следующие команды для $N
количества новых дисков, которые нужно подключить к виртуальной машине.
PowerShell.
$storageType = 'Standard_LRS'
$dataDiskName = ${VMNAME} + '_datadisk0'
$diskConfig = New-AzDiskConfig -SkuName $storageType -Location $LOCATION -CreateOption Empty -DiskSizeGB 5
$dataDisk1 = New-AzDisk -DiskName $dataDiskName -Disk $diskConfig -ResourceGroupName ${RGNAME}
$vm = Get-AzVM -Name ${VMNAME} -ResourceGroupName ${RGNAME}
$vm = Add-AzVMDataDisk -VM $vm -Name $dataDiskName -CreateOption Attach -ManagedDiskId $dataDisk1.Id -Lun 0
Update-AzVM -VM ${VM} -ResourceGroupName ${RGNAME}
Azure CLI:
az vm disk attach \
-g ${RGNAME} \
--vm-name ${VMNAME} \
--name ${VMNAME}datadisk1 \
--size-gb 5 \
--new \
-o table
Проверьте, что все диски подключены к виртуальной машине
PowerShell.
$VM = Get-AzVM -ResourceGroupName ${RGNAME} -Name ${VMNAME}
$VM.StorageProfile.DataDisks | Select-Object Lun,Name,DiskSizeGB
Azure CLI:
az vm show -g ${RGNAME} -n ${VMNAME} --query storageProfile.dataDisks -o table
Портал.
ОС:
lsblk
Настройте диски для шифрования
Эта настройка выполняется на уровне операционной системы. Для соответствующих дисков настраивается традиционное шифрование с помощью Шифрования дисков Azure:
- Файловые системы создаются поверх дисков.
- Для подключения файловых систем создаются временные точки подключения.
- Файловые системы настраиваются в /etc/fstab для подключения во время загрузки.
Проверьте букву устройства, назначенную новым дискам. В данном примере мы используем четыре диска данных.
lsblk
Создание файловой системы поверх каждого диска
Эта команда поочередно создает файловую систему ext4 на каждом из дисков, определенных в части in цикла for.
for disk in c d e f; do echo mkfs.ext4 -F /dev/sd${disk}; done |bash
Найдите универсальный уникальный идентификатор (UUID) для вновь созданных файловых систем, создайте временную папку, добавьте соответствующие записи в /etc/fstab и подключите все файловые системы.
Эта команда также поочередно обращается к каждому из дисков, перечисленных в части in цикла for:
for disk in c d e f; do diskuuid="$(blkid -s UUID -o value /dev/sd${disk})"; \
mkdir /tempdata${disk}; \
echo "UUID=${diskuuid} /tempdata${disk} ext4 defaults,nofail 0 0" >> /etc/fstab; \
mount -a; \
done
Убедитесь, что диски правильно подключены
lsblk
Также убедитесь, что диски настроены:
cat /etc/fstab
Шифрование дисков данных
PowerShell с использованием ключа шифрования ключей (KEK):
$sequenceVersion = [Guid]::NewGuid()
Set-AzVMDiskEncryptionExtension -ResourceGroupName $RGNAME `
-VMName ${VMNAME} `
-DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl `
-DiskEncryptionKeyVaultId $KeyVaultResourceId `
-KeyEncryptionKeyUrl $keyEncryptionKeyUrl `
-KeyEncryptionKeyVaultId $KeyVaultResourceId `
-VolumeType 'DATA' `
-EncryptFormatAll `
-SequenceVersion $sequenceVersion `
-skipVmBackup;
Azure CLI с использованием KEK:
az vm encryption enable \
--resource-group ${RGNAME} \
--name ${VMNAME} \
--disk-encryption-keyvault ${KEYVAULTNAME} \
--key-encryption-key ${KEYNAME} \
--key-encryption-keyvault ${KEYVAULTNAME} \
--volume-type "DATA" \
--encrypt-format-all \
-o table
Проверка состояния шифрования
Переходите к следующему шагу только в том случае, если все диски зашифрованы.
PowerShell.
Get-AzVmDiskEncryptionStatus -ResourceGroupName ${RGNAME} -VMName ${VMNAME}
Azure CLI:
az vm encryption show -n ${VMNAME} -g ${RGNAME} -o table
Портал.
На уровне ОС
lsblk
Расширение добавит файловые системы в /var/lib/azure_disk_encryption_config/azure_crypt_mount (старое шифрование) или в /etc/crypttab (новое шифрование).
Примечание.
Не изменяйте эти файлы.
Этот файл отвечает за активацию этих дисков во время загрузки, чтобы LVM или RAID могли их использовать позже.
Не беспокойтесь о точках подключения этого файла. Шифрование дисков Azure не сможет подключить эти диски как обычные файловые системы после создания физического тома или устройства RAID на основе этих зашифрованных устройств. (Это приведет к удалению формата файловой системы, который мы использовали во время процесса подготовки.)
Удаление временных папок и временных записей fstab
Отсоедините файловые системы на дисках, которые будут использоваться в составе LVM.
for disk in c d e f; do umount /tempdata${disk}; done
И удалите записи из /etc/fstab:
vi /etc/fstab
Убедитесь, что диски не подключены и записи в /etc/fstab были удалены.
lsblk
Также убедитесь, что диски настроены:
cat /etc/fstab
Шаги для "LVM при шифровании"
Теперь, когда базовые диски зашифрованы, можно создать структуры LVM.
Вместо имени устройства используйте /dev/mapper для каждого диска, чтобы создать физический том (на уровне шифрования поверх диска, а не на самом диске).
Настройка LVM поверх зашифрованных слоев
Создайте физические тома
Вы получите предупреждение о том, можно ли очистить подпись файловой системы. Продолжайте, введя y, или используйте команду echo "y", как показано ниже:
echo "y" | pvcreate /dev/mapper/c49ff535-1df9-45ad-9dad-f0846509f052
echo "y" | pvcreate /dev/mapper/6712ad6f-65ce-487b-aa52-462f381611a1
echo "y" | pvcreate /dev/mapper/ea607dfd-c396-48d6-bc54-603cf741bc2a
echo "y" | pvcreate /dev/mapper/4159c60a-a546-455b-985f-92865d51158c
Примечание.
Здесь /dev/mapper/device names необходимо заменить фактическими значениями из вывода команды lsblk.
Проверьте данные для физических томов
pvs
Создание группы томов
Создайте группу томов с использованием тех же устройств, которые уже инициализированы:
vgcreate vgdata /dev/mapper/
Проверьте сведения о группе томов
vgdisplay -v vgdata
pvs
Создайте логические тома
lvcreate -L 10G -n lvdata1 vgdata
lvcreate -L 7G -n lvdata2 vgdata
Проверка созданных логических томов
lvdisplay
lvdisplay vgdata/lvdata1
lvdisplay vgdata/lvdata2
Создание файловых систем поверх структур для логических томов
echo "yes" | mkfs.ext4 /dev/vgdata/lvdata1
echo "yes" | mkfs.ext4 /dev/vgdata/lvdata2
Создание точек подключения для новых файловых систем
mkdir /data0
mkdir /data1
Добавьте новые файловые системы в /etc/fstab и подключите их
echo "/dev/mapper/vgdata-lvdata1 /data0 ext4 defaults,nofail 0 0" >>/etc/fstab
echo "/dev/mapper/vgdata-lvdata2 /data1 ext4 defaults,nofail 0 0" >>/etc/fstab
mount -a
Убедитесь, что новые файловые системы подключены
lsblk -fs
df -h
В этом варианте lsblk выводится список устройств, на которых показаны зависимости в обратном порядке. Этот параметр позволяет обнаруживать устройства, сгруппированные по логическому тому, а не исходные имена устройств /dev/sd[disk].
Важно, чтобы был добавлен параметр nofail к параметрам точки подключения томов LVM, созданных на основе устройства, зашифрованного с помощью Шифрования дисков Azure. Это позволит предотвратить зависание операционной системы во время процесса загрузки (или в режиме обслуживания).
Если параметр nofail не будет указан
- Операционная система не дойдет до этапа, где запускается Шифрование дисков Azure, а диски с данными будут разблокированы и подключены.
- Зашифрованные диски будут разблокированы в конце процесса загрузки. Тома и файловые системы LVM будут автоматически подключены, пока Шифрование дисков Azure не разблокирует их.
Вы можете протестировать перезагрузку виртуальной машины и проверить, что файловые системы также автоматически подключаются после этапа загрузки. Этот процесс может занять несколько минут в зависимости от количества и размеров файловых систем.
Перезагрузите виртуальную машину и проверьте после перезагрузки.
shutdown -r now
lsblk
df -h
Шаги для "RAID при шифровании"
Теперь, когда базовые диски зашифрованы, можно создать структуры RAID. Этот процесс аналогичен тому, который используется для LVM, но вместо имени устройства указывайте для каждого диска пути /dev/mapper.
Настройка RAID поверх зашифрованного уровня дисков
mdadm --create /dev/md10 \
--level 0 \
--raid-devices=4 \
/dev/mapper/c49ff535-1df9-45ad-9dad-f0846509f052 \
/dev/mapper/6712ad6f-65ce-487b-aa52-462f381611a1 \
/dev/mapper/ea607dfd-c396-48d6-bc54-603cf741bc2a \
/dev/mapper/4159c60a-a546-455b-985f-92865d51158c
Примечание.
Здесь /dev/mapper/device names необходимо заменить фактическими значениями из вывода команды lsblk.
Проверка и мониторинг создания RAID
watch -n1 cat /proc/mdstat
mdadm --examine /dev/mapper/[]
mdadm --detail /dev/md10
Создайте файловую систему на новом RAID-устройстве.
mkfs.ext4 /dev/md10
Создайте новую точку подключения для файловой системы, добавьте ее в /etc/fstab и подключите:
Примечание.
Этот цикл в данном примере просматривает только одно устройство, но он построен таким образом, чтобы при необходимости использовались несколько устройств md.
for device in md10; do diskuuid="$(blkid -s UUID -o value /dev/${device})"; \
mkdir /raiddata; \
echo "UUID=${diskuuid} /raiddata ext4 defaults,nofail 0 0" >> /etc/fstab; \
mount -a; \
done
Убедитесь, что новые файловая система подключена:
lsblk -fs
df -h
Важно, чтобы был добавлен параметр nofail к параметрам точки подключения томов RAID, созданных поверх устройства, зашифрованного с помощью Шифрования дисков Azure. Это позволит предотвратить зависание операционной системы во время процесса загрузки (или в режиме обслуживания).
Если параметр nofail не будет указан
- Операционная система не дойдет до этапа, где запускается Шифрование дисков Azure, а диски с данными будут разблокированы и подключены.
- Зашифрованные диски будут разблокированы в конце процесса загрузки. Тома и файловые системы RAID будут автоматически подключены, пока Шифрование дисков Azure не разблокирует их.
Вы можете протестировать перезагрузку виртуальной машины и проверить, что файловые системы также автоматически подключаются после этапа загрузки. Этот процесс может занять несколько минут в зависимости от количества и размеров файловых систем.
shutdown -r now
И когда вы сможете войти в систему
lsblk
df -h