概要
Ubuntu16.04 で zfs を試してみました
セットアップの方法から zpool を使った簡単な操作方法まで紹介します
環境
- Ubuntu 16.04 (kernel 4.4.0-89-generic)
- zfsutils-linux 0.6.5.6
事前準備
100 GB の HDD を別途追加しておきます
fdisk -l
で /dev/sdb が見えている状態を想定しています
有効化
Ubuntu 16.04 では zfs のモジュールがすでにインストールはされていますが有効化されていません
なので、有効化するだけで使えるようになります
- modprobe zfs
で有効化できます
- lsmod | grep zfs
- find /lib -name “zfs.ko”
でモジュールが有効化されていることを確認します
- echo “zfs” >> /etc/modules
で再起動時にも zfs モジュールが有効になるようにしておきます
zfs を操作するには zpool というコマンドが必要になるのでインストールします
- apt update && apt install zfsutils-linux
これで有効化は完了です
パーティション作成
追加した HDD のパーティションを行います
- fdisk /dev/sdb
で全領域を使って新規パーティションを作成しましょう (/dev/sdb1)
zfs プールの作成
zfs は複数のディスク領域をプールとして登録することで操作することができます
今回は 1 HDD のみですが複数パーティションを作成すれば複数パーティションを 1 つのプールとして登録することもできます
今回は pool1 というプールを作成します
- zpool create pool1 /dev/sdb1
- zpool status
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
pool1 99.5G 50K 99.5G - 0% 0% 1.00x ONLINE -
root@ubuntu:~# zpool status
pool: pool1
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
pool1 ONLINE 0 0 0
sdb1 ONLINE 0 0 0
errors: No known data errors
- zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
pool1 99.5G 62.5K 99.5G - 0% 0% 1.00x ONLINE -
- zpool export pool1
- zpool import pool1
- df -h
一度 export することでプールをマウントできる状態にします
そして import することでマウントすることができます
再度 export するとアンマウントすることができます
export したプールは再度 import 可能な状態になります
再度 import 可能なプールは list や status コマンドでは表示されません
再度 import 可能なプールを表示する場合は import コマンドを引数なしで使用します
ちなみに zfs の場合一度 import してしまえば再起動しても自動で import してくれます
/etc/fstab などにマウント情報を記載しなくても OK です
zfs プールを削除する
- zpool destroy pool1
で可能です
マウントした状態でも実行できます (たぶんデバイスが busy の状態だとできないと思います)
destroy 後にやっぱりもう一度使いたいという場合は「-D」オプションを指定して import します
- zpool import -D
- zpool import -D pool1
ディスク上にあるデータも元通り復元されます
destroy 後に再度 create するとディスクのデータもクリアされて再度プールが作成されます
ディスクを追加してみる
サーバを停止して /dev/sdc に更に 100GB のディスクを追加します
このディスクをすでに作成済みに pool1 に追加してプール領域を拡張してみます
- fdisk /dev/sdc
- zpool add pool1 /dev/sdc1
これだけです
これで容量を確認すると先程の 100GB が 200GB に拡張されているのがわかると思います
- df -h /pool1
Filesystem Size Used Avail Use% Mounted on
pool1 193G 0 193G 0% /pool1
逆に領域を削除したい場合は remove を使います
が、100GB 以上すでに使用している場合や書き込み中の場合にどうなるかは検証していないので不明です
(たぶん busy でできないか、できてもデータが破損しそうな気がします)
最後に
Ubuntu16.04 で zfs を試してみました
インストール等も不要で簡単に使えました
同じようなことをするのに LVM という仕組みがありますが
LVM よりかは単純な操作で使えるような印象です
あとは性能比較などもしてみないと何とも言えないところはあります
Tips
プールの情報を取得する
- zpool get all
参考サイト
- http://ytooyama.hatenadiary.jp/entry/2016/04/23/002358
- https://chibiegg.gitbooks.io/how-to-zfs/content/zpool.html
- http://docs.oracle.com/cd/E19253-01/819-6260/index.html
- Oracle Solaris 用に作成されたドキュメントですがコマンドの使い方は参考になります
0 件のコメント:
コメントを投稿