データセットプロパティーの管理には、zfs コマンドの set、inherit、および get サブコマンドを使用します。
zfs set コマンドを使用して、任意の設定可能なデータセットプロパティーを変更できます。あるいは、zfs create コマンドを使用して、データセットの作成時にプロパティーを設定できます。設定可能なデータセットプロパティーのリストは、設定可能な ZFS ネイティブプロパティーを参照してください。
zfs set コマンドには、property=value の形式のプロパティー/値のシーケンスを指定したあと、続けてデータセット名を指定します。zfs set の各呼び出しでは、プロパティーを 1 つだけ設定または変更できます。
次の例では、tank/home の atime を off に設定します。
# zfs set atime=off tank/home
また、どのファイルシステムプロパティーもファイルシステムの作成時に設定できます。例:
# zfs create -o atime=off tank/home
数値プロパティー値を指定する際には、理解が容易な次の接尾辞を使用できます (サイズの小さい順): BKMGTPEZ。これらのすべての接尾辞のあとに、オプションの b (バイト) を続けて指定することができます。ただし、B 接尾辞のあとには指定できません。もともとバイトを表しているためです。次の例にある 4 つの zfs set 呼び出しは、すべて同じ数値を表現しています。つまり、users/home/mark ファイルシステムの quota プロパティーに 20G バイトの値を設定しています。
# zfs set quota=20G users/home/mark # zfs set quota=20g users/home/mark # zfs set quota=20GB users/home/mark # zfs set quota=20gb users/home/mark
使用率が 100% のファイルシステムにプロパティーを設定しようとすると、次のようなメッセージが表示されます。
# zfs set quota=20gb users/home/mark cannot set property for '/users/home/mark': out of space
数値以外のプロパティーの値は大文字と小文字が区別され、mountpoint を除いて小文字である必要があります。このプロパティーの値は、大文字と小文字を混在させることができます。
zfs set コマンドの詳細は、zfs(1M) のマニュアルページを参照してください。
割り当て制限と予約を除いて、すべての設定可能なプロパティーは、親ファイルシステムから値を継承します。ただし、子孫ファイルシステムに対して割り当て制限または予約が明示的に設定されている場合は継承されません。継承するプロパティーについて、明示的な値が祖先に設定されていない場合は、プロパティーのデフォルト値が使用されます。zfs inherit コマンドを使用して、プロパティー値をクリアし、値が親ファイルシステムから継承されるようにすることができます。
次の例では、zfs set コマンドを使用して tank/home/jeff ファイルシステムの圧縮を有効にしています。次に、zfs inherit を使用して、compression プロパティーをクリアしています。この結果、このプロパティーはデフォルト値の off を継承します。home と tank の compression プロパティーはローカルに設定されていないため、デフォルト値が使用されます。圧縮が両方とも有効になっていた場合は、すぐ上の祖先 (この例では home) に設定されている値が使用されます。
# zfs set compression=on tank/home/jeff # zfs get -r compression tank/home NAME PROPERTY VALUE SOURCE tank/home compression off default tank/home/eric compression off default tank/home/eric@today compression - - tank/home/jeff compression on local # zfs inherit compression tank/home/jeff # zfs get -r compression tank/home NAME PROPERTY VALUE SOURCE tank/home compression off default tank/home/eric compression off default tank/home/eric@today compression - - tank/home/jeff compression off default
–r オプションを指定すると、inherit サブコマンドが再帰的に適用されます。次の例では、このコマンドによって、compression プロパティーの値が tank/home およびそのすべての子孫に継承されます。
# zfs inherit -r compression tank/home
zfs inherit コマンドの詳細は、zfs(1M) のマニュアルページを参照してください。
プロパティー値のクエリー検索を行うもっとも簡単な方法は、zfs list コマンドを使用することです。詳細については、基本的な ZFS 情報を表示するを参照してください。ただし、複雑なクエリーおよびスクリプトについては、zfs get コマンドを使用して、より詳しい情報をカスタマイズされた形式で提供してください。
zfs get コマンドを使用して、任意のデータセットプロパティーを取得できます。次の例は、データセット上の 1 つのプロパティー値を取得する方法を示しています。
# zfs get checksum tank/ws NAME PROPERTY VALUE SOURCE tank/ws checksum on default
4 番目の列 SOURCE は、このプロパティー値の起点を示します。次の表は、表示される可能性のあるソース値を定義したものです。
|
特殊キーワード all を使って、すべてのデータセットプロパティー値を取得できます。all キーワードの使用例を次に示します。
# zfs get all tank/home NAME PROPERTY VALUE SOURCE tank/home aclinherit restricted default tank/home aclmode discard default tank/home atime on default tank/home available 274G - tank/home canmount on default tank/home casesensitivity mixed - tank/home checksum on default tank/home compression off default tank/home compressratio 1.00x - tank/home copies 1 default tank/home creation Tue Jul 30 10:08 2013 - tank/home dedup off default tank/home defaultgroupquota none - tank/home defaultuserquota none - tank/home devices on default tank/home encryption off - tank/home exec on default tank/home keychangedate - default tank/home keysource none default tank/home keystatus none - tank/home logbias latency default tank/home mlslabel none - tank/home mounted yes - tank/home mountpoint /tank/home default tank/home multilevel off - tank/home nbmand off default tank/home normalization none - tank/home primarycache all default tank/home quota none default tank/home readonly off default tank/home recordsize 128K default tank/home referenced 31K - tank/home refquota none default tank/home refreservation none default tank/home rekeydate - default tank/home reservation none default tank/home rstchown on default tank/home secondarycache all default tank/home setuid on default tank/home shadow none - tank/home share.* ... default tank/home snapdir hidden default tank/home sync standard default tank/home type filesystem - tank/home used 31K - tank/home usedbychildren 0 - tank/home usedbydataset 31K - tank/home usedbyrefreservation 0 - tank/home usedbysnapshots 0 - tank/home utf8only off - tank/home version 6 - tank/home vscan off default tank/home xattr on default tank/home zoned off default
zfs get の –s オプションを使用すると、表示するプロパティーをソースタイプで指定できます。このオプションには、必要なソースの種類をコンマ区切りのリストとして指定します。指定したソースの種類のプロパティーだけが表示されます。有効なソースの種類は、local、default、inherited、temporary、および none です。次の例は、tank/ws でローカルに設定されているすべてのプロパティーを表示します。
# zfs get -s local all tank/ws NAME PROPERTY VALUE SOURCE tank/ws compression on local
前述のどのオプションの場合にも、–r オプションを組み合わせて、指定したファイルシステムのすべての子に設定されている特定のプロパティーを再帰的に表示できます。次の例では、tank/home に含まれるすべてのファイルシステムについてのすべての一時的なプロパティーが再帰的に表示されます。
# zfs get -r -s temporary all tank/home NAME PROPERTY VALUE SOURCE tank/home atime off temporary tank/home/jeff atime off temporary tank/home/mark quota 20G temporary
zfs get コマンドでは、ターゲットのファイルシステムを指定せずにプロパティー値のクエリーを行うことが可能です。これは、すべてのプールやファイルシステムがコマンドの処理対象となることを意味します。例:
# zfs get -s local all tank/home atime off local tank/home/jeff atime off local tank/home/mark quota 20G local
zfs get コマンドの詳細は、zfs(1M) のマニュアルページを参照してください。
zfs get コマンドでは、スクリプトで使用できるように設計された –H および – o オプションを利用できます。–H オプションを使用すると、ヘッダー情報を省略し、空白をタブ文字で置き換えることができます。空白が揃うことで、データが見やすくなります。–o オプションを使用して、次の方法で出力をカスタマイズできます。
リテラル name は、ZFS のプロパティーの概要セクションで定義したプロパティーのコンマ区切りリストと組み合わせて使用できます。
出力対象となるリテラルフィールド name、value、property、および source のコンマ区切りリストのあとに、空白 1 つと引数 1 つ。この引数は、プロパティーのコンマ区切りリストとなります。
次の例では、–zfs get の –H および o オプションを使用して、1 つの値を取得する方法を示しています。
# zfs get -H -o value compression tank/home on
–p オプションを指定すると、数値が正確な値として出力されます。たとえば、1M バイトは 1000000 として出力されます。このオプションは、次のように使用できます。
# zfs get -H -o value -p used tank/home 182983742
前述のどのオプションの場合にも、–r オプションを使用して、要求した値をすべての子孫について再帰的に取得できます。次の例では、–H、–o、および –r オプションを使用して、export/home およびその子孫のファイルシステム名と used プロパティーの値を取得しています。ヘッダー出力は省略されています。
# zfs get -H -o name,value -r used export/home