ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
![]() |
Oracle Solaris 11.1 の管理: ZFS ファイルシステム Oracle Solaris 11.1 Information Library (日本語) |
1. Oracle Solaris ZFS ファイルシステム (概要)
3. Oracle Solaris ZFS ストレージプールの管理
5. Oracle Solaris ZFS ファイルシステムの管理
ZFS ファイルシステムの共有の問題のトラブルシューティング
ZFS ファイルシステムでユーザーおよびグループの割り当て制限を設定する
6. Oracle Solaris ZFS のスナップショットとクローンの操作
7. ACL および属性を使用した Oracle Solaris ZFS ファイルの保護
9. Oracle Solaris ZFS の高度なトピック
10. Oracle Solaris ZFS のトラブルシューティングとプールの回復
12. 推奨の Oracle Solaris ZFS プラクティス
データセットプロパティーの管理には、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
注 - -r オプションを使用すると、すべての子孫のファイルシステムに割り当てられている現在のプロパティー設定がクリアされることに注意してください。
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 は、このプロパティー値の起点を示します。次の表は、表示される可能性のあるソース値を定義したものです。
表 5-3 出力される可能性のある SOURCE 値 (zfs get コマンド)
|
特殊キーワード 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 66.9G - 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 Fri May 11 10:58 2012 - tank/home dedup off default tank/home devices on default tank/home encryption off - tank/home exec on 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 43K - 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.* ... local tank/home snapdir hidden default tank/home sync standard default tank/home type filesystem - tank/home used 8.54M - tank/home usedbychildren 8.49M - tank/home usedbydataset 43K - 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