Go to main content
Oracle® Solaris 11.3 での ZFS ファイルシステムの管理

印刷ビューの終了

更新: 2016 年 11 月
 
 

ZFS プロパティーを管理する

データセットプロパティーの管理には、zfs コマンドの setinherit、および get サブコマンドを使用します。

ZFS プロパティーを設定する

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 のプロパティーの継承

割り当て制限と予約を除いて、すべての設定可能なプロパティーは、親ファイルシステムから値を継承します。ただし、子孫ファイルシステムに対して割り当て制限または予約が明示的に設定されている場合は継承されません。継承するプロパティーについて、明示的な値が祖先に設定されていない場合は、プロパティーのデフォルト値が使用されます。zfs inherit コマンドを使用して、プロパティー値をクリアし、値が親ファイルシステムから継承されるようにすることができます。

次の例では、zfs set コマンドを使用して tank/home/jeff ファイルシステムの圧縮を有効にしています。次に、zfs inherit を使用して、compression プロパティーをクリアしています。この結果、このプロパティーはデフォルト値の off を継承します。hometank の 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

注 -  –r オプションを使用すると、すべての子孫のファイルシステムに割り当てられている現在のプロパティー設定がクリアされることに注意してください。

zfs inherit コマンドの詳細は、zfs(1M) のマニュアルページを参照してください。

ZFS プロパティーのクエリー検索

プロパティー値のクエリー検索を行うもっとも簡単な方法は、zfs list コマンドを使用することです。詳細については、基本的な ZFS 情報を表示するを参照してください。ただし、複雑なクエリーおよびスクリプトについては、zfs get コマンドを使用して、より詳しい情報をカスタマイズされた形式で提供してください。

zfs get コマンドを使用して、任意のデータセットプロパティーを取得できます。次の例は、データセット上の 1 つのプロパティー値を取得する方法を示しています。

# zfs get checksum tank/ws
NAME             PROPERTY       VALUE                      SOURCE
tank/ws          checksum       on                         default

4 番目の列 SOURCE は、このプロパティー値の起点を示します。次の表は、表示される可能性のあるソース値を定義したものです。

表 5  出力される可能性のある SOURCE 値 (zfs get コマンド)
ソース値
説明
default
このプロパティー値は、このデータセットまたはその祖先 (存在する場合) で明示的に設定されたことが一度もありません。このプロパティーのデフォルト値が使用されています。
inherited from dataset-name
このプロパティー値は、dataset-name に指定されている親データセットから継承されます。
local
このプロパティー値は、zfs set を使って、このデータセットに明示的に設定されました。
temporary
このプロパティー値は、zfs mount – o オプションを使って設定され、マウントの有効期間だけ有効です。一時的なマウントポイントプロパティーの詳細については、一時的なマウントプロパティーを使用するを参照してください。
- (なし)
このプロパティーは読み取り専用です。値は ZFS によって生成されます。

特殊キーワード 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 オプションを使用すると、表示するプロパティーをソースタイプで指定できます。このオプションには、必要なソースの種類をコンマ区切りのリストとして指定します。指定したソースの種類のプロパティーだけが表示されます。有効なソースの種類は、localdefaultinheritedtemporary、および 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 プロパティーのクエリー検索を行う

zfs get コマンドでは、スクリプトで使用できるように設計された –H および – o オプションを利用できます。–H オプションを使用すると、ヘッダー情報を省略し、空白をタブ文字で置き換えることができます。空白が揃うことで、データが見やすくなります。–o オプションを使用して、次の方法で出力をカスタマイズできます。

  • リテラル name は、ZFS のプロパティーの概要セクションで定義したプロパティーのコンマ区切りリストと組み合わせて使用できます。

  • 出力対象となるリテラルフィールド namevalueproperty、および 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