タイの洪水被害の影響でハードディスク(HDD)の価格が高止まりしている。パーツショップでの実売価格は急騰前の3倍程度にまで跳ね上がり、今でも2倍弱の価格をつけている。5000円台で2TバイトのHDDが買えた記憶が新しいユーザーにとっては買い控えたくなる水準だ。フラッシュメモリーによる半導体ストレージであるSSDの容量単価は下落する一方だが、HDDが買えないならSSDを使えばいいのに…と言えるほどSSDは安くない。

 もちろん、データの増加は待ってくれない。記者の自宅には、主にファイルサーバーとして利用するLinuxサーバーがある。タイ大洪水以前に約7000円で購入した1Tバイトの2.5型ハードディスクをストレージに充てた。写真1枚が10Mバイト近くある今の利用環境では、みるみる空き容量が減っていく。どのコンテンツもときめくものばかりで、整理には限界がある。「では増設」と思い立っても、HDDは買い控えたくなる価格で、SSDは価格の下落を待ちたくなる程度には割高に感じてしまう。

 そこで試したのが、日経Linuxの3月号の第2特集「凄腕のディスク節約&高速化術」で紹介した「重複排除」の利用だ。重複排除は、ファイルの共通データをひとまとめにして容量を節約する技術。ファイルとしては別物でも、一定の長さで区切ったデータのかたまり(ブロック)として見れば同じデータがある。同じファイルをファイル名を変えながらいくらコピーしても、ストレージの実使用量はほとんど変わらない。例えば20Gバイトの領域に10Gバイトのファイルを保存しても、利用可能な容量は19Gバイトのままだったりする。企業向けのストレージ装置ではアーカイブ用途を中心に普及期に入っている技術だ。

 重複排除を手軽に利用するソフトとして選んだのは、旧米Sun Microsystemsが開発し、主にSunを買収した米Oracleのストレージ装置で使われているファイルシステム「ZFS」のLinux版。その中でも、アプリケーションとして動作するため導入が容易な「zfs-fuse」というオープンソース・ソフトウエア(OSS)を利用した。インストール後、Linuxサーバーで3行ほどのコマンドを入力するだけで、保存可能な容量が一気に増えた。

Windowsマシン内にZFSのNASを作る

 Linuxマシンを持っているなら、zfs-fuseを試すのは簡単だ。ただWindowsを使っていても、メモリーが8Gバイトと潤沢にあるマシンであれば、Windows上の仮想マシンをzfsのファイルサーバーにする手もある。ノートPC、デスクトップPCを問わず、8Gバイトのメモリーは3000円あれば手に入る。これに未使用のパーティションやUSB接続の外付けHDDを組み合わせて、ZFSストレージと使う。仮想マシンのオーバーヘッドは、CPUをエミュレーションしないx86向け仮想マシンソフトであれば気にする必要はない。むしろリソースの活用になる。

 まず、仮想マシンソフトとしてOSSの「VirtualBox」をダウンロードする。Windows版の最新は「VirtualBox 4.1.8 for Windows hosts」だ。ダウンロード後にインストーラを起動し、案内に従ってインストールする。「オペレーティングシステム」は「Linux」、バージョンは「Ubuntu」を選ぶ。メモリーはデフォルトの512Mバイトでは少ないので2048Mバイトに設定し、ディスクはデフォルトの8Gバイトにする。

 続いて、Linuxディストリビューションの「Ubuntu」 の日本語版「Ubuntu Desktop 日本語 Remix CD」をUbuntu Japanese Teamのサイトから入手する。VitualBoxの「設定」で「ストレージ」の「IDEコントローラ」で「空」となっている部分を選択し、「属性」欄にあるCDアイコンをクリックしてダウンロードしたUbuntuのISOをマウントする。「起動」ボタンを押して仮想マシンの電源を入れるとUbuntuのインストーラが立ち上がるので、「Ubuntuをインストール」を選んで画面の案内に従ってインストールする。

 Ubuntuのインストール後に、「端末」を起動してZFSをインストールする。Ubuntuの基本的な操作は「Ubuntu 11.04の新デスクトップ環境を使いこなすに詳しい。初めてUbuntuを使う方はアプリケーションの起動方法に戸惑うかもしれないが、画面左上の丸形のアイコンのクリックで呼び出す検索窓が起点となる。ここでキーワードを入力するとアプリケーションを検索で呼び出せる。コマンドを入力してzfs-fuseをインストールするので、「term」と入力してコマンドラインシェルを操作する「端末」を起動し、以下のコマンドを入力する。

sudo apt-add-repository -y ppa:bugs-sehe/zfs-fuse
sudo apt-get -y update
sudo apt-get -y install zfs-fuse

 これでZFSが利用可能になる。ZFSのストレージを作成するには、ZFSで利用したいデバイスをVirtualBoxの仮想マシンの「デバイス」メニューで接続したうえで、対象デバイス名(2台目のHDDなら/dev/sdbなど)をオプションに指定して「ストレージプール」と「ファイルシステム」を作成する。ZFSで言うストレージプールとは、物理ドライブを束ねた仮想ストレージで、その中にZFSで言うところのファイルシステムを作成する。物理ディスクを追加すると、ストレージプールを増やせる。コマンドは以下の通りだ。

sudo zpool create pool /dev/sdb
sudo sudo zfs create pool/archive
sudo zfs dedup=verify pool/archive

 これで「pool」という名前のストレージプールと「archive」という名前のファイルシステムができ、重複排除が有効になる。圧縮効果が高いテキストの格納が中心であれば、「sudo zfs compression=on pool/archive 」を追加で実行して圧縮をオンにしても構わない。

 ZFSのファイルシステムを作った後は、ディレクトリーとして割り当てたZFSファイルシステムに対してWindowsマシンとのファイル共有を有効にする。下記のコマンドを実行してファイル共有ソフトの「Samba」をインストールし、最低限の設定を済ませる。

sudo apt-get install samba
sudo sed -i -e "/^\[global\]/a usershare owner only = false" /etc/samba/smb.conf
sudo chmod 777 /pool/archive

 Ubuntuのファイル管理ソフト「Nautilus」を起動して、/pool/archiveディレクトリーを選択した状態で右クリックメニューから「共有のオプション」を実行する。「このフォルダを共有する」のチェックボックスをオンにし、共有名とアクセス権(ここでは「ゲストによるアクセス」)を設定すれば、準備は完了だ。

 仕上げに、VirtualBoxの「設定」で「ネットワークアダプタ」を「ホストオンリーネットワーク」に切り替え、Ubuntu側のIPアドレスを「ifconfig」コマンドなどで調べておく。Windowsのエクスプローラから「\\192.168.56.101\」などとアドレスを指定してアクセスすれば、archiveディレクトリーが見えるはずだ。

 もちろん、仮想マシンではなくLinuxサーバーを構築するか、LinuxデスクトップでZFSを使う方がスマートだ。日経Linux 3月号の付録DVDの「CentOS 6.2」でファイルサーバーを構築するもよし、Mac OS XそっくりのGUIを持つ「Pear OS」でLinuxデスクトップを試してアーカイブ用ドライブでZFSを試すもよし。ZFSの活用法やSSDのLinuxでの使いこなし、SSDをHDDのキャッシュとして利用する米Facebook社発のOSS「flashcache」の導入法、さらには第1特集「サーバー構築の新常識」でクラウドサービスへの分散バックアップ法なども解説しているので、HDD高騰を乗り切る一助としてほしい。