【2/17】今年は「濃厚」技術トーク!@ITメールセミナー スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷


第4回 一瞬でのバックアップを実現するSolaris ZFS


サン・マイクロシステムズ株式会社
OpenSolarisエバンジェリスト
川井 聡
2008/4/8


ゾーンのプロビジョニング

 前回は、Solarisコンテナを使って、サービスごとに異なるホスト環境を構築し、その中で各サービスを実行することでセキュリティを高める方法を紹介しました。今回は、ゾーン環境がセキュリティの面だけでなく、プロビジョニングにも役立つことを紹介しようと思います。当然、ZFSとも連携させます。

 例えば、前回の手順で構築したブログサイトの人気が高まり、アクセス数が伸びた結果、多くのユーザーに満足のいくサービスが提供できなくなってきたとしましょう。このような場合、図3のように複数のブログサーバを用意し、ロードバランサなどを利用して、各ブログサーバにネットワークトラフィックを均等に分配するといった手段が考えられます。

OpenSolaris
図3 ゾーンを活用した負荷分散

 ゾーンとZFSを使用していれば、このような既存の環境を、容易に、しかも迅速に図3のような構成に移行することができます。

 それでは、blog_zoneをマスターゾーンとして複製する方法を紹介しましょう(ただしblog_zoneは、IPインスタンスを使ったゾーン環境になっています。従って、実際にこの構成で構築するには、複数のネットワークインターフェイスを持ったマシンを用意したり、別のホストを利用する必要があるかもしれません)。

 すでに紹介したとおり、ゾーン環境はZFSファイルシステム上に構築されています。続いて、既存のゾーン環境の構成をマスターとして抜き出すために、blog_zoneの構成情報をエクスポートします。

# zonecfg -z blog_zone export -f /export/zones/blog_zone_master

 このマスターの構成情報を基に、新規のゾーンの構成を作成します。

# zonecfg -z blog_zone2 -f /export/zones/blog_zone_master

 次に、zonepathやネットワークインターフェイスなど、既存のゾーンと重複してはいけない部分を編集します。ここでは、zonepathに/pexport/zones/bolog_zone2を指定してください。

# zonecfg -z blog_zone2
zonecfg:blog_zone2> set zonepath=/export/zones/blog_zone2
zonecfg:blog_zone2> commit
zonecfg:blog_zone2> exit
#

 これでゾーン複製の準備ができたので、zoneadmのcloneサブコマンドを使用して、blog_zoneを複製します。cloneは、オリジナルのゾーンが停止状態でないと実行できませんので、いったん停止してから実行します。

 UFSなどのファイルシステム上に構築されたゾーン環境を複製(クローン化)する場合、ファイルのコピーには多少の時間を要します。しかし、上記のようにZFS上に構築されたゾーン環境から同じストレージプール内にクローン化する場合、このコマンドの実行は一瞬で終了します。

# zoneadm -z blog_zone halt
# zoneadm -z blog_zone2 clone blog_zone
Cloning snapshot mypool/zones/new@SUNWzone1
Instead of copying, a ZFS clone has been created for this zone.
#

 zonadmコマンドは、同一ストレージプール内でクローン化を行う場合、ファイルをコピーする代わりに、オリジナルのZFSスナップショットから作成したZFSクローンを利用します。このため、処理に時間はかかりません。

 複製が終了したら、新しいblog_zone2をブートし、blog_zoneのときと同じようにzlogin -Cコマンドを使って、システムのセットアップを行うだけです。これでゾーンの複製は終了です。同様の方法で、マスターとなるゾーンから必要なだけクローンを作成してください。容易にApache Roller環境を複製することができます。

 なお、ZFSのクローンについて少し補足しておきます。ZFSクローンは、ZFSスナップショットから作成されるファイルシステムであり、スナップショットが読み出ししかできないのに対して、クローンでは書き込みもできるという点で異なります。また、スナップショットからクローン化されたディスク領域はスナップショットと共有されているので、データ変更分以外のディスクを消費しないという点も大きなメリットです。

 ここでzfs listを実行してみましょう。

# zfs list
NAME                            USED AVAIL REFER MOUNTPOINT
mypool                         1.79G 17.8G   19K /mypool
mypool/zones                   1.79G 17.8G 23.5K /export/zones
mypool/zones/blog_zone         1.10G 17.8G 1.10G /export/zones/blog_zone
mypool/zones/db_zone           1.46G 16.3G 1.46G /export/zones/db_zone
mypool/zones/blog_zone@SUNWzone1 130K    - 1.10G -
mypool/zones/blog_zone2         230K 17.8G 1.10G /export/zones/blog_zone2

 mypool/zones/blog_zone@SUNWzone1というスナップショットが作成されていることが分かります。zoneadm cloneの実行により、自動的にSUNWzoneXというスナップショットが作成され、このスナップショットのクローンとしてmypool/zones/blog_zone2が生成されます。

 ここで、USEDのカラムに注目してください。blog_zone2はblog_zoneのクローンなので、ほとんどディスクを消費していません。ゾーンのブート後に行ったホスト固有のシステム設定の分だけが使用されていることが分かります。

 このように、ZFSを使用することで、データの管理が簡単になるだけでなく、リソースを無駄なく使用し、効率よくサービスを拡張できることがお分かりいただけたと思います(なお本記事では、ロードバランサの設定については割愛します)。

エンディアンに中立なデータ構造

  最後にもう一つ、ZFSの便利な点を紹介します。ZFSは、マシンのエンディアン(バイトオーダー)に依存しません

 通常、バイトオーダーの異なるコンピュータ間でデータをやりとりする場合、相手のバイトオーダーを考慮しなければ、値が異なってしまいます。しかし、ZFSを使用すれば、ビッグエンディアンであるSPARCマシン上で構築したストレージプールを、リトルエンディアンであるx86/x64アーキテクチャのマシン上に持っていき、そのまま使用することができます。

 これは、データを書き込む際にはマシンのネイティブエンディアン形式を使用してビットをセットし、読み出す際にはマシンのネイティブエンディアンと書き込まれているブロックのエンディアンが異なる場合にバイトスワップするという方法で実現されています。

 異なるシステムに付け替える手順は簡単です。zpool exportコマンドで切り離した後にストレージプールを取り外し、別のマシンに持っていき、接続した後にzfs importコマンドでインポートするだけです。

sparc# zpool export mypool
x86# zpool import mypool

 ほかにも紹介したいことがたくさんあるのですが、残念ながら紙幅が尽きました。さらなる詳細については、マニュアル「Solaris ZFS 管理ガイド」やSDCのコンテンツを参照してください。

 次回は、クラスタリングを用いて可用性を高める方法を紹介する予定です。

OpenSolarisに関する技術情報の多くは、Sunのブログサイト(http://blogs.sun.com)に提供されています。このサイトには、OpenSolarisに関する技術者・開発者たちによるダイレクトな情報が提供されています。また、SDC(http://sdc.sun.co.jp/portal/index.html)Sun Product用のドキュメントサイト(http://docs.sun.com)には、OpenSolarisやSolaris 10のインストール方法をはじめとするドキュメントや技術情報が掲載されています。これらの情報もぜひ活用してください。

4/4
 

Index
OpenSolarisでサーバ構築
 第4回 一瞬でのバックアップを実現するSolaris ZFS
  Page 1
 誕生のきっかけは「引っ越し」だった
 ZFSの概要と特長
  Page 2
 ZFS上にブログサーバ環境を構築してみよう!
 容易なストレージプールの拡張
  Page 3
 ZFSスナップショットで瞬時にバックアップ
 ZFSをiSCSIターゲットとして利用する
Page 4
 ゾーンのプロビジョニングで迅速な拡張を
 エンディアンに中立なデータ構造

Linux Square全記事インデックス


 Linux Squareフォーラム サーバ構築・運用関連記事
連載:Heartbeatでかんたんクラスタリング(連載中)
オープンソースソフトウェアの「Heartbeat」を使ってHAクラスタを実現し、サービスを「落とさない」仕組みを実現します
特集:Apache 2.2でWebサイトをパフォーマンスアップ!
最新安定版Apache 2.2は、何が変わったのか? 最新のApacheを新機能の使い方とともに解説する
連載:実用 Apache 2.0運用・管理術(全8回)
本連載では、Apache 2.0の運用や管理方法を解説する。まず必須設定と基本的なセキュリティ対策を行い今後の運用に備える
連載:実用 BIND 9で作るDNSサーバ(全15回)
本連載では、BIND 9の構築/運用方法を解説していく。実際に役立つことを目的に、セキュリティや大規模運用などのテーマを取り上げていく
連載:実用qmailサーバ運用・管理術(全14回)
本連載を通して、qmailによるメールサーバの高度な構築・運用・管理術を紹介。SPAM対策やML管理からサーバでのウイルスチェックなどまで
特集:Samba 3.0の全貌 改訂版
Samba 3.0リリースから8カ月。ここであらためて、Samba 3.0系列の新機能、インストール方法、国際化の現状を解説する

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します

ホワイトペーパーTechTargetジャパン

Linux Square フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)



- PR -
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  企業の仮想化に足りない“発想”とは?
仮想化運用管理のキモは意外なところに!

New!
  操作もマニュアルも分かりやすい!
ユーザー視点で開発されたPC管理ツール

New!
  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  セキュリティを知り尽くす上野氏が登壇!
@ITメールソリューションLive! in Tokyo

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  世界に通用するストレージの作り方とは?
製品に込めた思いを富士通の開発者に聞く

  OSSで手間も時間も、障害も減った――
「マピオンの事例」オープンソース活用法

  「ノートPCの持ち出し禁止」で大丈夫?
情報漏えいを防ぐ管理手法とインフラは?

  1日の処理を1秒に――MySQLの達人が語る
「コスト削減」できるチューニング

  ドキュメント作成を自動化して、SEの作業
効率を大幅アップ! Visio 2007の魅力

  急速に広がるHyper-Vでのサーバ仮想化
そのベストプラクティスをデルが解説

  @IT主催セミナーで語られた、「担当者に
求められるセキュリティ対策」をレポート

  @IT「Windows 7」 特設サイトオープン!
最新情報・移行ノウハウを公開しています