- PR -

2台からほぼ同時にファイル共有(RedHat GFS、クラスタ?)

投稿者投稿内容
たも
会議室デビュー日: 2005/08/17
投稿数: 5
投稿日時: 2005-08-18 10:55
こんにちは、皆さんの投稿いつも拝見&参考にさせてもらっています。

現在2台のPCからFiberChannelで接続されたRAIDに片側のPCからファイルをライトした直後にう片側からリードするという作業を繰り返すことを考えています。(できる限り高速
に)

あたりまえなのかもしれませんが、同時にマウントして上の作業をやってみるとリード側からファイルが見えなかったり、ファイルが壊れてしまったりと問題が発生しました。
そこでRedHat GFSなどデータを共有するようなクラスタ関連の情報を集めていました。
とりあえずGFSを導入してみるかということでマニュアル参考にやってみようとしたのですが、
http://www.redhat.com/docs/manuals/csgfs/admin-guide/s1-sf-cluster.html

Because of quorum requirements, the number of lock servers allowed in a GFS cluster can be 1, 3, 4, or 5. Any other number of lock servers — that is, 0, 2, or more than 5 — is not supported
とあり2台ではできないのでしょうか?
フェンシングデバイスがなければいけないようなことも書いてあったり・・・
そもそもGFS以外にもこのような環境を構築する方法があるのかもしれません。

皆さんがお持ちの経験や知識をご教授いただければと思い、初めてスレッドを投稿いたしました。よろしくお願いします。
ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2005-08-18 21:28
GFSとか全然知らないんですが、フォローが無いようですので...

引用:

たもさんの書き込み (2005-08-18 10:55) より:
現在2台のPCからFiberChannelで接続されたRAIDに片側のPCからファイルをライトした直後にう片側からリードするという作業を繰り返すことを考えています。(できる限り高速
に)

あたりまえなのかもしれませんが、同時にマウントして上の作業をやってみるとリード側からファイルが見えなかったり、ファイルが壊れてしまったりと問題が発生しました。


ファイルを書いたプロセスのほうは「書き終わったつもり」であっても
OSのバッファに入っているだけでディスクには書き込まれていなかったり
しますから、「書いたはずのファイルがない」ということは起こります。
また、マシンAのOSが知らないうちにマシンBのほうがファイルを書き換えて
いた、というような場合、ファイル管理情報の変更の内容によっては
「ファイルが壊れているようにみえる」ということも起こると思います。
あともちろん、同時に書き込むと致命的です。

ローカルのマシンの上で動く複数のプロセスが同時にひとつのファイルに
アクセスしても「ファイルがない」みたいな問題が発生しないのは、
書き込みに使うバッファと読み出す際のファイルキャッシュとが統合されて
いるためです。

GFSがどういうやり方をしているのか知りませんが、「ファイルを読む際に
ローカルのメモリ上のキャッシュを調べるよりも先に、ストレージ上の
ファイルが更新されているかどうか調べるようにするためカーネルを変更
する」ということと、「同時書き込みを防ぐ」「まずいタイミングで読み
出さないようにする」ためのロック機構が必要になるかと思います。

が、それでもストレージの側で遅延書き込み(write cache)と先読み
(read ahead cache)を使っていると、不整合が発生し得るような気も
しないでもありません。write cache を off にするか、write through
cache みたいな機能を提供する製品を使えば問題ないと思いますが。
・・・うーん、どうなんだろ?

引用:

Because of quorum requirements, the number of lock servers allowed in a GFS cluster can be 1, 3, 4, or 5. Any other number of lock servers ― that is, 0, 2, or more than 5 ― is not supported
とあり2台ではできないのでしょうか?


上に書いたようなロック機構を提供する、ロックサーバの話ではないでしょーか。
ロックサーバを冗長化した場合、どういう方法でプライマリのロックサーバを
決定するようにしているか、ということで2台ではダメな理由があるんじゃあ
ないかと思いまふ。

[ メッセージ編集済み 編集者: ぽんす 編集日時 2005-08-18 21:30 ]
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2005-08-18 21:32
こんばんわ.
引用:

ぽんすさんの書き込み (2005-08-18 21:28) より:
GFSとか全然知らないんですが、フォローが無いようですので...


引用:

Because of quorum requirements, the number of lock servers allowed in a GFS cluster can be 1, 3, 4, or 5. Any other number of lock servers — that is, 0, 2, or more than 5 — is not supported
とあり2台ではできないのでしょうか?


上に書いたようなロック機構を提供する、ロックサーバの話ではないでしょーか。
ロックサーバを冗長化した場合、どういう方法でプライマリのロックサーバを
決定するようにしているか、ということで2台ではダメな理由があるんじゃあ
ないかと思いまふ。


自分も興味があるだけですが...
iSCSI とか使っても lock する必要あるのでしょうか?
というか,GFS って「一時に複数から書き込める」のでは?
ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2005-08-18 22:54
引用:

kazさんの書き込み (2005-08-18 21:32) より:
iSCSI とか使っても lock する必要あるのでしょうか?


iSCSIも使ったことありませんが... iSCSIが提供するのは生のストレージを
共有する機能であって、その上でファイルシステムを使いたいということで
あれば不整合が生じないよう配慮した仕組みが別途必要と思います。

引用:

というか,GFS って「一時に複数から書き込める」のでは?


おっと、説明が足りませんでした。
これには「どの層において同時か」ということがあって...

上で「同時書き込み」と書いたのは、デバイス上というか
OS - デバイス間のことです。ここで、お互いに他が何をやっているか
知らないところから同じファイルに対する書き込みがばらばらに独立に
ごちゃまぜにやってくると、ファイルとファイルシステムが壊れます。
# それでも壊れないファイルシステムというのも理屈の上では
# あり得そうですが、たぶん実用上意味が無さそう。

ですが、OS にファイルの読み書きを依頼しているプロセスからは
競合相手を気にすることなく書き込めるはずです。
そこでみれば、同時書き込みOKということになります。
たも
会議室デビュー日: 2005/08/17
投稿数: 5
投稿日時: 2005-08-19 10:01
ぽんすさん、kazさん返答ありがとうございます。

引用:

上に書いたようなロック機構を提供する、ロックサーバの話ではないでしょーか。
ロックサーバを冗長化した場合、どういう方法でプライマリのロックサーバを
決定するようにしているか、ということで2台ではダメな理由があるんじゃあ
ないかと思いまふ


同時書き込みは今回しないのですが、同時アクセスになるのでどちらにせよロック機構が必要そうですね。。イメージ的には1台(A)にロックサーバを立ち上げます。そして(A)はローカルもう1台(B)はリモート(A)のロックサーバを見に行くようなことができれば・・・と考えていましたが、2台とは別の(C)でロックサーバをあげないとだめなんでしょうかね。。。3台の設定例はGFSのマニュアルにもあるようなのですが。。。3台目用意するのも考えてはいますができれば2台でやりたいですな。。。
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2005-08-19 13:54
日本語では
http://www.sc-i.co.jp/products/sistinafaq.htm#ninshiki
http://japan.cnet.com/news/ent/story/0,2000047623,20069498,00.htm
------------------------
検索語
HPC File system cluster
--------------
ここから、先の話は
分散ロックマネージャ の方になってゆくようです。
====================
Because of quorum requirements, the number of lock servers allowed in a GFS cluster can be 1, 3, 4, or 5. Any other number of lock servers — that is, 0, 2, or more than 5 — is not supported
とあり2台ではできないのでしょうか?

の答えは
Single Lock Manager (SLM) — A simple centralized lock manager that can be configured to run
either on a file system node
or on a separate dedicated lock manager node.
だから、ファイル・ノードと共用可、Redundant Lock Manager (RLM) はダメらしい。

GFS とは(読めてないが)
仮想ディスクを作る、(プールボリューム定義して RAIDやパーティションを束ねて)
次に、仮想ディスク内にgfs_mkfs する(ここに分散ロックマネージャのパラメータが必要)、
次に、仮想ディスクをマウントする。

ちゃんと、GFSのマウントポイントで使うと分散ロックされるのでは
ローカルデバイスのままでは、分散ロックしなさそう。

[ メッセージ編集済み 編集者: MMX 編集日時 2005-08-23 15:20 ]
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2005-08-19 21:45
こんばんわ.
引用:

ぽんすさんの書き込み (2005-08-18 22:54) より:

ですが、OS にファイルの読み書きを依頼しているプロセスからは
競合相手を気にすることなく書き込めるはずです。
そこでみれば、同時書き込みOKということになります。


そのようですね.
MMX 様よりいただいた情報を参照する限り,
> このファイルシステムはロック機構が組み込まれ、
> ファイル共有が出来る以外は、
> Linuxネィティブのファイルシステム
> (ext3、JFS、XFS)と全く同じように使えます。
と,ここをご指摘ですね -> ぽんす様
でも,これを見る限り「バラバラで書き込みに来ても大丈夫」なように思えます.
ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2005-08-20 01:25
引用:

たもさんの書き込み (2005-08-19 10:01) より:
イメージ的には1台(A)にロックサーバを立ち上げます。そして(A)はローカルもう1台(B)はリモート(A)のロックサーバを見に行くようなことができれば・・・と考えていましたが、2台とは別の(C)でロックサーバをあげないとだめなんでしょうかね。。。


素朴に考えれば、AとBのどちらか一方にロックサーバとしての役目を
兼ねさせるのはアリと思いますが、実際どうなってるかは分かりません。

マニュアルを読むなり、それでも分からなければ試しに設定してみれば
よいのでわ。

スキルアップ/キャリアアップ(JOB@IT)