ファイルシステムを作成する
zfs createコマンドでファイルシステムを作成します。
前回作ったtankという名称のストレージプールに、homeという名称のファイルシステムを作成します。
$ sudo zfs create tank/home
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 94G 1.5G 92G 2% /
(略)
tank 1.3T 128K 1.3T 1% /tank
tank/home 1.3T 128K 1.3T 1% /tank/home
一瞬で作成され、そのままマウントもされます。
ファイルシステムのプロパティを変更する
ファイルシステムには様々なプロパティがあり、プロパティを設定することで動作を変更することができます。zfs get allコマンドでプロパティの一覧を見てみましょう。
$ sudo zfs get all tank/home
NAME PROPERTY VALUE SOURCE
tank/home type filesystem -
tank/home creation Wed Nov 11 0:38 2015 -
tank/home used 140K -
tank/home available 1.28T -
tank/home referenced 140K -
tank/home compressratio 1.00x -
tank/home mounted yes -
tank/home quota none default
tank/home reservation none default
tank/home recordsize 128K default
tank/home mountpoint /tank/home default
tank/home sharenfs off default
tank/home checksum on default
tank/home compression off default
tank/home atime on default
tank/home devices on default
tank/home exec on default
tank/home setuid on default
tank/home readonly off default
tank/home zoned off default
tank/home snapdir hidden default
tank/home aclinherit restricted default
tank/home canmount on default
tank/home xattr on default
tank/home copies 1 default
tank/home version 5 -
tank/home utf8only off -
tank/home normalization none -
tank/home casesensitivity sensitive -
tank/home vscan off default
tank/home nbmand off default
tank/home sharesmb off default
tank/home refquota none default
tank/home refreservation none default
tank/home primarycache all default
tank/home secondarycache all default
tank/home usedbysnapshots 0 -
tank/home usedbydataset 140K -
tank/home usedbychildren 0 -
tank/home usedbyrefreservation 0 -
tank/home logbias latency default
tank/home dedup off default
tank/home mlslabel none default
tank/home sync standard default
tank/home refcompressratio 1.00x -
tank/home written 140K -
tank/home logicalused 40K -
tank/home logicalreferenced 40K -
tank/home filesystem_limit none default
tank/home snapshot_limit none default
tank/home filesystem_count none default
tank/home snapshot_count none default
tank/home snapdev hidden default
tank/home acltype off default
tank/home context none default
tank/home fscontext none default
tank/home defcontext none default
tank/home rootcontext none default
tank/home relatime off default
tank/home redundant_metadata all default
tank/home overlay off default
mountpointプロパティを設定して、tank/home を /home としてマウントしてみます。まずは既存の/homeにあるファイルをtank/homeへコピーします。
$ sudo cp -a /home/* /tank/home/
次に mountpointプロパティを設定すると /homeの中身がカラじゃないと警告が出ますが、設定自体は成功します。
$ sudo zfs set mountpoint=/home tank/home
cannot mount '/home': directory is not empty
property may be set but unable to remount filesystem
$ sudo zfs get mountpoint tank/home
NAME PROPERTY VALUE SOURCE
tank/home mountpoint /home local
この状態でサーバ再起動すると、tank/home が /home にマウントされます。
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 94G 1.5G 92G 2% /
(略)
tank 1.3T 128K 1.3T 1% /tank
tank/home 1.3T 128K 1.3T 1% /home
ちなみに mountpoint=legacy と設定すると、mountコマンドや/etc/fstabでマウントする 従来の方式になります。
ついでにあと2つプロパティを設定します。
$ sudo zfs set atime=off tank/home
$ sudo zfs set compression=on tank/home
atimeプロパティは マウントオプションでお馴染みのアレです。
compressionプロパティをonにすると、これ以降 tank/home に作成されるデータがzip圧縮されるようになります。onにした時点で存在するデータは圧縮されないとのこと。1
各プロパティの解説は本家のドキュメントが詳しいです。
-
なので本当は cp -a /home/* /tank/home/ を実行する前に compression=onにしたほうがよかったです ↩