4.3. バックアップなしでディスク設定を再作成する

クラスターで使用できるバックアップ設定ファイルがない場合は、次のセクションを使用して設定を再作成し、既存のブリックとそのデータを引き続き使用できるようにすることができます。

4.3.1. ホスト交換時の暗号化の再設定

障害が発生したホストで暗号化が使用されていたが、使用可能なバックアップ暗号化設定がない場合は、障害が発生したホストを交換するときに暗号化設定を再作成する必要があります。次の手順に従って、置換ホストに暗号化設定ファイルを作成し、既存のクラスター内の他のホストと一致させます。

手順

  1. 新しいキーとキーファイルを設定します。

    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
    2. 新しいキーファイルを生成します。

      1. ディスクごとにランダムなキーファイルを生成します。

        # for disk in sda sdb sdc sdd; do dd if=/dev/urandom of=/etc/${disk}_keyfile bs=1024 count=8192
      2. 新しいキーファイルに適切な権限を設定します。

        # chown 400 /etc/*_keyfile
    3. ディスクごとに新しいキーを設定します。

      # 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
  2. 各デバイスがそのキーファイルで開くことができることを確認します。

    1. 各デバイスの LUKS UUID を決定します。

      # cryptsetup luksUUID /dev/sdX
    2. キーファイルと 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
  3. 起動時に自動復号化を設定します。

    次の形式を使用して、各デバイスの行を /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
  4. ルートディスクに Network-Bound Disk Encryption を設定します。

    1. hc-ansible-deployment ディレクトリーに移動します。

      # cd /etc/ansible/roles/gluster.ansible/playbooks/hc-ansible-deployment
    2. インベントリーファイルを作成します。

      1. 今後の参照用に luks_tang_inventory.yml ファイルのコピーを作成します。

        cp luks_tang_inventory.yml luks_tang_inventory.yml.backup
      2. luks_tang_inventory.yml ファイルで設定を定義します。

        サンプルの luks_tang_inventory.yml ファイルを使用して、各ホストでディスク暗号化の詳細を定義します。このファイルの概要については、Understanding the luks_tang_inventory.yml ファイルに記載されています。

    3. luks_tang_inventory.yml ファイルを編集し、ansible-vault を使用してパスワードを指定します。

      luks_tang_inventory.yml に必要な変数にはパスワードの値が含まれます。そのため、パスワード値を保護するためにファイルを暗号化することが重要です。

      # ansible-vault encrypt luks_tang_inventory.yml

      プロンプトが表示されたら、新しい vault パスワードを入力し、確認します。

    4. bindtang タグを使用して luks_tang_setup.yml Playbook を実行します。

      # ansible-playbook -i luks_tang_inventory.yml tasks/luks_tang_setup.yml --tags=bindtang --ask-vault-pass

      ディスクの暗号化設定を開始するプロンプトが表示されたら、このファイルの Vault パスワードを入力します。

4.3.2. ホスト交換時の重複排除と圧縮の再設定

障害が発生したホストが重複排除と圧縮 (VDO) を使用していたが、使用可能なバックアップ設定情報がない場合は、障害が発生したホストを交換するときに、重複排除と圧縮の設定を再作成する必要があります。次の手順に従って、既存のクラスター内の他のホストと一致するように、代替ホストに重複排除および圧縮の設定ファイルを作成します。

手順

  1. /etc/vdoconf.yml ファイルを正常なノードから交換ノードにコピーします。

    # scp /etc/vdoconf.yml root@new-node.example.com:/etc/
  2. /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
          ...
  3. VDO サービスを再起動します。

    # systemctl restart vdo.service

4.3.3. ディスクマウント設定の復元

バックアップディスクマウント設定がない場合は、ホストを交換するときに設定を再作成する必要があります。次の手順に従って、ディスクマウント設定を再構築します。

手順

  1. 既存の物理ボリューム、ボリュームグループ、および論理ボリュームをスキャンします。

    # pvscan
    # vgscan
    # lvscan
  2. 各 gluster ブリックの UUID を決定します。

    # blkid lv_name
  3. UUID を使用して、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
  4. ボリュームからの情報に基づいて、マウントディレクトリーを作成します。

    # mkdir -p /gluster_bricks/{engine,vmstore,data}
  5. すべてのブリックを取り付けます。

    # mount -a
  6. すべてのブリックマウントポイントに必要な 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