HASTD(8) | FreeBSD System Manager's Manual | HASTD(8) |
名称
hastd — 高度に利用可能な記憶域 (Highly Available Storage) デーモン書式
hastd | [ -dFh][ -c config][ -P pidfile] |
解説
hastd デーモンは、高度に利用可能な GEOM プロバイダを管理するために責任があります。hastd は、TCP/IP ネットワーク上に接続された 2 台の物理的に切り離されたマシンでデータを透過的に格納することができます。 1 台のマシン (クラスタノード) だけが積極的に hastd によって提供された記憶域を使用することができます。このマシンは、プライマリと呼ばれます。 hastd デーモンは、ファイルシステムとアプリケーションのために透過的にする、ブロックレベルで動作します。
与えられたリソースのためのロールがプライマリに変更されるとすぐに、または与えられたリソースのためのロールがセカンダリに変更され、リモート (プライマリ) ノードが、その接続に成功するとすぐに、新しいワーカ (worker) プロセスを始める、1 つのメイン hastd デーモンがあります。すべてのワーカプロセスは、それが制御するロールとリソースを記述する、新しいプロセスタイトル ( setproctitle(3) 参照) を取得します。正確な形式は、次の通りです:
hastd: <resource name> (<role>)
hastd が、与えられたリソースのためのプライマリロールで動作するとき (かつそのときに限り)、対応する /dev/hast/<name> ディスク同様のデバイス (GEOM プロバイダ) は、作成されます。ファイルシステムとアプリケーションは、I/O 要求を送信するためにこのプロバイダを使用することができます。あらゆる書き込み、削除とフラッシュ操作 ( BIO_WRITE, BIO_DELETE, BIO_FLUSH) は、ローカルのコンポーネントに送信され、それが利用可能であるなら、リモート (セカンダリ) ノードに複製されます。読み込み操作 ( BIO_READ) は、I/O エラーが起こらないか、またはデータのローカルのバージョンが、まだ最新ではない (同期は、進行中) なら、ローカルに処理されます。
hastd デーモンは、カーネル内の GEOM インフラストラクチャから I/O 要求を受信するために GEOM Gate クラスを使用します。 geom_gate.ko モジュールは、カーネルが次のオプションでコンパイルされなかったなら、自動的にロードされます:
2 つの hastd デーモンの間の接続は、常にプライマリとして実行しているものから、セカンダリとして実行しているものへ起動されます。プライマリ hastd が接続できないか、または接続が失敗するとき、数秒毎に接続を再確立しようと試みます。いったん接続が確立されると、プライマリ hastd は、接続停止の間にセカンダリ hastd に変更されたあらゆる範囲 (extent) を同期させます。
ノードの間の接続停止の場合に、与えられたリソースのための hastd のプライマリロールが両方のノードで設定されることは可能です。これは、順番に互換性のないデータの変更の原因となります。そのような状態は、分離脳 (split-brain) と呼ばれ、これがたぶんデータの破損を導くか、重要な変更の損失として hastd デーモンによって自動的に解決することができません。 hastd 自体によって修正できませんが、それは検出され、独自に変更されたノードの間の更なる接続は、可能となりません。いったん、この状況が管理者によって手動で解決されると、リモートノードの接続が再び可能とする、ノードの 1 つのリソースを初期化する (ローカルデータを消す) ことがきます。新たに初期化されるコンポーネントの接続は、完全なリソースの同期化の引き金となります。
hastd デーモンは、決してそのロールを自動的に選択 (pick) しません。ロールは、プライマリの失敗の場合に、確実にロール分離を管理し、セコンダリロールをプライマリロールに切り替える、 ucarp または heartbeat のような付加ソフトウェアによって hastctl(8) 制御ユーティリティで設定されなければなりません。
次のコマンドライン引数で hastd デーモンを開始することができます:
- -c config
- 設定ファイルの代替の位置を指定します。デフォルト位置は、 /etc/hast.conf です。
- -d
- デバッグ情報を印刷するか、またはログ記録します。冗長レベルを上げるために複数回、このオプションを指定することができます。
- -F
- フォアグランドで hastd デーモンを開始します。デフォルトで、 hastd は、バックグラウンドで開始します。
- -h
- hastd の使用法のメッセージを印刷します。
- -P pidfile
- メインプロセスの PID が格納されるファイルの代替の位置を指定します。デフォルト位置は、 /var/run/hastd.pid です。
関連ファイル
- /etc/hast.conf
- hastd と hastctl(8) のための設定ファイル。
- /var/run/hastctl
- hastd と通信するための hastctl(8) 制御ユーティリティによって使用されるソケットを制御します。
- /var/run/hastd.pid
- hastd PID ファイルのデフォルト位置。
終了ステータス
終了ステータスは、成功すれば、0、失敗すれば、 sysexits(3) で説明された値の 1 つです。使用例
両方のノードで hastd を開始します。 nodeA でプライマリに、 nodeB でセカンダリにリソース shared のためのロールを設定します。 /dev/hast/shared プロバイダでファイルシステムを作成して、それにマウントします。
nodeB# hastd nodeB# hastctl role secondary shared nodeA# hastd nodeA# hastctl role primary shared nodeA# newfs -U /dev/hast/shared nodeA# mount -o noatime /dev/hast/shared /shared
関連項目
sysexits(3), geom(4), hast.conf(5), ggatec(8), ggated(8), ggatel(8), hastctl(8), mount(8), newfs(8), g_bio(9)作者
hastd は、FreeBSD 財団の資金提供の下で <pjd@FreeBSD.org>によって開発されました。February 1, 2010 | FreeBSD |