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


Настройка LVM и RAID на зашифрованных устройствах

Это важно

Шифрование дисков Azure для виртуальных машин и масштабируемых наборов виртуальных машин будет прекращено 15 сентября 2028 г. Новые клиенты должны использовать шифрование на узле для всех новых виртуальных машин. Существующие клиенты должны планировать перенос текущих виртуальных машин с поддержкой ADE в шифрование на узле до даты выхода на пенсию, чтобы избежать нарушения работы службы. См. статью "Миграция из шифрования дисков Azure в шифрование на узле".

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

Эта статья представляет собой пошаговый процесс для выполнения управления логическими томами (LVM) и RAID на зашифрованных устройствах. Процесс применяется к следующим средам:

  • Дистрибутивы Linux
    • RHEL 7.6+
    • Ubuntu 18.04+
    • SUSE 12+
  • Однопроходное расширение шифрования дисков Azure
  • Расширение шифрования дисков Azure с двойным проходом

Сценарии

Процедуры, описанные в этой статье, поддерживают следующие сценарии:

  • Настройте LVM поверх зашифрованных устройств (LVM-on-crypt)
  • Настройка RAID на основе зашифрованных устройств (RAID-on-crypt)

После шифрования базового устройства или устройств можно создать структуры LVM или RAID поверх этого зашифрованного слоя.

Физические тома (PV) создаются поверх зашифрованного слоя. Физические тома используются для создания группы томов. Вы создаете тома и добавляете необходимые записи в /etc/fstab.

Схема слоев структур LVM

Аналогичным образом устройство RAID создается на вершине зашифрованного слоя на дисках. Файловая система создается поверх устройства RAID и добавляется в /etc/fstab как обычное устройство.

Соображения

Рекомендуется использовать lvM-on-crypt. RAID — это параметр, когда не удается использовать LVM из-за определенных ограничений приложения или среды.

Вы будете использовать параметр EncryptFormatAll . Дополнительные сведения об этом параметре см. в разделе "Использование функции EncryptFormatAll" для дисков данных на виртуальных машинах Linux.

Хотя этот метод можно использовать при шифровании ОС, мы просто шифруем диски данных здесь.

В процедурах предполагается, что вы уже изучили предварительные требования в сценариях шифрования дисков Azure на виртуальных машинах Linux и в кратком руководстве. Создание и шифрование виртуальной машины Linux с помощью Azure CLI.

Двухпроходная версия шифрования дисков Azure устаревает и больше не должна использоваться для новых операций шифрования.

Общие действия

При использовании конфигураций "on-crypt" используйте процесс, описанный в следующих процедурах.

Замечание

В этой статье используются переменные. Замените соответствующие значения.

Развертывание виртуальной машины

Следующие команды являются необязательными, но мы рекомендуем применить их к только что развернутой виртуальной машине.

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

Список подключенных дисков в PowerShell

Azure CLI:

az vm show -g ${RGNAME} -n ${VMNAME} --query storageProfile.dataDisks -o table

Список подключенных дисков в Azure CLI

Портал:

Список подключенных дисков на портале

ОС:

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

Создание файловой системы ext4

Найдите универсальный уникальный идентификатор (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

Сведения о конфигурации с помощью 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}

Состояние шифрования в PowerShell

Azure CLI:

az vm encryption show -n ${VMNAME} -g ${RGNAME} -o table

Состояние шифрования в Azure CLI

Портал:

Состояние шифрования на портале

Уровень ОС:

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

Проверка удаления временных записей fstab

Шаги по настройке LVM-on-crypt

Теперь, когда базовые диски шифруются, можно создать структуры LVM.

Вместо использования имени устройства используйте пути /dev/mapper для каждого диска, чтобы создать физический том (на уровне шифрования на вершине диска, а не на самом диске).

Настройка LVM на вершине зашифрованных слоев

Создание физических томов

Вы получите предупреждение, которое спрашивает, правильно ли удалить сигнатуру файловой системы. Продолжите, введя y, или используйте эхо "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 на фактические значения на основе результата команды 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

Снимок экрана: окно консоли с файловыми системами, подключенными как data0 и data1.

В этом варианте lsblk мы перечисляем устройства с зависимостями в обратном порядке. Этот параметр помогает определить устройства, сгруппированные логическим томом вместо исходных имен устройств /dev/sd[disk].

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

Если вы не используете параметр nofail :

  • ОС никогда не достигнет стадии, в которой запущено шифрование дисков Azure, и диски данных будут разблокированы и подключены.
  • Зашифрованные диски будут разблокированы в конце процесса загрузки. Тома и файловые системы LVM будут автоматически монтироваться, пока Azure Disk Encryption их не разблокирует.

Вы можете проверить перезагрузку виртуальной машины и убедиться, что файловые системы также автоматически подключены после загрузки. Этот процесс может занять несколько минут в зависимости от количества и размеров файловых систем.

Перезагрузка виртуальной машины и проверка после перезагрузки

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

Сведения о настроенном RAID с помощью команды mdadm

Замечание

Имена /dev/mapper/device необходимо заменить фактическими значениями на основе выходных данных lsblk.

Проверка и мониторинг создания RAID

watch -n1 cat /proc/mdstat
mdadm --examine /dev/mapper/[]
mdadm --detail /dev/md10

Состояние RAID

Создание файловой системы на основе нового УСТРОЙСТВА 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

Снимок экрана: окно консоли с файловой системой, подключенной как raiddata.

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

Если вы не используете параметр nofail :

  • ОС никогда не достигнет стадии, в которой запущено шифрование дисков Azure, и диски данных будут разблокированы и подключены.
  • Зашифрованные диски будут разблокированы в конце процесса загрузки. Тома RAID и файловых систем будут автоматически подключены, пока шифрование дисков Azure не разблокирует их.

Вы можете проверить перезагрузку виртуальной машины и убедиться, что файловые системы также автоматически подключены после загрузки. Этот процесс может занять несколько минут в зависимости от количества и размеров файловых систем.

shutdown -r now

И когда вы можете войти в систему:

lsblk
df -h

Дальнейшие шаги