これまで三回に渡り、GNBD、CLVMおよびGFSについて概説してきた。以上を元に、次のことを今後の目標とし、実際にシステムを組んでみたい。と宣言したきり、ちっとも実践編へ進まなかったシリーズを再開。まずは、作業前の注意点。
- GNBDでディスクデバイスを共有する
- GNBDで共有されたブロックデバイスから、CLVMでクラスタ上で共有されるVGおよびLVを生成する。
- CLVMで生成したLV上にGFSを作成し、各クラスタメンバ上でマウントする。
『Red Hat Cluster: CentOS 5.1上でRHCSを使ってみる』シリーズに従いクラスタを構成した後、GNBD、CLVMおよびGFSでファイル共有を実現する。以下の点に注意する。
- 現時点(2008/2/28)の最新版kernel-xen-2.6.18-53.1.13.el5およびkmod-gnbd-xen-0.1.4-12.el5をXen DomUで使うと、CPU負荷が異常に高くなるバグがある。追記(2008/3/11): この問題は解決された。『Red Hat Cluster: GNBD, CLVM and GFS・その4・CentOS 5.1での注意点・補足』参照
- GNBDにはinit scriptが準備されていない。
- GNBDクライアントサービスの起動順は、サービスcmanの後、サービスclvmdの前でないといけない。
『Red Hat Cluster: CentOS 5.1上でRHCSを使ってみる・その3・DomU dcXのインストール』では、OSインストール時にupdatesなどのレポジトリを参照し、最新版をインストールするようKickstart設定ファイルに指定していたが、この部分をコメントアウトする。
repo --name=base --baseurl=http://repository.xencluster/centos/5/os/i386/ #repo --name=updates --baseurl=http://repository.xencluster/centos/5/updates/i386/ #repo --name=addons --baseurl=http://repository.xencluster/centos/5/addons/i386/ #repo --name=extras --baseurl=http://repository.xencluster/centos/5/extras/i386/
CetnOS 5.1のパッケージgnbdおよびkmod-gnbdには、GNBDのinitスクリプトが付属していない(少なくとも現時点では)。このブログにリンクしてもらっている『funなJava、mocoなLinux』の記事『GNBD init スクリプト』を参考にする。
サービス起動順だが、gnbd_export(8)のman pageに次のような記述がある
-c Enable caching.Device mapper multi path(DMMP)を使う場合や、GFSをGNBDサーバ上で使うような場合は、GNBDのキャッシュ機能を有効にしてはいけない。
<<略>>
WARNING: You must NOT specify this option if you wish to use gnbd with dm multi-pathing, or run GFS on gnbd server machines.
同じく
-c
オプションの項に次のような記述もある。With the -c option, it is not necessary to have the gnbd server machine be part of the cluster. If -c option is not used, the server machine must already have a cluster manager running on it.この
-c
オプションを使う場合は、GNBDサーバがクラスタメンバである必要はない(クラスタメンバであってもよい)。この-c
オプションを使わない場合は、GNBDサーバ上でクラスタマネージャが既に動作していなければならない。以上のことから考えると、DMMPを使う可能性を考慮した場合、
-c
を使えないし、gnbdより先にcmanが起動されている必要がある。GFSをGNBDサーバ上で使う場合も同様。一方、clvmdが起動される前に、clvmdが認識する物理ボリューム(physical volume, PV)がOSに認識されている必要がある。そうでなければ、clvmdがクラスタ対応ボリュームグループ(volume group, VG)を正しく認識できない。この状態で、そのクラスタ対応VG上に論理ボリューム(logical volmume, LV)を作成すると、アクティブにできなくなったり、そのLVを削除できなくなったりする。例えば、
[root@dc3 ~]# service clvmd start Starting clvmd: [ OK ] Activating VGs: 2 logical volume(s) in volume group "VolGroup00" now active [ OK ] [root@dc3 ~]# service gnbd-client start Starting GNBD Client: [ OK ] resending requests [root@dc3 ~]# vgs VG #PV #LV #SN Attr VSize VFree VGcDomUs00 1 1 0 wz--nc 4.00G 0 VolGroup00 1 2 0 wz--n- 3.88G 0 [root@dc3 ~]# lvs LV VG Attr LSize Origin Snap% Move Log Copy% LogVolGFS00 VGcDomUs00 -wi--- 4.00G LogVol00 VolGroup00 -wi-ao 3.34G LogVol01 VolGroup00 -wi-ao 544.00M [root@dc3 ~]# lvchange --available y LogVolGFS00 VGcDomUs00 Volume group "LogVolGFS00" not found Error locking on node dc2.xencluster: Volume group for uuid not found: 0rrqOzVArnLSIzM8nyTlj4nVONcbaO13QxVYIwLjU0SFe5FHRGDTnni7f9Lmu1Mp Error locking on node dc3.xencluster: Volume group for uuid not found: 0rrqOzVArnLSIzM8nyTlj4nVONcbaO13QxVYIwLjU0SFe5FHRGDTnni7f9Lmu1Mp [root@dc3 ~]# lvremove /dev/VGcDomUs00/LogVolGFS00 Error locking on node dc3.xencluster: Volume group for uuid not found: 0rrqOzVArnLSIzM8nyTlj4nVONcbaO13QxVYIwLjU0SFe5FHRGDTnni7f9Lmu1Mp Can't get exclusive access to volume "LogVolGFS00" [root@dc3 ~]#正しい順番で起動されていれば、以下の様に操作できるはずだ。
[root@dc1 ~]# vgs VG #PV #LV #SN Attr VSize VFree VGcDomUs00 1 1 0 wz--nc 4.00G 0 VolGroup00 1 2 0 wz--n- 3.88G 0 [root@dc1 ~]# lvs LV VG Attr LSize Origin Snap% Move Log Copy% LogVolGFS00 VGcDomUs00 -wi-a- 4.00G LogVol00 VolGroup00 -wi-ao 3.34G LogVol01 VolGroup00 -wi-ao 544.00M [root@dc1 ~]# lvchange --available n /dev/VGcDomUs00/LogVolGFS00 [root@dc1 ~]# lvs LV VG Attr LSize Origin Snap% Move Log Copy% LogVolGFS00 VGcDomUs00 -wi--- 4.00G LogVol00 VolGroup00 -wi-ao 3.34G LogVol01 VolGroup00 -wi-ao 544.00M [root@dc1 ~]# lvchange --available y /dev/VGcDomUs00/LogVolGFS00 [root@dc1 ~]# lvs LV VG Attr LSize Origin Snap% Move Log Copy% LogVolGFS00 VGcDomUs00 -wi-a- 4.00G LogVol00 VolGroup00 -wi-ao 3.34G LogVol01 VolGroup00 -wi-ao 544.00M [root@dc1 ~]# [root@dc2 ~]# lvchange --available n /dev/VGcDomUs00/LogVolGFS00 [root@dc2 ~]# [root@dc3 ~]# lvchange --available n /dev/VGcDomUs00/LogVolGFS00 [root@dc3 ~]# [root@dc1 ~]# lvremove /dev/VGcDomUs00/LogVolGFS00 Logical volume "LogVolGFS00" successfully removed [root@dc1 ~]#
以上の点に注意して、実際にGFSによるファイル共有環境を構築する。
解説: その1、その2、その3
kernel-xenにバグか?
その4・CentOS 5.1での注意点
その5・GNBDの設定
その6・CLVMの設定
その7・GFS2の設定
その8・Congaからの設定
その9・ベンチマーク
その10・考察と予告
0 件のコメント:
コメントを投稿