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」」 を参照してください。
以下の手順は、レプリカのペアの各ノードで実行する必要があります。
- オペレーティングシステムパーティション上ではない場所に、設定ディレクトリーとファイルをバックアップします。
/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
- ノードが NFS-Ganesha クラスターの一部である場合には、ノードをスタンバイモードにします。
# pcs cluster standby
- 保留中の自己修復操作がないことを確認します。
# gluster volume heal volname info
- このノードが NFS-Ganesha クラスターの一部である場合は、以下を実行します。
- PCS クラスターを無効にして、これが停止していることを確認します。
# pcs cluster disable # pcs status
- nfs-ganesha サービスを停止します。
# systemctl stop nfs-ganesha
- ノード上のすべての gluster サービスを停止し、それらが停止していることを確認します。
# systemctl stop glusterd # pkill glusterfs # pkill glusterfsd # pgrep gluster
- システムがレガシーの 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
- 以下のコマンドを使用してサーバーを更新します。
# yum update
- ボリュームがシックプロビジョニングされ、スナップショットを使用する予定の場合は、以下の手順を実行してシンプロビジョニングされたボリュームに移行します。注記インサービスソフトウェアアップグレード時にシックプロビジョニングされたボリュームからシンプロビジョニングされたボリュームに移行するには、ブリックにあるデータに応じて長い時間がかかります。スナップショットを使用する予定がない場合は、この手順を省略できます。ただし、既存の環境でスナップショットを使用する場合は、オフラインでアップグレードする方法が推奨されます。オフラインアップグレードの詳細は、を参照してください。 「Red Hat Gluster Storage 3.4 へのオフラインアップグレード」インサービスソフトウェアアップグレードを使用してシックプロビジョニングされたボリュームからシンプロビジョニングされたボリュームに移行する前に、Red Hat サポート担当者にお問い合わせください。
- 以下のコマンドを実行して、ボリュームに関連付けられたブリックをすべてアンマウントします。
# umount mount_point
- 以下のコマンドを実行して、ブリックに関連付けられた LVM を削除します。
# lvremove logical_volume_name
以下に例を示します。# lvremove /dev/RHS_vg/brick1
- 以下のコマンドを実行してボリュームグループを削除します。
# vgremove -ff volume_group_name
以下に例を示します。# vgremove -ff RHS_vg
- 以下のコマンドを実行して物理ボリュームを削除します。
# pvremove -ff physical_volume
- 物理ボリューム (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 』を』 参照してください。 - 以下のコマンドを実行して、PV から単一のボリュームグループを作成します。
# vgcreate volume_group_name disk
以下に例を示します。# vgcreate RHS_vg /dev/vdb
- 以下のコマンドを使用して、シンプールを作成します。
# 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
- 以下のコマンドを実行して、プールからシンボリュームを作成します。
# lvcreate -V size -T pool_device -n thinvol_name
以下に例を示します。# lvcreate -V 1.5T -T /dev/RHS_vg/thin_pool -n thin_vol
- 以下のコマンドを実行して、新規ボリュームにファイルシステムを作成します。
# mkfs.xfs -i size=512 thin_vol
以下に例を示します。# mkfs.xfs -i size=512 /dev/RHS_vg/thin_vol
バックエンドがシンプロビジョニングされたボリュームに変換されるようになりました。 - シンプロビジョニングされたボリュームをブリックディレクトリーにマウントし、ブリックに拡張属性を設定します。以下に例を示します。
# setfattr -n trusted.glusterfs.volume-id \ -v 0x$(grep volume-id /var/lib/glusterd/vols/volname/info \ | cut -d= -f2 | sed 's/-//g') $brick
- glusterd を無効にします。
# systemctl disable glusterd
これにより、これがシステムの起動時に起動されるのを防ぐことができ、ノードがクラスターに再度参加する前に正常であることを確認できます。 - サーバーを再起動します。
# shutdown -r now "Shutting down for upgrade to Red Hat Gluster Storage 3.4"
- 重要この手順は、直前の手順でシンプロビジョニングされたボリュームに移行した各シックプロビジョニングボリュームに対してのみ実行します。Automatic File Replication 拡張属性を別のノードから変更し、修復プロセスがレプリカサブボリュームのブリックからシンプロビジョニングされたブリックに対して実行されるようにします。
- FUSE マウントポイントを作成して、拡張属性を編集します。
# mount -t glusterfs HOSTNAME_or_IPADDRESS:/VOLNAME /MOUNTDIR
- マウントポイントに新しいディレクトリーを作成し、この名前のディレクトリーがまだ存在していないことを確認します。
# mkdir /MOUNTDIR/name-of-nonexistent-dir
- ディレクトリーを削除し、拡張属性を設定します。
# rmdir /MOUNTDIR/name-of-nonexistent-dir
# setfattr -n trusted.non-existent-key -v abc /MOUNTDIR # setfattr -x trusted.non-existent-key /MOUNTDIR
- レプリカのサブボリューム内のブリックの拡張属性がゼロ (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
glusterd
サービスを起動します。# systemctl start glusterd
- Red Hat Gluster Storage の最新バージョンにアップグレードしていることを確認します。
# gluster --version
- すべてのブリックがオンラインであることを確認します。
# 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
- ボリュームで自己修復を開始します。
# gluster volume heal volname
- ボリューム上の自己修復が完了していることを確認します。
# 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
- 共有ストレージがマウントされていることを確認します。
# mount | grep /run/gluster/shared_storage
- このノードが NFS-Ganesha クラスターの一部である場合は、以下を実行します。
- システムが SELinux により管理されている場合は、
ganesha_use_fusefs
のブール値をon
に設定します。# setsebool -P ganesha_use_fusefs on
- NFS-Ganesha サービスを起動します。
# systemctl start nfs-ganesha
- クラスターを有効にし、起動します。
# pcs cluster enable # pcs cluster start
- ノードをスタンバイモードからリリースします。
# pcs cluster unstandby
- pcs クラスターが実行されており、ボリュームがアップグレード後に正しくエクスポートされていることを確認します。
# pcs status # showmount -e
上記の手順を実施した後、NFS-ganesha は短い猶予期間に入ります。I/O 操作はこの猶予期間に停止します。ganesha.log
ファイルにNFS Server Now NOT IN GRACE
が表示されるのを確認してから続行します。
- オプションで、システムの起動時に glusterd サービスが起動するようにします。
# systemctl enable glusterd
- レプリカのペアの他のノードで上記の手順を繰り返します。分散レプリケーションの設定の場合、すべてのレプリカのペアで上記の手順を繰り返します。
- すべてのノードがアップグレードされたら、以下のコマンドを実行してクラスターの
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 』』 を参照してください。 - アップグレード前にクライアント側のクォーラが無効にされている場合は、以下のコマンドを実行してこれをアップグレードします。
# gluster volume set volname cluster.quorum-type auto
- ダミーノードを以前に作成している場合は、以下のコマンドを実行してそのノードの割り当てを解除します。
# gluster peer detach <dummy_node name>
- アップグレード前にマスターとスレーブ間の 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
- イレイジャーコーディングされた(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