Red Hat Training

A Red Hat training course is available for Red Hat Gluster Storage

7.2.3. インサービスソフトウェアアップグレード

xmvn 環境をお持ちの場合は、「「In-Service Software Upgrade for a inactive Setup Setup」」 を参照してください。
以下の手順は、レプリカのペアの各ノードで実行する必要があります。
  1. オペレーティングシステムパーティション上ではない場所に、設定ディレクトリーとファイルをバックアップします。
    • /var/lib/glusterd
    • /etc/swift
    • /etc/samba
    • /etc/ctdb
    • /etc/glusterfs
    • /var/lib/samba
    • /var/lib/ctdb
    • /var/run/gluster/shared_storage/nfs-ganesha
    NFS-Ganesha を使用する場合は、すべてのノードから以下のファイルをバックアップします。
    • /etc/ganesha/exports/export.*.conf
    • /etc/ganesha/ganesha.conf
    • /etc/ganesha/ganesha-ha.conf
  2. ノードが NFS-Ganesha クラスターの一部である場合には、ノードをスタンバイモードにします。
    # pcs cluster standby
  3. 保留中の自己修復操作がないことを確認します。
    # gluster volume heal volname info
  4. このノードが NFS-Ganesha クラスターの一部である場合は、以下を実行します。
    1. PCS クラスターを無効にして、これが停止していることを確認します。
      # pcs cluster disable
      # pcs status
    2. nfs-ganesha サービスを停止します。
      # systemctl stop nfs-ganesha
  5. ノード上のすべての gluster サービスを停止し、それらが停止していることを確認します。
    # systemctl stop glusterd
    # pkill glusterfs
    # pkill glusterfsd
    # pgrep gluster
  6. システムがレガシーの Red Hat Classic 更新ソフトウェアを使用していないことを確認します。
    # migrate-rhs-classic-to-rhsm --status
    システムでこのレガシーソフトウェアを使用している場合、Red Hat Subscription Manager に移行し、移行の完了時にステータスが変更されていることを確認します。
    # migrate-rhs-classic-to-rhsm --rhn-to-rhsm
    # migrate-rhs-classic-to-rhsm --status
  7. 以下のコマンドを使用してサーバーを更新します。
    # yum update
  8. ボリュームがシックプロビジョニングされ、スナップショットを使用する予定の場合は、以下の手順を実行してシンプロビジョニングされたボリュームに移行します。
    注記
    インサービスソフトウェアアップグレード時にシックプロビジョニングされたボリュームからシンプロビジョニングされたボリュームに移行するには、ブリックにあるデータに応じて長い時間がかかります。スナップショットを使用する予定がない場合は、この手順を省略できます。ただし、既存の環境でスナップショットを使用する場合は、オフラインでアップグレードする方法が推奨されます。オフラインアップグレードの詳細は、を参照してください。 「Red Hat Gluster Storage 3.4 へのオフラインアップグレード」
    インサービスソフトウェアアップグレードを使用してシックプロビジョニングされたボリュームからシンプロビジョニングされたボリュームに移行する前に、Red Hat サポート担当者にお問い合わせください。
    1. 以下のコマンドを実行して、ボリュームに関連付けられたブリックをすべてアンマウントします。
      # umount mount_point
    2. 以下のコマンドを実行して、ブリックに関連付けられた LVM を削除します。
      # lvremove logical_volume_name
      以下に例を示します。
      # lvremove /dev/RHS_vg/brick1
    3. 以下のコマンドを実行してボリュームグループを削除します。
      # vgremove -ff volume_group_name
      以下に例を示します。
      # vgremove -ff RHS_vg
    4. 以下のコマンドを実行して物理ボリュームを削除します。
      # pvremove -ff physical_volume
    5. 物理ボリューム (PV) が作成されていない場合は、以下のコマンドを実行して RAID 6 ボリュームの PV を作成します。それ以外の場合は、次の手順に進みます。
      # pvcreate --dataalignment 2560K /dev/vdb
      詳細は、『 『Red Hat Gluster Storage 3.4 管理ガイドhttps://access.redhat.com/documentation/ja-jp/red_hat_gluster_Storage/3.4/html-single/administration_guide/#Formatting_and_Mounting_Bricks 』を』 参照してください。
    6. 以下のコマンドを実行して、PV から単一のボリュームグループを作成します。
      # vgcreate volume_group_name disk
      以下に例を示します。
      # vgcreate RHS_vg /dev/vdb
    7. 以下のコマンドを使用して、シンプールを作成します。
      # lvcreate -L size --poolmetadatasize md_size --chunksize chunk_size -T pool_device
      以下に例を示します。
      # lvcreate -L 2T --poolmetadatasize 16G --chunksize 256  -T /dev/RHS_vg/thin_pool
    8. 以下のコマンドを実行して、プールからシンボリュームを作成します。
      # lvcreate -V size -T pool_device -n thinvol_name
      以下に例を示します。
      # lvcreate -V 1.5T -T /dev/RHS_vg/thin_pool -n thin_vol
    9. 以下のコマンドを実行して、新規ボリュームにファイルシステムを作成します。
      # mkfs.xfs -i size=512 thin_vol
      以下に例を示します。
      # mkfs.xfs -i size=512 /dev/RHS_vg/thin_vol
      バックエンドがシンプロビジョニングされたボリュームに変換されるようになりました。
    10. シンプロビジョニングされたボリュームをブリックディレクトリーにマウントし、ブリックに拡張属性を設定します。以下に例を示します。
      # setfattr -n trusted.glusterfs.volume-id \ -v 0x$(grep volume-id /var/lib/glusterd/vols/volname/info \ | cut -d= -f2 | sed 's/-//g') $brick
  9. glusterd を無効にします。
    # systemctl disable glusterd
    これにより、これがシステムの起動時に起動されるのを防ぐことができ、ノードがクラスターに再度参加する前に正常であることを確認できます。
  10. サーバーを再起動します。
    # shutdown -r now "Shutting down for upgrade to Red Hat Gluster Storage 3.4"
  11. 重要
    この手順は、直前の手順でシンプロビジョニングされたボリュームに移行した各シックプロビジョニングボリュームに対してのみ実行します。
    Automatic File Replication 拡張属性を別のノードから変更し、修復プロセスがレプリカサブボリュームのブリックからシンプロビジョニングされたブリックに対して実行されるようにします。
    1. FUSE マウントポイントを作成して、拡張属性を編集します。
      # mount -t glusterfs HOSTNAME_or_IPADDRESS:/VOLNAME /MOUNTDIR
    2. マウントポイントに新しいディレクトリーを作成し、この名前のディレクトリーがまだ存在していないことを確認します。
      # mkdir /MOUNTDIR/name-of-nonexistent-dir
    3. ディレクトリーを削除し、拡張属性を設定します。
      # rmdir /MOUNTDIR/name-of-nonexistent-dir
      # setfattr -n trusted.non-existent-key -v abc /MOUNTDIR
      # setfattr -x trusted.non-existent-key /MOUNTDIR
    4. レプリカのサブボリューム内のブリックの拡張属性がゼロ (zero) に設定されていないことを確認します。
      # getfattr -d -m. -e hex brick_path
      以下の例では、/dev/RHS_vg/brick2 の拡張属性である trusted.afr.repl3-client-1 はゼロ (zero) に設定されていません。
      # getfattr -d -m. -e hex /dev/RHS_vg/brick2
      getfattr: Removing leading '/' from absolute path names
      # file: /dev/RHS_vg/brick2
      trusted.afr.dirty=0x000000000000000000000000
      trusted.afr.repl3-client-1=0x000000000000000400000002
      trusted.gfid=0x00000000000000000000000000000001
      trusted.glusterfs.dht=0x000000010000000000000000ffffffff
      trusted.glusterfs.volume-id=0x924c2e2640d044a687e2c370d58abec9
  12. glusterd サービスを起動します。
    # systemctl start glusterd
  13. Red Hat Gluster Storage の最新バージョンにアップグレードしていることを確認します。
    # gluster --version
  14. すべてのブリックがオンラインであることを確認します。
    # gluster volume status
    以下に例を示します。
    # gluster volume status
    Status of volume: r2
    
    Gluster process                                         Port    Online  Pid
    ------------------------------------------------------------------------------
    Brick 10.70.43.198:/brick/r2_0                          49152   Y       32259
    Brick 10.70.42.237:/brick/r2_1                          49152   Y       25266
    Brick 10.70.43.148:/brick/r2_2                          49154   Y       2857
    Brick 10.70.43.198:/brick/r2_3                          49153   Y       32270
    NFS Server on localhost                                 2049    Y       25280
    Self-heal Daemon on localhost                           N/A     Y       25284
    NFS Server on 10.70.43.148                              2049    Y       2871
    Self-heal Daemon on 10.70.43.148                        N/A     Y       2875
    NFS Server on 10.70.43.198                              2049    Y       32284
    Self-heal Daemon on 10.70.43.198                        N/A     Y       32288
    
    Task Status of Volume r2
    ------------------------------------------------------------------------------
    There are no active volume tasks
  15. ボリュームで自己修復を開始します。
    # gluster volume heal volname
  16. ボリューム上の自己修復が完了していることを確認します。
    # gluster volume heal volname info
    以下の例は、完了した自己修復操作を示しています。
     # gluster volume heal drvol info
    Gathering list of entries to be healed on volume drvol has been successful
    
    Brick 10.70.37.51:/rhs/brick1/dir1
    Number of entries: 0
    
    Brick 10.70.37.78:/rhs/brick1/dir1
    Number of entries: 0
    
    Brick 10.70.37.51:/rhs/brick2/dir2
    Number of entries: 0
    
    Brick 10.70.37.78:/rhs/brick2/dir2
    Number of entries: 0
  17. 共有ストレージがマウントされていることを確認します。
    # mount | grep /run/gluster/shared_storage
  18. このノードが NFS-Ganesha クラスターの一部である場合は、以下を実行します。
    1. システムが SELinux により管理されている場合は、ganesha_use_fusefs のブール値を on に設定します。
      # setsebool -P ganesha_use_fusefs on
    2. NFS-Ganesha サービスを起動します。
      # systemctl start nfs-ganesha
    3. クラスターを有効にし、起動します。
      # pcs cluster enable
      # pcs cluster start
    4. ノードをスタンバイモードからリリースします。
      # pcs cluster unstandby
    5. pcs クラスターが実行されており、ボリュームがアップグレード後に正しくエクスポートされていることを確認します。
      # pcs status
      # showmount -e
      上記の手順を実施した後、NFS-ganesha は短い猶予期間に入ります。I/O 操作はこの猶予期間に停止します。ganesha.log ファイルに NFS Server Now NOT IN GRACE が表示されるのを確認してから続行します。
  19. オプションで、システムの起動時に glusterd サービスが起動するようにします。
    # systemctl enable glusterd
  20. レプリカのペアの他のノードで上記の手順を繰り返します。分散レプリケーションの設定の場合、すべてのレプリカのペアで上記の手順を繰り返します。
  21. すべてのノードがアップグレードされたら、以下のコマンドを実行してクラスターの op-version を更新します。これにより、クラスター内の互換性の問題を防ぐことができます。
     # gluster volume set all cluster.op-version 31306
    注記
    31306 は、Red Hat Gluster Storage 3.4 Async Update の cluster.op-version の値に使用されます。他のバージョンの正しいcluster.op-version 値については、「サポート対象の Red Hat Gluster Storage バージョン」 を参照してください。
    注記
    スナップショットを有効にする場合は、『 『Red Hat Gluster Storage 3.4 Administration Guide :https://access.redhat.com/documentation/ja-jp/red_hat_gluster_Storage/3.4/html-single/administration_guide/#Troubleshooting1』 を参照してください。
  22. アップグレード前にクライアント側のクォーラが無効にされている場合は、以下のコマンドを実行してこれをアップグレードします。
    # gluster volume set volname cluster.quorum-type auto
  23. ダミーノードを以前に作成している場合は、以下のコマンドを実行してそのノードの割り当てを解除します。
    # gluster peer detach <dummy_node name>
  24. アップグレード前にマスターとスレーブ間の geo レプリケーションセッションが無効になっている場合は、メタボリュームを設定してセッションを再起動します。
    # gluster volume set all cluster.enable-shared-storage enable
    # gluster volume geo-replication Volume1 example.com::slave-vol config use_meta_volume true
    # gluster volume geo-replication MASTER_VOL SLAVE_HOST::SLAVE_VOL start
  25. イレイジャーコーディングされた(dispersed)ボリュームをアップグレードするために disperse.optimistic-change-log オプションおよび disperse.eager-lock オプションを無効にしている場合は、これらの設定を再度有効にします。
    # gluster volume set volname disperse.optimistic-change-log on
    # gluster volume set volname disperse.eager-lock on