ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

Ubuntu TrustyでZFSストレージを使う(2016年2月26日版/前編)

f:id:ytooyama:20160226215749p:plain

Linuxで環境構築している時にああ、やっぱりもう少しストレージを大きくしておけばよかったなあと思うことが良くあります。

OSのインストールくらいなら充分だったんだけど、色々アプリケーションをインストールしていたら足りなくなったとか、ログで溢れそうになったとか、DockerとかOpenStackで色々イメージを登録したり、インスタンスをたくさん立ち上げていたらディスクが足りなくなったとか...私の使用する範囲だけでも様々なパターンがあります。

ESXiでWindows Serverを使う場合、ストレージの拡大は結構簡単だったりするのですが、Linuxになると難しかったりします。

そこでZFSを使うことにしました。ZFSはちょっと前にお仕事でSolaris 11を使ったのでどう言ったファイルシステムでどんな機能があるかくらいは最低限知っているつもりです。そんな便利なZFSUbuntuで割と簡単に使えると知り、早速使ってみました。

 

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

長くなったので、前編はここまでにします。後編ではディスクボリュームの追加について書きたいと思います。

このブログサイトはJavaScriptを使っていますが、読み込んでいるJavaScriptは全てはてなが提供しているものであり、筆者が設置しているものではありません。