Oracle Solaris ZFS 管理ガイド

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

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

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

zfs set コマンドを使用して、任意の設定可能なデータセットプロパティーを変更できます。あるいは、zfs create コマンドを使用して、データセットの作成時にプロパティーを設定できます。設定可能なデータセットプロパティーのリストは、「設定可能な ZFS ネイティブプロパティー」を参照してください。

zfs set コマンドには、property=value の形式のプロパティー/値のシーケンスを指定したあと、続けてデータセット名を指定します。各 zfs set 呼び出しで設定または変更できるプロパティーは、1 つだけです。

次の例では、tank/homeatime プロパティーを off に設定しています。


# zfs set atime=off tank/home

また、どのファイルシステムプロパティーもファイルシステムの作成時に設定できます。次に例を示します。


# zfs create -o atime=off tank/home

数値プロパティー値を指定する際には、理解が容易な次の接尾辞を使用できます (サイズの小さい順): BKMGTPEZ。これらのすべての接尾辞のあとに、オプションの b (バイト) を続けて指定することができます。ただし、B 接尾辞のあとには指定できません。もともとバイトを表しているためです。次の例にある 4 つの zfs set 呼び出しは、すべて同じ数値を表現しています。つまり、tank/home/marks ファイルシステムの quota プロパティーに 50G バイトの値を設定しています。


# zfs set quota=50G tank/home/marks
# zfs set quota=50g tank/home/marks
# zfs set quota=50GB tank/home/marks
# zfs set quota=50gb tank/home/marks

数値でないプロパティーの値では、大文字と小文字が区別されるので、小文字を使用する必要があります。ただし、mountpoint および sharenfs は例外です。これらのプロパティーの値には、大文字と小文字を混在させることができます。

zfs set コマンドの詳細については、zfs(1M) を参照してください。

ZFS プロパティーを継承する

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

次の例では、zfs set コマンドを使用して tank/home/bonwick ファイルシステムの圧縮を有効にしています。次に、zfs inherit を使用して、compression プロパティーをクリアしています。この結果、このプロパティーはデフォルト値の off を継承します。hometankcompression プロパティーはローカルに設定されていないため、デフォルト値が使用されます。圧縮が両方とも有効になっていた場合は、すぐ上の祖先 (この例では home) に設定されている値が使用されます。


# zfs set compression=on tank/home/bonwick
# zfs get -r compression tank
NAME             PROPERTY      VALUE                    SOURCE
tank             compression   off                      default
tank/home        compression   off                      default
tank/home/bonwick compression   on                      local
# zfs inherit compression tank/home/bonwick
# zfs get -r compression tank
NAME             PROPERTY      VALUE                    SOURCE
tank             compression   off                      default
tank/home        compression   off                      default
tank/home/bonwick 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 は、このプロパティー値の起点を示します。次の表は、表示される可能性のあるソース値を定義したものです。

表 6–3 出力される可能性のある 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  type                  filesystem             -
tank/home  creation              Tue Jun 29 11:44 2010  -
tank/home  used                  21K                    -
tank/home  available             66.9G                  -
tank/home  referenced            21K                    -
tank/home  compressratio         1.00x                  -
tank/home  mounted               yes                    -
tank/home  quota                 none                   default
tank/home  reservation           none                   default
tank/home  recordsize            128K                   default
tank/home  mountpoint            /tank/home             default
tank/home  sharenfs              off                    default
tank/home  checksum              on                     default
tank/home  compression           off                    default
tank/home  atime                 on                     default
tank/home  devices               on                     default
tank/home  exec                  on                     default
tank/home  setuid                on                     default
tank/home  readonly              off                    default
tank/home  zoned                 off                    default
tank/home  snapdir               hidden                 default
tank/home  aclmode               groupmask              default
tank/home  aclinherit            restricted             default
tank/home  canmount              on                     default
tank/home  shareiscsi            off                    default
tank/home  xattr                 on                     default
tank/home  copies                1                      default
tank/home  version               4                      -
tank/home  utf8only              off                    -
tank/home  normalization         none                   -
tank/home  casesensitivity       sensitive              -
tank/home  vscan                 off                    default
tank/home  nbmand                off                    default
tank/home  sharesmb              off                    default
tank/home  refquota              none                   default
tank/home  refreservation        none                   default
tank/home  primarycache          all                    default
tank/home  secondarycache        all                    default
tank/home  usedbysnapshots       0                      -
tank/home  usedbydataset         21K                    -
tank/home  usedbychildren        0                      -
tank/home  usedbyrefreservation  0                      -
tank/home  logbias               latency                default

注 –

Oracle Solaris 10 リリースでは Oracle Solaris SMB サービスがサポートされていないため、Oracle Solaris 10 リリースの casesensitivitynbmandnormalizationsharesmbutf8only、および vscan プロパティーは完全には機能しません。


zfs get-s オプションを使用すると、表示するプロパティーをソースの種類ごとに指定できます。このオプションには、必要なソースの種類をコンマ区切りのリストとして指定します。指定したソースの種類のプロパティーだけが表示されます。有効なソースの種類は、localdefaultinheritedtemporary、および none です。次の例では、pool 上にローカルに設定されているすべてのプロパティーを表示しています。


# zfs get -s local all pool
NAME             PROPERTY      VALUE                      SOURCE
pool             compression   on                         local

前述のどのオプションの場合にも、-r オプションを使用して、指定したデータセットのすべての子に設定されている特定のプロパティーを再帰的に表示することができます。次の例では、tank に含まれるすべてのデータセットに設定されている、すべての一時的なプロパティーが再帰的に表示されます。


# zfs get -r -s temporary all tank
NAME             PROPERTY       VALUE                      SOURCE
tank/home          atime          off                      temporary
tank/home/bonwick  atime          off                      temporary
tank/home/marks    atime          off                      temporary

zfs get コマンドでは、ターゲットのファイルシステムを指定せずにプロパティー値のクエリーを行うことが可能です。これは、すべてのプールやファイルシステムがコマンドの処理対象となることを意味します。次に例を示します。


# zfs get -s local all
tank/home               atime          off                    local
tank/home/bonwick       atime          off                    local
tank/home/marks         quota          50G                    local

zfs get コマンドの詳細については、zfs(1M) を参照してください。

スクリプトで使用できるように ZFS プロパティーのクエリー検索を行う

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

次の例では、-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
export/home             5.57G
export/home/marks       1.43G
export/home/maybee      2.15G