連載
» 2008年04月08日 00時00分 UPDATE

OpenSolarisで始めるブログサーバ構築(4):一瞬でのバックアップを実現するSolaris ZFS (2/4)

[川井聡,サン・マイクロシステムズ株式会社]

ZFS上にブログサーバ環境を構築してみよう!

 ここからは、ZFSによる実際のストレージプールの作成方法や管理方法を紹介しましょう。そのほかの特長についても、項目ごとにその都度説明することにします。

 では、早速、前回のブログサーバ環境をZFS上に構築してみましょう。前回は、Solarisコンテナを用いて、ブログサーバとデータベースを異なるゾーン上に構築する方法を紹介しましたが、今回は、これらのゾーンをZFS上に構築します。

1 ストレージプールの作成

 まず、基本的なストレージプールの作り方を紹介します。ストレージプールの作成や管理は、zpool(1M)コマンドで行います。例えば、2つの未使用の物理ディスク「c1t1d0」と「c1t2d0」を使用する場合、以下のように入力します。

# zpool create mypool c1t0d0 c1t2d0

 これでmypoolというストレージプールが作成できます。これらのディスクはすべて、/dev/dskディレクトリに作成され、適切な名前が自動的に割り当てられます。このストレージプールは1つの大きなスライスで構成され、データは両方のディスクに動的にストライピングされます。

 このようなデータの冗長構成について、ZFSは、「ミラー」および「RAID-Z」という構成を用意しています。上記の2つのディスクをミラー構成にしたければ、ZFS作成時のキーワードとしてmirrorを指定するだけです。

# zpool create mypool mirror c1t1d0 c1t2d0

 データは、両方のミラーにまたがって動的にストライプ化され、各ディスク間で適切に冗長化されます。

 また、RAID-ZはRAID-5に似ていますが、可変ストライプ幅を使用しているので、RAID-5に起こる「書き込みホール」の問題がありません。RAID-Zでは、シングルパリティのraidzとダブルパリティのraidz2(RAID-6相当)の指定が可能です。いずれも、上記コマンドで、キーワードにraidzやraidz2を指定するだけで設定できます(ただし、それぞれ適切な数のディスクが必要になることはお忘れなく)。

 いずれにせよ、たった1行のコマンドを実行するだけでRAID環境を構築できます。一度ZFSを使うと、もうほかのファイルシステムには戻りたくなくなるかもしれませんね。

 ディスクの冗長化の説明をした後ですが、今回テストに使用したマシンには未使用のディスクがなかったので、mkfileで20GBytesのファイルを作成し、その上にストレージプールを作成することにします。もし手元に未使用のディスクがあれば、それを使ってください(物理ディスクが1つしかなくてもストレージプールは作成できます)。

# mkfile 20g /disk
# zpool create mypool /disk

 これでストレージプールが作成できました。zpool listコマンドで確認してみましょう。

# zpool list
NAME        SIZE   USED   AVAIL CAP HEALTH   ALTROOT
mypool     19.9G   110K   19.9G  0% ONLINE   -

 dfコマンドを実行してみると、すでに/mypoolでマウントされていることが確認できます。

 zpool(1M)コマンドの実行だけで、ストレージプールを作り、プールと同じ名前のファイルシステムとマウントポイントを自動的に作成し、実際にマウントするところまで行ってくれます。しかも、コマンドに要する時間は一瞬です。約20GBytesのファイルシステムが、formatやnewfsコマンドの実行なしに一瞬で作成できるのです。これだけでもかなり魅力を感じますね。

2 ZFSファイルシステムの作成

  次に、ゾーン用のファイルシステムを作成します。ZFSファイルシステムの作成や管理には、zfs(1M)コマンドを使用します。

# zfs create mypool/zones
# zfs list
NAME             USED AVAIL REFER MOUNTPOINT
mypool           130K 19.6G   18K /mypool
mypool/zones      18K 19.6G   18K /mypool/zones

 ここでマウントポイントを変えたければ、以下の方法で変更できます。

# zfs set mountpoint=/export/zones mypool/zones
# zfs list
NAME             USED AVAIL REFER MOUNTPOINT
mypool           130K 19.6G   18K /mypool
mypool/zones      18K 19.6G   18K /export/zones

 これでゾーン用のZFSファイルシステムの作成は終了です。あとは前回と同様、zonecfgを使ってゾーンを構成します。

# zonecfg -z blog_zone
zonecfg:blog_zone> create
zonecfg:blog_zone> set zonepath=/export/zones/blog_zone
...

 前回と異なっている点は、zonepathで指定した先のファイルシステムが、ZFSファイルシステムになっているという点だけです。

 あとは、zoneadmコマンドを使ってアプリケーションをインストール、ブートして、Apache Rollerのセットアップを行ってください。同じようにdb_zoneのzonepathには/export/zones/db_zoneを指定してゾーンを作成してみてください。

 これで、両方のゾーンがZFSファイルシステムの上に構築されました。

関連記事
▼第2回 Cool Stackで手軽に「SAMP」
http://www.atmarkit.co.jp/flinux/rensai/opensolaris02/opensolaris02a.html

容易なストレージプールの拡張

 ZFSの扱いやすさが分かっていただけたと思いますが、ZFSのメリットはこれだけではありません。例えば、データがどんどん大きくなって、ディスクが足りなくなってきたとしましょう。こんなときもZFSであれば、以下のコマンドを実行するだけで、簡単にストレージを拡張することができます。

# zpool add mypool c2t3d0

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

Focus

- PR -

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。