Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


MySQL 5.6 リファレンスマニュアル  /  ...  /  ZFS を使用したファイルシステムレプリケーション

16.5.1 ZFS を使用したファイルシステムレプリケーション

zfs send および zfs recv はストリームを使用してデータを交換するため、これらを使用して zfs sendssh、および zfs recv を結合することで、あるシステムから別のシステムに情報を複製できます。

たとえば、scratchpool ファイルシステムのスナップショットを、新しいサーバー上の slavepool と呼ばれる新しいファイルシステムにコピーするには、次のコマンドを使用します。このシーケンスは、scratchpool のスナップショット、スレーブマシンへの転送 (ssh とログイン資格証明を使用)、および zfs recv を使用したスレーブでのスナップショットのリカバリを結合します。

root-shell> zfs send scratchpool@snap1 |ssh id@host pfexec zfs recv -F slavepool

パイプラインの最初の部分 zfs send scratchpool@snap1 はスナップショットをストリームします。ssh コマンドと、他方のサーバーでそれが実行するコマンド pfexec zfs recv -F slavepool は、ストリームされたスナップショットデータを受け取り、slavepool に書き込みます。この例では -F オプションを指定しました (スナップショットデータが強制的に適用されるため破壊的)。複製されたファイルシステムの最初のバージョンを作成しているため、これで問題ありません。

スレーブマシンでは、複製されたファイルシステムに正確に同じ内容が含まれています。

root-shell> ls -al /slavepool/
total 23
drwxr-xr-x   6 root     root           7 Nov  8 09:13 ./
drwxr-xr-x  29 root     root          34 Nov  9 07:06 ../
drwxr-xr-x  31 root     bin           50 Jul 21 07:32 DTT/
drwxr-xr-x   4 root     bin            5 Jul 21 07:32 SUNWmlib/
drwxr-xr-x  14 root     sys           16 Nov  5 09:56 SUNWspro/
drwxrwxrwx  19 1000     1000          40 Nov  6 19:16 emacs-22.1/

スナップショットが作成されたあとに、ファイルシステムを再度同期するには、新しいスナップショットを作成してから、zfs send の増分スナップショット機能を使用して 2 つのスナップショット間の変更をスレーブマシンに再度送ります。

root-shell> zfs send -i scratchpool@snapshot1 scratchpool@snapshot2 |ssh id@host pfexec zfs recv slavepool

この操作は、スレーブマシン上のファイルシステムがまったく変更されなかった場合にのみ成功します。変更された宛先ファイルシステムには増分変更を適用できません。上記の例では、ls コマンドがファイルまたはディレクトリの最終アクセス時間などのメタデータを変更することで問題を引き起こします。

スレーブファイルシステムでの変更を防ぐには、スレーブ上のファイルシステムを読み取り専用に設定します。

root-shell> zfs set readonly=on slavepool

readonly を設定することは、通常の方法ではスレーブ上のファイルシステムを変更できないことを意味します (ファイルシステムメタデータを含む)。一般的にメタデータを更新する操作 (ls のように) は、ファイルシステム状態の更新を試みることなく、サイレントにそれらの関数を実行します。

スレーブファイルシステムの本質は元のファイルシステムの静的コピーにすぎません。ただし、読み取り専用に構成されている場合でも、ファイルシステムはそれに適用されるスナップショットを持つことができます。読み取り専用に設定されているファイルシステムで、初期コピーを再実行します。

root-shell> zfs send scratchpool@snap1 |ssh id@host pfexec zfs recv -F slavepool

これで、元のファイルシステムに変更を行い、それらをスレーブに複製できます。