データセットの作成
本章では,作成したプール上に,利用しやすい単位であるデータセットを作成する手順を説明する.
Oracle Solaris ZFS 管理ガイド "ファイルシステムの管理"
http://docs.oracle.com/cd/E19253-01/819-6260/gavwq/index.html
データセットはディレクトリのような階層構造として扱われ,プールを作成した時点で自動的に用意される,プールと同じ名前のデータセットの下に作成していくことになる.
データセットは zfs create
コマンドを利用して作成する.
例えば pool0/dataset0 というデータセットを作成するには次のようなコマンドを実行するのである.
$ sudo zfs create pool0/dataset0
データストアの確認
存在するデータストアは zfs list
コマンドで確認できる.
$ sudo zfs list
NAME USED AVAIL REFER MOUNTPOINT
pool0 235K 57.2G 50.0K /pool0
pool0/dataset0 48.3K 57.2G 48.3K /pool0/dataset0
データストアの名前,USED (スナップショットを含んだ全利用サイズ),AVAIL (残りサイズ),REFER (参照可能サイズ),およびマウントポイントが確認できることがわかる.
プロパティの指定
zfs create
コマンドでは,データストアに対するプロパティの設定が可能だ.以下に一例を挙げる.
このほかにも様々なオプションが存在するため,公式のドキュメントも参照されたい.
Oracle Solaris ZFS 管理ガイド "ZFS のプロパティーの紹介"
http://docs.oracle.com/cd/E19253-01/819-6260/gazss/index.html
- 圧縮
- 重複排除
- マウントポイント
- Unicodeの正規化 (作成時のみ指定可能)
- ケースセンシティブ (大文字小文字の区別)
- 読み取り専用
これらは,-o
オプションから設定できます.
圧縮
テキストファイルが多い領域などで威力を発揮するであろう.
ZFS on Linux 0.6.3 では圧縮フォーマットに,lzjb
,gzip
,gzip-N
,zle
,lz4
が指定できた.(Nは1から9までの圧縮率)
$ sudo zfs create -o compression=gzip pool0/gzip
重複排除
前述の理由により,推奨しない.扱うデータサイズが少ない場合や,要求されるメモリ容量を満たすスペックであり,どうしても必要な場合に限って有効にしてほしい.
$ sudo zfs create -o dedup=on pool0/dedup
マウントポイント
標準ではデータセット名がそのままマウントポイントになるが,必要に応じてデータセット毎にマウントポイントを変更することができる.
$ sudo zfs create -o mountpoint=/mnt/rename pool0/rename
Unicodeの正規化
Unicodeでは一つの文字を複数の要素で表現する方法と,単一の文字で表現する方法と,同じ文字でも幾つかの扱い方が存在する. これをある一つの方法に統一することをUnicodeの正規化という.
異なるOSで利用する場合には,この違いが問題になることがあるため,formD
を指定して有効にすることを推奨する.
$ sudo zfs create -o normalization=formD pool0/formD
ケースセンシティブ
ファイル名の大文字小文字を,区別する (sensitive
),区別しない (insensitive
),あるいは混在可能 (mixed)が指定可能である.デフォルトでは,sensitive
が指定されている.
$ sudo zfs create -o casesensitivity=insensitive pool0/insensitive
読み取り専用
バックアップ用途のためなど,読み取り専用にすることも可能である.
$ sudo zfs create -o readonly=on pool0/insensitive
データセットのプロパティの確認と変更
zfs get
コマンドにより,データセットのプロパティを確認することができる.
圧縮率 (compressratio
) のような読み取り専用のプロパティ等も確認することができる.
$ sudo zfs get all pool0/gzip
NAME PROPERTY VALUE SOURCE
pool0/gzip type filesystem -
pool0/gzip creation Mon Dec 29 0:45 2014 -
pool0/gzip used 48.3K -
pool0/gzip available 57.1G -
pool0/gzip referenced 48.3K -
pool0/gzip compressratio 1.00x -
pool0/gzip mounted yes -
pool0/gzip quota none default
pool0/gzip reservation none default
pool0/gzip recordsize 128K default
pool0/gzip mountpoint /pool0/gzip default
pool0/gzip sharenfs off default
pool0/gzip checksum on default
pool0/gzip compression gzip local
pool0/gzip atime on default
pool0/gzip devices on default
pool0/gzip exec on default
pool0/gzip setuid on default
pool0/gzip readonly off default
pool0/gzip zoned off default
pool0/gzip snapdir hidden default
pool0/gzip aclinherit restricted default
pool0/gzip canmount on default
pool0/gzip xattr on default
pool0/gzip copies 1 default
pool0/gzip version 5 -
pool0/gzip utf8only off -
pool0/gzip normalization none -
pool0/gzip casesensitivity sensitive -
pool0/gzip vscan off default
pool0/gzip nbmand off default
pool0/gzip sharesmb off default
pool0/gzip refquota none default
pool0/gzip refreservation none default
pool0/gzip primarycache all default
pool0/gzip secondarycache all default
pool0/gzip usedbysnapshots 0 -
pool0/gzip usedbydataset 48.3K -
pool0/gzip usedbychildren 0 -
pool0/gzip usedbyrefreservation 0 -
pool0/gzip logbias latency default
pool0/gzip dedup off default
pool0/gzip mlslabel none default
pool0/gzip sync standard default
pool0/gzip refcompressratio 1.00x -
pool0/gzip written 48.3K -
pool0/gzip logicalused 15K -
pool0/gzip logicalreferenced 15K -
pool0/gzip snapdev hidden default
pool0/gzip acltype off default
pool0/gzip context none default
pool0/gzip fscontext none default
pool0/gzip defcontext none default
pool0/gzip rootcontext none default
pool0/gzip relatime off default
また,変更可能なプロパティは zfs set
コマンドで変更することができる.
例えば圧縮オプションは作成後にも変更が可能であり.変更後のファイル操作に適用される.
$ sudo zfs set compression=gzip-9 pool0/gzip
$ sudo zfs get compression pool0/gzip
NAME PROPERTY VALUE SOURCE
pool0/gzip compression gzip-9 local
ブロックデバイスの作成
ZFSではファイルシステムだけではなく,ブロックデバイスも作成可能である.
ブロックデバイスの場合には -V
オプションにてサイズを指定する.
$ sudo zfs create -V 5g pool0/block
このようにすると,ファイルシステムとしてマウントされず,代わりに,/dev/zvol/pool0/block
にて参照可能なブロックデバイスが作成される.
ブロックデバイスにすることにより,例えばiSCSIターゲットのボリュームや,KVMの仮想マシンのイメージにZFSを利用することができるのだ.
ブロックデバイスであっても後述のスナップショットに関する機能が利用できるため,便利な場面もあるだろう.