暗号化されたデバイスで LVM と RAID を構成する
適用対象: ✔️ Linux VM ✔️ フレキシブルなスケール セット
この記事では、暗号化されたデバイスで論理ボリューム管理 (LVM) と RAID を実行する方法について、手順を追って説明します。 このプロセスは、次の環境に適用されます。
- Linux ディストリビューション
- RHEL 7.6 以降
- Ubuntu 18.04 以降
- SUSE 12 以降
- Azure Disk Encryption のシングルパス拡張機能
- Azure Disk Encryption のデュアルパス拡張機能
シナリオ
この記事の手順では、次のシナリオをサポートしています。
- 暗号化されたデバイスの上位に LVM を構成する (LVM-on-crypt)
- 暗号化されたデバイスの上位に RAID を構成する (RAID-on-crypt)
基になる 1 台または複数台のデバイスが暗号化されたら、その暗号化されたレイヤーの上位に LVM または RAID 構造を作成できます。
物理ボリューム (PV) は、暗号化されたレイヤーの上位に作成されます。 物理ボリュームは、ボリューム グループの作成に使用されます。 ボリュームを作成し、必要なエントリを /etc/fstab に追加します。
同様の方法で、RAID デバイスはディスク上の暗号化されたレイヤーの上位に作成されます。 ファイル システムは RAID デバイスの上位に作成され、通常のデバイスとして /etc/fstab に追加されます。
考慮事項
LVM-on-crypt を使用することをお勧めします。 RAID は、特定のアプリケーションまたは環境の制限のために LVM を使用できない場合のオプションです。
EncryptFormatAll オプションを使用します。 このオプションの詳細については、「Linux VM 上のデータ ディスクに対して EncryptFormatAll 機能を使用する」を参照してください。
OS も暗号化しているときにこの方法を使用できますが、ここではデータ ドライブを暗号化するだけです。
この手順では、「Linux VM での Azure Disk Encryption シナリオ」と「クイックスタート: Azure CLI を使用して Linux VM を作成、暗号化する」で前提条件を既に確認していることを前提としています。
Azure Disk Encryption のデュアルパス バージョンは非推奨のパスにあり、新しい暗号化では使用できません。
一般的な手順
"on-crypt" 構成を使用している場合は、次の手順に記載されているプロセスを使用します。
Note
この記事では、変数を使用しています。 値は適宜置き換えてください。
VM をデプロイする
次のコマンドは省略可能ですが、新しくデプロイされた仮想マシン (VM) に適用することをお勧めします。
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
ディスクを VM に接続する
VM に接続する新しいディスク数 $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
ディスクが VM に接続されていることを確認します。
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
ポータル:
OS:
lsblk
暗号化するディスクを構成する
この構成は、オペレーティング システム レベルで実行されます。 対応するディスクは、Azure Disk Encryption による従来の暗号化用に構成されています。
- ファイル システムはディスクの上位に作成されます。
- ファイル システムをマウントするために、一時マウント ポイントが作成されます。
- ファイル システムは、起動時にマウントされるように /etc/fstab 上に構成されます。
新しいディスクに割り当てられているデバイス文字を確認します。 この例では、4 つのデータ ディスクを使用しています。
lsblk
各ディスクの上位にファイル システムを作成する
このコマンドを使用すると、各ディスク上で、"for" サイクルの "in" 部分で定義された ext4 ファイル システムの作成が反復されます。
for disk in c d e f; do echo mkfs.ext4 -F /dev/sd${disk}; done |bash
最近作成したファイル システムの汎用一意識別子 (UUID) を見つけ、一時フォルダーを作成し、対応するエントリを /etc/fstab に追加して、すべてのファイル システムをマウントします。
このコマンドは、"for" サイクルの "in" 部分に定義されている各ディスクに対しても反復します。
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
データ ディスクを暗号化する
キー暗号化キー (KEK) を使用する PowerShell:
$sequenceVersion = [Guid]::NewGuid()
Set-AzVMDiskEncryptionExtension -ResourceGroupName $RGNAME `
-VMName ${VMNAME} `
-DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl `
-DiskEncryptionKeyVaultId $KeyVaultResourceId `
-KeyEncryptionKeyUrl $keyEncryptionKeyUrl `
-KeyEncryptionKeyVaultId $KeyVaultResourceId `
-VolumeType 'DATA' `
-EncryptFormatAll `
-SequenceVersion $sequenceVersion `
-skipVmBackup;
KEK を使用する Azure CLI:
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
ポータル:
OS レベル:
lsblk
拡張機能によりファイル システムが /var/lib/azure_disk_encryption_config/azure_crypt_mount (以前の暗号化) または /etc/crypttab (新しい暗号化) に追加されます。
Note
これらのファイルは変更しないでください。
このファイルは、起動プロセス中にこれらのディスクをアクティブ化する処理を行い、後で LVM または RAID からそれらを使用できるようにします。
このファイルのマウント ポイントについて心配する必要はありません。 それらの暗号化されたデバイスの上位に物理ボリュームまたは RAID デバイスを作成した後、Azure Disk Encryption ではディスクを通常のファイル システムとしてマウントできなくなります (これにより、準備プロセス中に使用したファイル システム形式が削除されます)。
一時フォルダーと一時的な 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-on-crypt の手順
基になるディスクが暗号化されたので、LVM 構造を作成できます。
デバイス名を使用するのではなく各ディスクの /dev/mapper パスを使用して (ディスク自体の上ではなく、ディスクの上位にある crypt レイヤー上に) 物理ボリュームを作成します。
暗号化されたレイヤーの上位に 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/デバイス名を 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] デバイス名ではなく、論理ボリューム別にグループ化されたデバイスを識別できます。
Azure Disk Encryption で暗号化されたデバイスの上位に作成された LVM ボリュームのマウント ポイント オプションに、nofail オプションが追加されていることを確認することが重要です。 起動プロセス中 (またはメンテナンス モード中) の OS の停止を防ぐことができます。
nofail オプションを使用しない場合:
- Azure Disk Encryption が開始され、データ ディスクのロックが解除されてマウントされる段階に OS がなることはありません。
- 暗号化されたディスクは、起動プロセスの最後にロック解除されます。 LVM ボリュームとファイル システムは、Azure Disk Encryption によってロックが解除されるまでに自動的にマウントされます。
VM の再起動をテストし、ファイル システムが起動後に自動的にマウントされるかどうかを検証できます。 ファイル システムの数とサイズによっては、このプロセスに数分かかることがあります。
VM を再起動し、再起動後に検証する
shutdown -r now
lsblk
df -h
RAID-on-crypt の手順
基になるディスクが暗号化されたので、引き続き 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/デバイス名を lsblk の出力に基づいて実際の値に置き換える必要があります。
RAID の作成を確認および監視する
watch -n1 cat /proc/mdstat
mdadm --examine /dev/mapper/[]
mdadm --detail /dev/md10
新しい RAID デバイスの上位にファイル システムを作成する
mkfs.ext4 /dev/md10
ファイル システム用の新しいマウント ポイントを作成し、新しいファイル システムを /etc/fstab に追加してマウントします。
注意
このサイクルは、この特定の例の 1 つのデバイスでのみ繰り返されます。これは、必要に応じて複数の 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
Azure Disk Encryption で暗号化されたデバイスの上位に作成された RAID ボリュームのマウント ポイント オプションに、nofail オプションが追加されていることを確認することが重要です。 起動プロセス中 (またはメンテナンス モード中) の OS の停止を防ぐことができます。
nofail オプションを使用しない場合:
- Azure Disk Encryption が開始され、データ ディスクのロックが解除されてマウントされる段階に OS がなることはありません。
- 暗号化されたディスクは、起動プロセスの最後にロック解除されます。 RAID ボリュームとファイル システムは、Azure Disk Encryption によってロックが解除されるまでに自動的にマウントされます。
VM の再起動をテストし、ファイル システムが起動後に自動的にマウントされるかどうかを検証できます。 ファイル システムの数とサイズによっては、このプロセスに数分かかることがあります。
shutdown -r now
ログインできるとき:
lsblk
df -h