一瞬でのバックアップを実現するSolaris ZFS:OpenSolarisで始めるブログサーバ構築(4)(3/4 ページ)
この連載では、サーバOSとして十数年発展してきた「Solaris」をオープンソース化した「OpenSolaris」を紹介し、ブログサーバ「Roller」と組み合わせて運用していくうえで有用なさまざまな知識を紹介していきます。(編集部)
ZFSスナップショットを利用したバックアップ
データ領域に限ったことではありませんが、ファイルシステムにZFSを使用すると、さまざまな面で恩恵を受けることができます。その1つがバックアップです。
ZFSには「スナップショット」という機能があります。これは、ある時点におけるファイルシステムのリードオンリーのコピーを作成するものです。
ZFSは、前述したようにCOW技術を使用しているので、瞬時に、しかもディスク容量を消費することなくスナップショットを取ることができます。スナップショットを取った後にデータに変更があった場合も、実際にコピーされるのは当該ブロックだけとなるため、ufsdumpを用いたバックアップと異なり、ディスクの使用を最低限に抑えられます。
では早速、ブログデータが保存されているファイルシステムのスナップショットを取ってみましょう。各ゾーンは、大域ゾーンのZFSファイルシステム上に構築されているので、操作は大域ゾーンから行います。
ブログデータはdb_zone内に保存されているので、ここではmypool/zones/db_zoneファイルシステムのスナップショットを取得します。スナップショットには任意の名前を付けることができますが、日々バックアップを行うのであれば、以下のようにdate(1)コマンドを組み合わせて、ファイル名に日付を付けておくと分かりやすいでしょう。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
このような操作をcronなどで決まった時間に行っていれば、日々のバックアップを自動的に取得できます。バックアップさえ取っておけば、もし誤ってデータを消してしまったとしても、その前日の日付のスナップショットからロールバックすることでデータを復旧できます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
以上のように、ZFSではバックアップデータの保存も復旧も非常に簡単な操作だということがお分かりいただけたと思います。
ここで一つ気を付けておかなければいけないことは、スナップショットの格納先でしょう。スナップショットされたファイルシステムとオリジナルのファイルシステムは、同じストレージプール内に保存されます。従って、万一ストレージプールに障害が発生した場合のことを考慮すれば、スナップショットは異なるストレージプール、もしくは異なるホストに保存しておくことが望ましいといえます。
このような場合に便利なのが、sendとrecvというコマンドです。zfs sendを実行すると、スナップショットのストリームデータが標準出力に書き込まれるので、別のストレージプールや別のホストに簡単にリダイレクトできます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
これでnewhostというホストにバックアップファイルを転送できます。なお、最初にスナップショットを取ったときからの日々の増分を取得するには、-iオプションを使います。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
ZFSをiSCSIターゲットとして利用する
ここまでは、ZFSファイルシステムをローカルストレージとして使用する方法を紹介しました。次に、ネットワークを介した共有ストレージデバイスとしてZFSを利用する方法を紹介します。
ZFSでは、ZFSストレージプールの一部をブロックデバイスとして利用できる機能である「ZFSボリューム」がサポートされています。このZFSボリュームは、スワップ領域やダンプデバイスとして利用することもできます。さらに、ZFSボリュームをiSCSI(internet SCSI)のターゲットとして利用することもできます。
iSCSIは、SCSIコマンドをIPネットワーク経由で転送する技術です。このiSCSIプロトコルを利用することで、ユーザーは、ネットワーク上のiSCSIターゲットをローカルストレージと同じように利用できます。つまり、iSCSIを使えば、安価にSAN環境を構築することができます。
最新のSolaris Expressでは、iSCSIターゲットとiSCSIイニシエータの両方をサポートしています(Solaris 10の最新リリースであるSolaris 10 8/07でも利用可能です)。
早速、作成したストレージプールのうち20GBytesをZFSボリュームとして作成してみましょう。ZFSボリュームの作成方法は、ストレージプールを作成する際に、-Vオプションにサイズを指定するだけです。後は、shareiscsiプロパティをonに設定すれば、iSCSIターゲットとして利用できるようになります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
以下のコマンドを使用して、ZFSボリュームがiSCSIとして利用可能になったことを確認します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
次に、このiSCSIを利用する側であるiSCSIイニシエータの設定方法を見てみましょう。以下のように、iSCSIイニシエータのホスト上からiSCSIターゲット(例:IPアドレスが10.0.01の場合)を見つける方式を指定し、有効にします。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
もし、ここでiSCSIターゲットが発見できなければ、
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
と入力してください。
この「c2t0d0」は、ローカルのブロックデバイスと同じように操作できます。当然、この上にUFSやZFSなどのファイルシステムを構築することも可能です。
先に、ブログサーバ環境をZFS上に構築する方法を説明しましたが、もしローカルマシンに十分なディスク容量がなければ、十分なディスクを備えたほかのマシンにiSCSIターゲットを作成し、IPネットワーク越しにZFSを利用してみるという方法にもチャレンジしてください!
Copyright © ITmedia, Inc. All Rights Reserved.