 |
≫ |
|
|
 |
 |
共有ディスクは、論理ボリュームとして構成される必要があります。その際利用できる形態として、HP LVMとVERITAS VxVMの2種類があります。ここではHP LVMを使用して共有ボリュームを作成することにします。具体的には、LVMを使用して共有ディスク上に論理ボリュームを作成し、その上にファイルシステムを作成するという作業を行います。
先に4.1節で、各ノードから共有ディスクに接続されているHBAが2枚あるのでioscanによりディスクが2重に見えていることを述べました。今回のServiceguardクラスタでは、これら 2 系統の共有ディスクに対する接続をHP PV-link機能により、プライマリ、スタンバイとして設定します。これにより、通常はプライマリの接続を使用してI/Oを行い、プライマリの接続に故障が発生してI/Oを行うことが不可能になった場合には、自動的にスタンバイ側の接続を使用してI/Oが継続されるようになります。
共有ディスク上にボリュームグループを作成するためには、大きくわけて以下の3段階の作業が必要になります。
|
|
 |
|
 |
7.1. PV-linkによるディスクアレイ上のボリュームグループの作成 |
 |
 |
 |
 |
共有ディスクアレイ上の大容量記憶装置を使用するボリュームグループを構成している場合は、各ノードから冗長I/Oチャネルを使用して、アレイ上の別々のポートに接続する必要があります。このようにすると、アレイ上に定義したLUNまたは論理ディスクへの代替リンク(PV-link)を定義できます。
以下の例では、LVM コマンドを使用して代替リンクを構成します。この例では、次のようなディスク構成を想定しています。
0/6/0/0.1.0.42.0.0.0 /dev/dsk/c4t0d0 /* I/O Channel 4 (0/6/0) SCSI address 0 LUN 0 */
0/6/0/0.1.0.42.0.0.1 /dev/dsk/c4t0d1 /* I/O Channel 4 (0/6/0) SCSI address 0 LUN 1 */
0/6/0/0.1.0.42.0.0.2 /dev/dsk/c4t0d2 /* I/O Channel 4 (0/6/0) SCSI address 0 LUN 2 */
0/6/0/0.1.0.42.0.0.3 /dev/dsk/c4t0d3 /* I/O Channel 4 (0/6/0) SCSI address 0 LUN 3 */
0/6/2/0.1.0.39.0.0.0 /dev/dsk/c6t0d0 /* I/O Channel 6 (0/6/2) SCSI address 0 LUN 0 */
0/6/2/0.1.0.39.0.0.1 /dev/dsk/c6t0d1 /* I/O Channel 6 (0/6/2) SCSI address 0 LUN 1 */
0/6/2/0.1.0.39.0.0.2 /dev/dsk/c6t0d2 /* I/O Channel 6 (0/6/2) SCSI address 0 LUN 2 */
0/6/2/0.1.0.39.0.0.3 /dev/dsk/c6t0d3 /* I/O Channel 5 (0/6/2) SCSI address 0 LUN 3 */
|
このように構成されたディスクアレイに対して、ioscanコマンドを実行すると、同じLUN(論理ディスク: この場合0番)に対して以下のデバイスファイルが表示されます。
/dev/dsk/c4t0d0
/dev/dsk/c6t0d0
|
このLUNをvgdataという新しく作成するボリュームグループ配下のlvol1という論理ボリュームとして構成します。手順は以下のとおりです。作業は、クラスタ内のノードの1つの上で行います。ここでは、クラスタとして構成する2つのノード、fred、gingerのうちfredの上で作業を行うものとします。
|
- まず/dev/vgdataというディレクトリを作成します。
- 次に、/dev/vgdataディレクトリにgroupという制御ファイルを作成します。
# mknod /dev/vgdata/group c 64 0xhh0000 |
メジャー番号は常に64で、16進のマイナー番号は以下の形式になります。
hhは、作成するボリュームグループに固有でなくてはなりません。すでに構成されているボリュームグループの番号のより後ろにあり、システムで次に使用できる番号を16進にして使用します。構成済みボリュームグループのリストを表示するには、次のコマンドを使用します。
- LUNに関連したデバイスファイルのうちの1つに対してpvcreateコマンドを使用してLVMの物理ボリュームとしてLUNを定義します。
# pvcreate /dev/rdsk/c4t0d0 |
これでうまくいかない場合には -f オプション (force オプション) を指定して pvcreate を実行してみてください。LUNに関連したデバイスファイル(/dev/dsk/c4t0d0、/dev/dsk/c6t0d0)のうちの1つに対してのみこの処理を行う必要があります。
- 次のコマンドを使ってボリュームグループを作成し、物理ボリュームを追加します。
# vgcreate /dev/vgdata /dev/dsk/c4t0d0
# vgextend /dev/vgdata /dev/dsk/c6t0d0
|
vgdisplay -v コマンドを入力すると、一次リンクと代替リンクが表示されます。この時点でLVMは、/dev/dsk/c4t0d0で示されるI/Oチャネルを一次リンクとして認識しています。一次リンクに障害が発生すると、LVMは自動的にリンクを/dev/dsk/c6t0d0で示される代替I/Oチャネルに切り替えます。
|
 |
論理ボリュームを作成する 論理ボリュームを作成するには、次のコマンドを使用します。(例では/dev/vgdataの論理ボリューム)
# lvcreate -L 120 /dev/vgdata |
このコマンドは、lvol1という120MBの論理ボリュームを作成します。このボリューム名は、コマンドでボリューム名が省略されたときのデフォルトのボリューム名です。
|
 |
 |
ファイルシステムを作成する 上で作成した論理ボリューム/dev/vgdata/lvol1をファイルシステムとして使用する場合は、この論理ボリューム上にファイルシステムを作成します。そして、作成したファイルシステムをマウントするディレクトリを定義します。手順は以下のとおりです。
|
 |
 |
|
|
- 新しく作成した論理ボリューム上に、ファイルシステムを作成します。
# newfs -F vxfs /dev/vgdata/rlvol1 |
ここでは、論理ボリュームの raw デバイスファイルを使用しています。
- ディスクをマウントするディレクトリを作成します。
ここでは/mnt1というディレクトリ名にしていますが、環境に合わせて適宜変更してください。
- ここまでの作業を確認するために、ディスクをマウントします。
# mount /dev/vgdata/lvol1 /mnt1 |
mountコマンドでは、論理ボリュームのブロック型デバイスファイルを使用しています。
- 以下のコマンドを使用して、構成を確認します。
# vgdisplay -v /dev/vgdata |
|
 |
クラスタデータ用のボリュームグループを作成した後、作成したボリュームグループを他のクラスタ内のノードからもアクティブ化して使用できるように、ボリュームグループを配布します。
|
 |
ボリュームグループの非アクティブ化 ボリュームグループを作成した時点で、そのボリュームグループは、構成ノード(fred)上でアクティブになっています。もう一方のノード(ginger)で使用するためにボリュームグループをセットアップする前に、まずボリュームグループにあるファイルシステムのすべてのマウントを外し、それから非アクティブ化しなければなりません。なお、クラスタの実行時には、ボリュームグループのアクティブ化とファイルシステムのウントは、パッケージコントロールスクリプトで行われます。(パッケージコントロールスクリプトについては後述します。)
前項の例に続き、fred 上で次のように実行します。
# umount /mnt1
# vgchange -a n /dev/vgdata
|
|
 |
 |
LVMコマンドを使用してボリュームグループを配布する 同じボリュームグループを他のクラスタノード上にセットアップするには、次のコマンドを使用します。この例のコマンドでは、gingerに新しいボリュームグループをセットアップして、fredで作成した物理ボリュームを使用できるようにします。
ginger上にボリュームグループをセットアップするには、以下の手順に従います。
|
 |
 |
|
|
- fred上で、指定したファイルにボリュームグループのマッピングのコピーを作成します。これによりfred上に/tmp/vgdata.mapというファイルが作成されます。このファイルをマップファイルと呼びます。
# vgexport -p -s -m /tmp/vgdata.map /dev/vgdata |
- fred上で、マップファイルをgingerへコピーします。
# rcp /tmp/vgdata.map ginger:/tmp/vgdata.map |
- ginger 上で、ボリュームグループのディレクトリを作成します。
- ginger 上で、/dev/vgdataディレクトリにgroupという制御ファイルを作成します。
# mknod /dev/vgdata/group c 64 0xhh0000 |
メジャー番号は常に64で、16進のマイナー番号は次の形式になります。
hhは、生成するボリュームグループに固有でなくてはなりません。可能な場合は、fred上のgroupファイルと同じ番号を使用してください。ボリュームグループのリストを表示するには、次のコマンドを使用します。
- マップファイルを使用して、ノードfredからボリュームグループのデータをインポートします。そのためにはノードginger上で、次のように入力します。
# vgimport -s -m /tmp/vgdata.map /dev/vgdata |
ginger上のディスクデバイス名は、fred上のディスクデバイス名と異なる場合があるので注意します。クラスタ内で物理ボリューム名に矛盾がないことを確かめてください。
- fredのボリュームグループを非アクティブ化したことを確認してから、gingerのボリュームグループを使用可能にします。
# vgchange -a y /dev/vgdata |
- ディスクをマウントするディレクトリを作成します。
- gingerのボリュームグループをマウントして、確認します。
# mount /dev/vgdata/lvol1 /mnt1 |
- gingerのボリュームグループのマウントを外します。
- gingerのボリュームグループを非アクティブ化します。
# vgchange -a n /dev/vgdata |
|
 |
前項では、Serviceguardで使用するボリュームグループと論理ボリュームを作成する一般的な方法について説明しました。さらにボリュームグループを追加するには、ボリュームグループ名、論理ボリューム名、物理ボリューム名を他の名前に置き換えて同様の手順を繰り返し、必要なだけボリュームグループを作成してください。ただしディスクデバイス名には注意が必要です。例えば、あるノード上では/dev/dsk/c0t2d0という名前のディスクデバイスが、他のノード上でも同じ名前であるとは限りません。 |
|