UbuntuでZFSを使ってみよう 第37回 ZFSのサブコマンドを再確認しよう(2)
今回も、前回に引き続き、ZFSの多くあるサブコマンドについて解説します。
zfs create [-Pnpuv] [-o property=value]… filesystem
この zfs create
コマンドでは、既存の zpool からファイルシステムを作成します。作成するファイルシステムは、-u
オプションを付けない限り、親から継承したマウントポイントプロパティに自動的にマウントされます。
-o property=value
オプション
-o property=value
オプションを指定すると、zfs set -o property=value
を実行したときのように、作成時にプロパティが設定されます。 複数の -o
オプションを指定できますが、 -o
オプションで複数同じプロパティを指定すると、エラーになります。
-p
オプション
設定したファイルシステム内で、存在しない親データセットをすべて作成します。この動作は、mkdir -p
に似ています。-p
オプションを指定したとき、-o
オプションで指定したプロパティはすべて無視されます。指定したファイルシステムがすでに存在するとき、-p
オプションを指定するとエラーとなりません。
# 通常は、親ファイルシステムがないと、ファイルシステムが作成されない
$ sudo zfs create rpool/var/abc/def/ghi
cannot create 'rpool/var/abc/def/ghi': parent does not exist
# -p オプションを指定すると、親ファイルシステムごと作成される
$ sudo zfs create -p rpool/var/abc/def/ghi
$ zfs list -r rpool/var/abc
NAME USED AVAIL REFER MOUNTPOINT
rpool/var/abc 288K 812G 96K /var/abc
rpool/var/abc/def 192K 812G 96K /var/abc/def
rpool/var/abc/def/ghi 96K 812G 96K /var/abc/def/ghi
# -p オプションなしでは、存在するファイルシステムを実行するとエラーになる
$ sudo zfs create rpool/var/abc/def/ghi
cannot create 'rpool/var/abc/def/ghi': dataset already exists
$ sudo zfs create -p rpool/var/abc/def/ghi
-P
オプション
作成されたデータセットについて、機械的に解析可能な冗長情報を出力します。出力の各行は、キーと1~2つの値からなり、すべてタブで区切られます。このうち create_ancestors と create キーは、唯一の値として filesystem を持っています。 create_ancestors キーは、-p
オプションが使用されたときのみ表示されます。 propertyキーは2つの値を持っています。 プロパティ名とプロパティの値です。 propertyキーは、オプションの使用数に応じて、0回以上表示されます。
# -p オプションを指定しない場合
$ zfs create -n -v -P -o mountpoint=/mnt/tmp -o atime=off rpool/var/abc/def/ghi
create rpool/var/abc/def/ghi
property mountpoint /mnt/tmp
property atime off
# -p オプションを指定した場合
$ zfs create -n -v -p -P -o mountpoint=/mnt/tmp -o atime=off rpool/var/abc/mno/pqr
create_ancestors rpool/var/abc/mno/pqr
create rpool/var/abc/mno/pqr
property mountpoint /mnt/tmp
property atime off
-v
オプション
-v
オプションを指定すると、作成されたファイルシステムに関する詳細な情報を表示します。
-n
オプション
-n
オプションを指定すると、ファイルシステムを作成しません。この機能は、-v
、-P
、-o
オプションと組み合わせ、指定されたプロパティの結果を検証するのに役立ちます。-n
オプションで確認した結果をもとに、実際にファイルシステム作成する時には、失敗する場合があります。これは-n
オプションでは、権限や使用容量まで確認しないためです。
$ zfs create -n -v -P -o mountpoint=/mnt/tmp -o atime=off rpool/var/abc/def/ghi
create rpool/var/abc/def/ghi
property mountpoint /mnt/tmp
property atime off
-u
オプション
新しく作成したファイルシステムを、自動的にマウントしません。
zfs create [-ps] [-b blocksize] [-o property=value]… -V size volume
指定されたサイズのボリュームを作成します。ボリュームは /dev/zvol/path
にブロックデバイスとして作成されます。path
は ZFS 名前空間での、ボリュームの名前になります。 sizeは、デバイスに設定される論理サイズです。
$ sudo zfs create -V 20G rpool/var/test
$ zfs list rpool/var/test
NAME USED AVAIL REFER MOUNTPOINT
rpool/var/test 20.6G 812G 56K -
$ ls /dev/zvol/rpool/var/test
/dev/zvol/rpool/var/test
-b blocksize
オプション
-o volblocksize=blocksize
を設定したのと同じ意味です。 このオプションと -o volblocksize を同時に指定した場合の動作は未定義です。
-o property=value
オプション
ファイルシステム作成時と同じく、ボリューム作成時のプロパティを設定します。
-p
オプション
ファイルシステム作成時と同じく、存在しない親データセットをすべて作成するオプションです。
-P
オプション
ファイルシステム作成時と同じく、作成されたボリュームについて、機械的に解析可能な冗長情報を出力します。
-s
オプション
容量予約なしのスパースボリュームを作成します。 スパースボリュームに関する詳細については、第30回 ZFSのプロパティを見てみよう(12)の volsize を参照してください。
-v
オプション
-v
オプションを指定すると、作成されたボリュームに関する詳細な情報を表示します。
-n
オプション
ファイルシステム作成時と同じく、-n
オプションを指定すると、ボリュームを作成せず、確認のみを行います。
$ zfs create -n -P -o copies=2 -V 20G rpool/var/swap
create rpool/var/swap
property copies 2
property volsize 21474836480
property refreservation 22148808704
終わりに
今回は、ZFSのcreateサブコマンドについて説明しました。次回もZFSサブコマンドについて説明します。次回をお楽しみに。
さて、このコラムを掲載いただいているデジタル・ヒュージ・テクノロジー社は老舗のOSSインテグレーターです。特にLinuxは強く、OSSを活用した業務システムの実績も多いです。興味がある方は以下のページもご覧ください。
DHT OSS導入コンサルティングサービス