4.3. バックアップなしでディスク設定を再作成する
クラスターで使用できるバックアップ設定ファイルがない場合は、次のセクションを使用して設定を再作成し、既存のブリックとそのデータを引き続き使用できるようにすることができます。
4.3.1. ホスト交換時の暗号化の再設定
障害が発生したホストで暗号化が使用されていたが、使用可能なバックアップ暗号化設定がない場合は、障害が発生したホストを交換するときに暗号化設定を再作成する必要があります。次の手順に従って、置換ホストに暗号化設定ファイルを作成し、既存のクラスター内の他のホストと一致させます。
手順
新しいキーとキーファイルを設定します。
LUKS 暗号化ディスクのパスフレーズを
/rootディレクトリーの一時ファイルに保存します。# echo passphrase /root/key各ディスクに個別のパスフレーズがある場合は、個別に保存してください。
# echo passphraseA /root/sda_key # echo passphraseB /root/sdb_key # echo passphraseC /root/sdc_key # echo passphraseD /root/sdd_key
新しいキーファイルを生成します。
ディスクごとにランダムなキーファイルを生成します。
# for disk in sda sdb sdc sdd; do dd if=/dev/urandom of=/etc/${disk}_keyfile bs=1024 count=8192新しいキーファイルに適切な権限を設定します。
# chown 400 /etc/*_keyfile
ディスクごとに新しいキーを設定します。
# cryptsetup luksAddKey /etc/sda_keyfile --key-file /root/sda_key # cryptsetup luksAddKey /etc/sdb_keyfile --key-file /root/sdb_key # cryptsetup luksAddKey /etc/sdc_keyfile --key-file /root/sdc_key # cryptsetup luksAddKey /etc/sdd_keyfile --key-file /root/sdd_key
各デバイスがそのキーファイルで開くことができることを確認します。
各デバイスの LUKS UUID を決定します。
# cryptsetup luksUUID /dev/sdXキーファイルと UUID を使用して各デバイスを開きます。
# cryptsetup luksOpen UUID=sdX-UUID luks_sdX -d /etc/sdX_keyfile
以下に例を示します。
# cryptsetup luksOpen UUID=a28a19c7-6028-44df-b0b8-e5245944710c luks_sda -d /etc/sda_keyfile
起動時に自動復号化を設定します。
次の形式を使用して、各デバイスの行を
/etc/crypttabファイルに追加します。# echo luks_sdX UUID=sdX-UUID /etc/sdX_keyfile >> /etc/crypttab
以下に例を示します。
# echo luks_sda UUID=a28a19c7-6028-44df-b0b8-e5245944710c /etc/sda_keyfile >> /etc/crypttab
ルートディスクに Network-Bound Disk Encryption を設定します。
hc-ansible-deploymentディレクトリーに移動します。# cd /etc/ansible/roles/gluster.ansible/playbooks/hc-ansible-deployment
インベントリーファイルを作成します。
今後の参照用に
luks_tang_inventory.ymlファイルのコピーを作成します。cp luks_tang_inventory.yml luks_tang_inventory.yml.backup
luks_tang_inventory.yml ファイルで設定を定義します。
サンプルの
luks_tang_inventory.ymlファイルを使用して、各ホストでディスク暗号化の詳細を定義します。このファイルの概要については、Understanding the luks_tang_inventory.yml ファイルに記載されています。
luks_tang_inventory.ymlファイルを編集し、ansible-vaultを使用してパスワードを指定します。luks_tang_inventory.ymlに必要な変数にはパスワードの値が含まれます。そのため、パスワード値を保護するためにファイルを暗号化することが重要です。# ansible-vault encrypt luks_tang_inventory.yml
プロンプトが表示されたら、新しい vault パスワードを入力し、確認します。
bindtangタグを使用してluks_tang_setup.ymlPlaybook を実行します。# ansible-playbook -i luks_tang_inventory.yml tasks/luks_tang_setup.yml --tags=bindtang --ask-vault-pass
ディスクの暗号化設定を開始するプロンプトが表示されたら、このファイルの Vault パスワードを入力します。
4.3.2. ホスト交換時の重複排除と圧縮の再設定
障害が発生したホストが重複排除と圧縮 (VDO) を使用していたが、使用可能なバックアップ設定情報がない場合は、障害が発生したホストを交換するときに、重複排除と圧縮の設定を再作成する必要があります。次の手順に従って、既存のクラスター内の他のホストと一致するように、代替ホストに重複排除および圧縮の設定ファイルを作成します。
手順
/etc/vdoconf.ymlファイルを正常なノードから交換ノードにコピーします。# scp /etc/vdoconf.yml root@new-node.example.com:/etc//etc/vdoconf.ymlファイルで示された値を編集して、置換ノードに正しい値を指定します。重要このファイルを編集するときは注意してください。このファイルを手動で編集することは、バックアップファイルを使用せずに重複排除および圧縮設定を再構築する場合にのみサポートされます。
- vdo_sd*
- このパラメーターを変更して、VDO デバイスの名前と一致させます。
- device
-
by-idパスを使用して VDO デバイスを指定します。通常のボリュームの場合、これは/dev/disk/by-id/scsi-xxxようなものです。暗号化されたボリュームの場合、これは/dev/disk/by-id/dm-uuid-CRYPT-LUKS2-xxxxxようなものです。
以下に例を示します。
# cat /etc/vdoconf.yml config: !Configuration vdos: vdo_sdc: !VDOService ... device: /dev/disk/by-id/scsi-360030480197f830125618adb17bac04c ... logicalSize: 180T ... physicalSize: 18625G ...VDO サービスを再起動します。
# systemctl restart vdo.service
4.3.3. ディスクマウント設定の復元
バックアップディスクマウント設定がない場合は、ホストを交換するときに設定を再作成する必要があります。次の手順に従って、ディスクマウント設定を再構築します。
手順
既存の物理ボリューム、ボリュームグループ、および論理ボリュームをスキャンします。
# pvscan # vgscan # lvscan
各 gluster ブリックの UUID を決定します。
# blkid lv_nameUUID を使用して、gluster ブリックごとに
/etc/fstabファイルに行を追加します。# echo "UUID=64dfd1b1-4333-4ef6-8835-1053c6904d93 /gluster_bricks/engine xfs inode64,noatime,nodiratime,_netdev,x-systemd.device-timeout=0 0 0" >> /etc/fstab
重複排除と圧縮を使用するボリュームには、次のように追加のマウントオプションが必要です。
# echo "UUID=64dfd1b1-4333-4ef6-8835-1053c6904d93 /gluster_bricks/vmstore xfs inode64,noatime,nodiratime,_netdev,x-systemd.device-timeout=0,x-systemd.requires=vdo.service 0 0" >> /etc/fstab
ボリュームからの情報に基づいて、マウントディレクトリーを作成します。
# mkdir -p /gluster_bricks/{engine,vmstore,data}すべてのブリックを取り付けます。
# mount -a
すべてのブリックマウントポイントに必要な SELinux ラベルを設定します。
# semanage fcontext -a -t glusterd_brick_t /gluster_bricks/engine # semanage fcontext -a -t glusterd_brick_t /gluster_bricks/vmstore # semanage fcontext -a -t glusterd_brick_t /gluster_bricks/data # restorecon -Rv /gluster_bricks/engine # restorecon -Rv /gluster_bricks/vmstore # restorecon -Rv /gluster_bricks/data