無題の備忘録

IT技術について調べたことや学んだこと、試したこと記録するブログです。Erlang、ネットワーク、 セキュリティ、Linux関係のものが多いです。

次世代なファイルシステム ZFS on Linux を学ぶ2 - 導入編

はじめに

今回からLinux上でのZFSの扱いを学んでいこうと思います。 OSはUbuntu Desktop 16.04LTSで、試しています。

ZFSのインストール

下記のコマンドで、必要なライブラリがインストールされます。

$ sudo apt install zfs

これで、zfsが使えるようになりました。 zfsとzpoolコマンドが入っているはずです。

$ zfs -h
Permission denied the ZFS utilities must be run as root.

rootで操作しないと動作しないようなので、rootになっておきます。ちなみに、-hのというプションはありませんでした。 zfs listコマンドで、ZFSファイルシステムを表示できますが、今はまだないです。

# zfs list
no datasets available

次のようにZFSストレージプールをzpool listコマンドで表示できますが、まだないです。

# zpool list
no pools available

ZFSのストレージプールとファイルシステムを作成する

ZFSはストレージプールという概念で、物理的なディスクを抽象化しています。 ZFSファイルシステムを作成するときに、物理的なディスクを意識せずに扱うことができます。

ここでは、パーティションを切ったり、ディスクを用意するのが面倒なので、ディスクの代わりにファイルを用意しました。 事前にddコマンドで、/tmp/disk1.img, /tmp/disk2.imgを作成します。

# dd if=/dev/zero of=/tmp/disk1.img bs=1024 count=10485760

zpool create コマンド

testpoolというミラー化されたストレージプールを作成するときは、zpool createコマンドを使います。

# zpool create testpool mirror /tmp/disk1.img /tmp/disk2.img

zpool listコマンド

作成されたZFSストレージプールを確認します。 ここで、/tmp/disk1.imgと/tmp/disk2.img はそれぞれ10GBです。2つのファイルにデータがミラーされて管理されます。

# zpool list
NAME      SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
testpool  9.94G    50K  9.94G         -     0%     0%  1.00x  ONLINE  -

zfs createコマンド

ZFSファイルシステムを作成するコマンドです。先ほど作成したtestpoolにファイルシステムを作成します。

# zfs create testpool/home

階層的にファイルシステムを作成して、それぞれZFSファイルシステムとして管理することができます。

# zfs create testpool/home/jeff
# zfs create testpool/home/bill

zfs listコマンド

zfs createコマンドを実行した後は、zfs listコマンドでZFSファイルシステムのリストを表示することができます。

# zfs list
NAME                USED  AVAIL  REFER  MOUNTPOINT
testpool             122K  9.63G    19K  /testpool
testpool/home         57K  9.63G    19K  /testpool/home
testpool/home/bill    19K  9.63G    19K  /testpool/home/bill
testpool/home/jeff    19K  9.63G    19K  /testpool/home/jeff

今回はここまで