Linuxで環境構築している時にああ、やっぱりもう少しストレージを大きくしておけばよかったなあと思うことが良くあります。
OSのインストールくらいなら充分だったんだけど、色々アプリケーションをインストールしていたら足りなくなったとか、ログで溢れそうになったとか、DockerとかOpenStackで色々イメージを登録したり、インスタンスをたくさん立ち上げていたらディスクが足りなくなったとか...私の使用する範囲だけでも様々なパターンがあります。
ESXiでWindows Serverを使う場合、ストレージの拡大は結構簡単だったりするのですが、Linuxになると難しかったりします。
そこでZFSを使うことにしました。ZFSはちょっと前にお仕事でSolaris 11を使ったのでどう言ったファイルシステムでどんな機能があるかくらいは最低限知っているつもりです。そんな便利なZFSをUbuntuで割と簡単に使えると知り、早速使ってみました。
・Ubuntu Serverのインストール
まず、Ubuntu Server 14.04.1を普通にインストールします。14.04.4がつい最近出たのにUbuntu Server 14.04.1をインストールって、まず普通じゃないだろ?!と思われそうですが、理由は後で書きます。
・UbuntuをアップデートしてKernel 3.13系が動く最新版のUbuntuにアップデートする
Kernel 3.13が必要だったのでUbuntu Server 14.04.1のインストーラーを使いました。最新のKernel 3.13系カーネルに更新して再起動します。
$ sudo apt-get update && sudo apt-get dist-upgrade && sudo reboot
・PPAを追加
Ubuntu TrustyでZFSを使うには様々な方法がありますが、PPAを追加すると新しいバージョンが使えるのでオススメです。
再起動しすぎにみえますが、ZFS用のカーネルモジュールのビルドが行われるので全部終わったら一旦、再起動しておきます。
$ sudo apt-get install software-properties-common python-software-properties
$ sudo apt-add-repository ppa:zfs-native/stable
$ sudo apt-get update && sudo apt-get install ubuntu-zfs
$ sudo reboot
・モジュールの確認
コマンドを実行してカーネルモジュールがあるか確認します。
# find /lib/modules -name zfs.ko
/lib/modules/3.13.0-79-generic/updates/dkms/zfs.ko
/lib/modules/3.13.0-32-generic/updates/dkms/zfs.ko
※4.2.0-30を入れたらzfsモジュールが読み込まれなかった(バグ?)ので、3.13系カーネルを利用。
・デバイスの確認
ZFSプールに追加するためのストレージが認識されていることを確認します。
$ sudo dmesg |egrep 'sdb|sdc'
・ラベルをつける
デバイスにラベルがないとzpool createコマンドが失敗するので、partedなんかでタグをつけます。
$ sudo -i
# parted /dev/sdb
(parted) mklabel gpt
(parted) quit
# parted /dev/sdc
(parted) mklabel gpt
(parted) quit
・ストレージプールの作成
/dev/sdbと/dev/sdcをプールvol0のストレージとして構成します。
# zpool create vol0 /dev/sdb /dev/sdc
# zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
vol0 15.9G 63.5K 15.9G - 0% 0% 1.00x ONLINE -
8GBのディスクが束になり、16GBのストレージとして使えるようになりました。
・ストレージのマウント
vol0を/zfsdiskディレクトリーにマウントします。普通はマウントポイント用のディレクトリーをmkdirとかで作ったり、永続マウントするための設定を書いたりしますが、ZFSだとこのコマンドだけでよしなにやってくれます。
# zfs set mountpoint=/zfsdisk vol0
・確認
dfコマンドで見られること、再起動後も/zfsdiskがマウントされることを確認します。
# df -h /zfsdisk
Filesystem Size Used Avail Use% Mounted on
vol0 16G 0 16G 0% /zfsdisk
長くなったので、前編はここまでにします。後編ではディスクボリュームの追加について書きたいと思います。