業務に欠かすことができないデバイスにストレージがある。ストレージの仮想化技術は概念的な説明が行われることはあっても、実際にはどういったソフトウェアや技術を使ってどのように実現されているのかが説明されることは少ないように思う。今回はこのあたりをちょっとだけ説明しよう。ストレージシステムの中身がちょっと見えてくるはずだ。

図.1 OpenZFS

ストレージ仮想化技術

業務に欠かすことができないデバイスにストレージがある。大企業で利用するエンタープライズ向けの大規模ストレージ、データセンターレベルで構築される分散型の巨大ストレージシステムから小規模なNASシステム、コンシューマ向けのファイルサーバやバックアップシステムまでさまざまなシーンで使われている。

単一のノード内で下層から見ていけばオペレーティングシステムの仮想化、ストレージデバイスの仮想化、ブロックデバイスの仮想化、ファイルシステムの仮想化といった技術が使われている。さらに広げると複数のノードを集めて単一のノードとして見せるクラスタリングや分散ファイルシステムも仮想化技術ということになるだろう。さらに大きく見れば、クラウドサービスとして提供されているストレージサービスももっとも大きな意味での仮想化技術とみることもできそうだ。

ストレージの仮想化技術は概念的な説明が行われることはあっても、実際にはどういったソフトウェアや技術を使ってどのように実現されているのかが説明されることは少ないように思う。今回はこのあたりをちょっとだけ説明しよう。ストレージシステムの中身がちょっと見えてくるはずだ。

流行っているのはZFS

これまでエンタープライズ向けのストレージシステムを開発してきた企業に加え、この数年ではストレージシステムを開発するベンチャー企業の登場や大企業内に新しくストレージシステムを開発する部門などが立ち上がっている。理由は簡単だ。ストレージシステムとして利用できるZFSとオペレーティングシステムが登場したから、以前よりも簡単にストレージシステムを開発できるようになったからだ。

ZFSはボリューム管理とファイルシステムの双方を管理する。それぞれプールとデータセットと呼ばれ、いわゆる従来のファイルシステムのカバーする範囲よりも大きな範囲を扱っている。従来であればRAIDデバイス、オペレーティングシステム、ファイルシステムが担当していた機能をZFSが担当する。複数のディスクを組み合わせてディスクとブロックの仮想化を行い、さらにその論理ストレージから自由にファイルシステムを作成できる。いわゆるストレージ仮想化技術の多くがZFSに詰まっている。

現在のところZFSはSolaris、illumos系OS、FreeBSD、Linuxなどで利用できる。ストレージシステムでの採用が多いオペレーティングシステムはFreeBSDのようだ。ライセンス的に採用しやすいこと、すでに多数のプロダクトで採用され経験が蓄積されていること、コミュニティが大きく開発者とのやり取りや情報収集がしやすいこと、などが理由に挙げられている。

オペレーティングシステムの仮想化

エンタープライズ向けのストレージシステムに入っているシステムはUNIX系のオペレーティングシステムが多い。このレベルでも仮想化技術が使われている。FreeBSDとZFSを使ったストレージシステムでは、FreeBSDレベルでXenまたはbhyveといった技術を使ったハイバーパイザ的な仮想化が行われ、さらにその中でZFSが使われるといった仕組みになっている。こうすることで完全に区割りされたストレージシステムをセットアップすることができるというわけだ。

FreeBSDにはJailと呼ばれるコンテナ技術もあるため、こちらが使われることもある。Jailを使う場合、ZFSはホストのFreeBSDが完全に制御することになり、ホストが作成したデータセット上にJailの環境が構築されることになる。構築されたJailの領域がユーザに提供されたり、その領域をストレージとして提供することになる。

FreeBSD+ZFSの組み合わせでは提供できるサービスが多いという特徴もある。Windowsファイル共有とNFSは当然として、Appleファイル共有、iSCSI、FTP、TFTP、LLDP、WebDAV、ドメインコントローラ、Rsync、Active Directory、LDAP、NIS、NT4、Kerberos、VLANなど必要になるサービスはだいたい提供されている。

データセンターレベルでは分散ファイルシステム

単一のノードではストレージサイズが足りないといった場合にはクラスタリングと呼ばれる技術で複数のノードを単一のノードとして振る舞わせることがある。Googleのようにさらに大規模、それこそデータセンターレベルで巨大なストレージとして機能するシステムが必要になる場合、分散ファイルシステム、またはそれに類するシステムが構築されることがある。

このレベルになってくると巨大なファイルシステムのようなものを構築するというよりも、サービスに応じた分散システムを構築して利用することがあるのでその限りではなくなってくるのだが、そういったレベルでもいわゆる仮想化と言われる技術が使われている。具体的な技術詳細は公開されていないことが多いのでこのレベルの内容は発表資料からの推測になってくるが、それぞれのシステムが必要に応じて設計され実装されているようだ。

もっと詳しく知りたいなら

よく使われている技術はここで紹介したとおりだが、これら技術はすべてオープンソースソフトウェアとして公開されている(エンタープライズシステムでは自社開発部分も取り込んでいるので、それ以外の機能やOSSを超える性能を持っていることがある)。詳しく調べたければ調べられるという状況にある。

手はじめにお薦めなのはFreeNASまたはNAS2Freeあたりだろう。簡単にインストールでき、システムへのログインも提供されている。ストレージシステムを構築して利用しながら、実際に内部ではどのようなサービスが動作しているのか、そしてその実装がどうなっているのかも公開されているソースコードを調べることができる。すでに業務で利用できるレベルのプロダクトでもあるので、使ったことがないのであればぜひ一度触ってもらえればと思う。