第3章 GNBD ドライバーとコマンドの使用
Global Network Block Device (GNBD) ドライバーはノードがそのローカルストレージを GNBD として ネットワーク上でエキスポートできるようにして、そのネットワークの他の ノードがストレージを共有出来るようにします。GNBD をインポートするクライアントノードは それを普通のブロックデバイスのように使用します。複数クライアント上での GNBD の インポートは、GFS を使用可能にする共有ストレージの設定を形成します。
GNBD ドライバーは以下のコンポーネントを通じて実装されます。
gnbd_serv
— GNBD サーバーを実装します。これは、 ノードがネットワーク上でローカルストレージをエキスポートできるようにする user-spaceデーモンです。gnbd.ko
— GNBD クライアント (GNBD デバイスを使用しているノード) 上で GNBD デバイスドライバーを実装します。
次の2つのユーザーコマンドを使用して GNBD を設定できます:
3.1. サーバーから GNBD をエキスポート
gnbd_serv
デーモンは、それが GNBD としてストレージを エキスポートできるようになるにはノード上で稼働している必要があります。以下のように して gnbd_serv
コマンドを使用して、gnbd_serv
デーモンを開始します:
#gnbd_serv
gnbd_serv: startup succeeded
ローカルストレージがエキスポート用に識別されると、そのエキスポートの ために
gnbd_export
コマンドが使用されます。
注記
デバイスマッパーマルチパスを持つ GNBD サーバーを設定する時は、ページキャッシングを 使用してはいけません。論理ボリュームの一部となっている全ての GNBD 群はキャッシングを 無効にして実行する必要があります。デフォルトで、
gnbd_export
コマンドはキャッシングをオフにしてエキスポートします。
注記
GNBD をインポートするのはクライアントであるため、サーバーは GNBD をインポートしてそれを 使用すべきではありません。サーバーがキャッシュ化されていないデバイスをエキスポート した場合、背後にあるデバイスも
gfs
によって使用されます。
使用法
gnbd_export -d
pathname
-e
gnbdname
[-c
][-u
][-U
pathname
- エキスポートするストレージデバイスを指定します。
gnbdname
- GNBD の為に選択された任意の名前を指定します。これは GNBD クライアント上で デバイス名として使用されます。この名前は、ネットワーク内でエキスポートされる 全ての GNBD 群内で特有のものである必要があります。
-o
- 読み込み専用としてデバイスをエキスポートします。
-c
- キャッシングを有効にします。エキスポートされた GNBD から読み込み、Linux ページ キャッシングを活用します。デフォルトで、
gnbd_export
コマンドはキャッシングを 有効にしません。注記
デバイスマッパーマルチパスを持つ GNBD サーバーを設定する時は、-c
オプションを指定しないで下さい。論理ボリュームの一部となっている全ての GNBD 群は キャッシングを無効にして実行される必要があります。注記
GFS 5.2 又はそれ以前のバージョンを使用していて、GNBD 設定を変更したくない 場合は、-c
オプションを指定する必要があります。 GFS Release 5.2.1 以前は、Linux キャッシングはgnbd_export
用に デフォルトで有効になっていました。-c
オプションが指定されていない 場合は、GNBD は認知できるほどのパフォーマンス低下を受けます。また、-c
オプションが指定されていないと、エキスポートされた GNBD はデフォルトの タイムアウト値 (-t
オプション) を使用してタイムアウトモードで動作します。gnbd_export
コマンドとそのオプションに関する詳細情報についてはgnbd_export
man ページを参照して下さい。 -u
uid
- エキスポートされたデバイスに手動で、汎用識別子(UIDーUniversal Identifier)をセットします。 このオプションは
-e
と一緒に使用されます。UID はデバイスマッパー マルチパスによって使用されて、マルチパスマップ内に所属するデバイスを決定します。 マルチパス化をするにはデバイスは UID を持っている必要があります。しかし、ほとんどの SCSI デバイスでは、デフォルトの Get UID コマンド/usr/sbin/gnbd_get_uid
が適切な値を返します。注記
UID は GNBD 自身ではなく、エキスポートされているデバイスを参照します。 2つの GNBD デバイスの UID は、同じ背後のデバイスをエキスポートしている 場合にのみ同一となる必要があります。これは、両方の GNBD サーバーが 同じ物理デバイスに接続されていると言う意味です。注記
-U
command
オプションが機能 しない場合に、このオプションは共有ストレージデバイスのエキスポートの為にのみ 使用されるものです。この状態は SCSI デバイスではほとんど発生しません。2つの GNBD デバイスが同じ背後のデバイスをエキスポートしていないのに、同じ UID を与えて ある場合には、データ破損が生じます。 -U
Command
- UID 取得のコマンドです。UID コマンドは、
gnbd_export
コマンドがエキスポートされたデバイス用に汎用識別子を取得する 為に実行するコマンドです。UID は GNBD でデバイスマッパーマルチパスを使用する 為に必要となります。このコマンドは実行したい実行ファイルの完全なパスを使用する 必要があります。そのコマンドには、%M、%m、あるいは、%n のエスケープシーケンスを 含むことができます。%M はエキスポートされたデバイスのメジャー番号に展開され、%m は エキスポートされたデバイスのマイナー番号に展開されます。そして %n はそのデバイスのsysfs
名に展開されます。コマンドが与えられない場合は、GNBD は デフォルトのコマンド/usr/sbin/gnbd_get_uid
を使用します。 このコマンドはほとんどの SCSI デバイスで機能します。
サンプル
このサンプルは GNBD マルチパスで設定された GNBD サーバーの為のものです。 これは デバイス
/dev/sdc2
を GNBD gamma
としてエキスポートします。キャッシュはデフォルトで無効になっています。
gnbd_export -d /dev/sdc2 -e gamma -U
このサンプルは GNBD マルチパスで設定されていない GNBD サーバーの為のものです。これはデバイス
/dev/sdb2
を キャッシュが 有効になっている GNBD delta
としてエキスポートします。
gnbd_export -d /dev/sdb1 -e delta -c
このサンプルは デバイス
/dev/sdb2
を GNBD delta
としてキャッシュを有効に した状態でエキスポートします。
gnbd_export -d /dev/sdb2 -e delta -c