ZFS is a new kind of file system that provides simple administration, transactional semantics, end-to-end data integrity, and immense scalability.

PHP 5.3のリリースマネージャを務めるJohannes Schluter氏が自身のブログにおいてZFS and VirtualBoxというタイトルのもと興味深いテクニックを紹介している。ZFSで用意した仮想ディスクデバイス(zvol)をVirtualBoxのディスクデバイスとして利用するというもの。VirtualBoxの提供している機能を使うのではなく、ZFSの提供する機能の方でスナップショットやバックアップを実施している。ホストOSのZFSでスナップショットをとったりバックアップ、またはクローニングなどを実施できるというわけだ。

ZFSはファイルシステムのみならず、ボリューム管理機能も提供している。ZFSが多くの管理者や運用者にとって魅力的なのは、このようにボリューム管理も同時に提供することできわめて柔軟な運用ができるためだ。提供している機能も多く、従来のスタティックなファイルシステムとはまったく違う運用を可能にしてくれる。

Johannes Schluter氏はZFS and VirtualBoxで、ZFSの提供している仮想ディスクzvolをVirtualBoxのディスクとして利用する例を紹介。zvolディスクはZFSのスナップショット機能を使って15分おきにスナップショットをとっているという。VirtualBoxにもスナップショット機能はあるが、VirtualBoxの機能を使わずにZFSの機能を使う理由としては次のような理由が紹介されている。

  • 15分おきにスナップショットを取るといったことが簡単に実現できる。
  • クローンを取ることも簡単に実現できる。
  • インクリメンタルバックアップも簡単に実現できる。

ZFS and VirtualBoxで実際にセットアップサンプルとして紹介されているコマンドは次のとおり。

zfs create -V 10G tank/some_name
chown username /dev/zvol/rdsk/tank/some_name
VBoxManage internalcommands createrawvmdk -filename /pathto/some_name.vmdk -rawdisk /dev/zvol/rdsk/tank/some_name
VBoxManage registerimage disk /pathto/some_name.vmdk

zfs create -V 10Gのように指定すると10GBサイズの仮想ディスクが作成される。作成された仮想デバイスは/dev/zvol/以下にデバイスファイルとして生成されるため、次はこれを指定してVBoxManageコマンドでVirtualBoxで利用する仮想ディスクファイルを生成。さらにVirtualBoxから利用できるように設定して準備は完了。あとはVirtualBoxで環境を構築し、ホストOSからディスクをZFS経由で制御すればいい。

ZFSが提供する機能は従来のファイルシステムと違い、多種多様で強力、そしてきわめて柔軟。従来のファイルシステムでは考えられないような発想での利用が可能になる。ZFSはSolaris、OpenSolarisとFreeBSDで利用できる。性能が劣り運用向きではないが、実験採用ということであればLinuxでもFUSE経由でZFSの利用が可能。VirtualBoxはOSSのフル仮想化プロダクトとして高い人気がある。性能も優れており、GUI操作のみならずコマンドラインから細かい操作が可能など扱いやすい。ZFSとVirtualBoxの併用はこれまでになかった興味深い運用を実現してくれる。