EN JA
HASTD(8)
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 モジュールは、カーネルが次のオプションでコンパイルされなかったなら、自動的にロードされます:

options GEOM_GATE

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
hastdhastctl(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

作者

hastd は、FreeBSD 財団の資金提供の下で Pawel Jakub Dawidek <pjd@FreeBSD.org>によって開発されました。
February 1, 2010 FreeBSD