Web更新

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導入コンサルティングサービス

関連記事一覧