ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris ZFS 管理ガイド Oracle Solaris 10 8/11 Information Library (日本語) |
1. Oracle Solaris ZFS ファイルシステム (概要)
3. Oracle Solaris ZFS ファイルシステムと従来のファイルシステムの相違点
4. Oracle Solaris ZFS ストレージプールの管理
5. Oracle Solaris ZFS ルートファイルシステムのインストールとブート
6. Oracle Solaris ZFS ファイルシステムの管理
スクリプトで使用できるように ZFS プロパティーのクエリー検索を行う
ZFS ファイルシステムでユーザーおよびグループの割り当て制限を設定する
7. Oracle Solaris ZFS のスナップショットとクローンの操作
8. ACL および属性を使用した Oracle Solaris ZFS ファイルの保護
10. Oracle Solaris ZFS の高度なトピック
11. Oracle Solaris ZFS のトラブルシューティングとプールの回復
ファイルシステム、ボリューム、スナップショット、およびクローンの動作を制御するときには、主にプロパティーという機構を使用します。この節で定義しているプロパティーは、特に説明している場合を除いて、すべての種類のデータセットに適用されます。
プロパティーは、ネイティブプロパティーとユーザー定義プロパティーの 2 種類に分けられます。ネイティブプロパティーは、内部の統計情報をエクスポートするか、ZFS ファイルシステムの動作を制御します。また、ネイティブプロパティーは設定可能なプロパティーまたは読み取り専用のプロパティーのどちらかです。ユーザープロパティーは ZFS ファイルシステムの動作には影響しませんが、これらを使用すると、使用環境内で意味を持つようにデータセットに注釈を付けることができます。ユーザープロパティーの詳細については、「ZFS ユーザープロパティー」を参照してください。
設定可能なプロパティーのほとんどは、継承可能なプロパティーでもあります。継承可能なプロパティーとは、親データセットに設定されるとそのすべての子孫に伝達されるプロパティーのことです。
継承可能なプロパティーには必ず、どのようにしてプロパティーが取得されたかを示すソースが関連付けられています。プロパティーのソースには、次の値が記述される可能性があります。
そのプロパティーが zfs set コマンドを使用して明示的にデータセットに設定されたことを示しています。「ZFS プロパティーを設定する」を参照してください。
そのプロパティーが、指定された祖先から継承されたことを示しています。
そのプロパティーの値が、継承されたのでもローカルで設定されたのでもないことを示しています。このソースは、このプロパティーがソース local として設定された祖先が存在しないことを示しています。
次の表には、ZFS ファイルシステムの読み取り専用のネイティブプロパティーと設定可能なネイティブプロパティーの両方を示しています。読み取り専用のネイティブプロパティーには、そのことを記載しています。この表に示すそれ以外のプロパティーは、すべて設定可能なプロパティーです。ユーザープロパティーについては、「ZFS ユーザープロパティー」を参照してください。
表 6-1 ZFS のネイティブプロパティーの説明
|
読み取り専用のネイティブプロパティーは、取得はできますが設定はできません。読み取り専用のネイティブプロパティーは継承されません。一部のネイティブプロパティーは、特定の種類のデータセットに固有です。このような場合は、データセットの種類について、表 6-1 の説明の中で記載しています。
読み取り専用のネイティブプロパティーをここに示します。説明は、表 6-1 を参照してください。
available
compressratio
creation
mounted
origin
referenced
type
used
詳細については、「used プロパティー」を参照してください。
usedbychildren
usedbydataset
usedbyrefreservation
usedbysnapshots
used 、referenced、available プロパティーなど、ディスク領域の計上の詳細については、「ZFS のディスク領域の計上」を参照してください。
used プロパティーは読み取り専用のプロパティーであり、このデータセットとそのすべての子孫が消費するディスク容量を特定します。この値は、データの割り当て制限および予約を対象にして確認されます。使用されるディスク領域にデータセットの予約は含まれませんが、子孫のデータセットがある場合はそれらの予約も考慮されます。データセットがその親から継承して消費するディスク容量、およびデータセットが再帰的に破棄されるときに解放されるディスク容量は、使用済み領域および予約の中で大きな割合を占めます。
スナップショットを作成したときは、それらのディスク領域は最初はスナップショットとファイルシステムの間で共有されます。それまでに作成したスナップショットと領域が共有されることもあります。ファイルシステムが変化していくにつれて、それまで共有されていたディスク領域がスナップショット固有になり、スナップショットが使用する領域に計上されます。スナップショットが使用するディスク領域には、その固有データが計上されます。また、スナップショットを削除すると、ほかのスナップショットに固有の (および使用される) ディスク容量を増やすことができます。スナップショットと領域の詳細については、「領域が不足した場合の動作」を参照してください。
使用済み、使用可能、参照済みの各ディスク容量には、保留状態の変更は含まれません。保留状態の変更は通常、数秒以内に計上されます。fsync(3c) や O_SYNC 関数を使用してディスクへの変更をコミットしても、ディスク領域の使用状況の情報がすぐに更新されることが保証されているわけではありません。
usedbychildren、usedbydataset、usedbyrefreservation、および usedbysnapshots プロパティーの情報は、zfs list - o space コマンドを使用して表示することができます。これらのプロパティーを使用して、used プロパティーを、子孫によって消費されるディスク領域に分解することができます。詳細は、表 6-1 を参照してください。
設定可能なネイティブプロパティーとは、値の取得および設定ができるプロパティーのことです。設定可能なネイティブプロパティーは、zfs set コマンド (説明は 「ZFS プロパティーを設定する」を参照) または zfs create コマンド (説明は 「ZFS ファイルシステムを作成する」を参照) を使って設定します。設定可能なネイティブプロパティーは、割り当て制限と予約を除いて継承されます。割り当て制限と予約の詳細については、「ZFS の割り当て制限と予約を設定する」を参照してください。
一部の設定可能なネイティブプロパティーは、特定の種類のデータセットに固有です。このような場合は、データセットの種類について、表 6-1 の説明の中で記載しています。特に記載している場合を除いて、プロパティーはすべての種類のデータセットに適用されます。 つまり、ファイルシステム、ボリューム、クローン、およびスナップショットに適用されます。
次のプロパティーは設定可能です。説明は、表 6-1 を参照してください。
aclinherit
詳細については、「ACL プロパティー (aclinherit)」を参照してください。
aclmode
詳細については、「ACL プロパティー (aclinherit)」を参照してください。
atime
canmount
チェックサム
compression
copies
devices
exec
mountpoint
primarycache
quota
readonly
recordsize
詳細については、「recordsize プロパティー」を参照してください。
refquota
refreservation
reservation
secondarycache
shareiscsi
sharenfs
setuid
snapdir
version
volsize
詳細については、「volsize プロパティー」を参照してください
volblocksize
zoned
xattr
canmount プロパティーを off に設定した場合は、zfs mount または zfs mount -a コマンドを使ってファイルシステムをマウントすることはできません。このプロパティーを off に設定することは、mountpoint プロパティーを none に設定することに似ていますが、継承可能な通常の mountpoint プロパティーをデータセットが引き続き保持する点が異なります。たとえば、このプロパティーを off に設定して、子孫のファイルシステム用に継承可能なプロパティーを確立できますが、親ファイルシステム自体がマウントされることもなければ、ユーザーがそれにアクセスすることもできません。この場合、親のファイルシステムは「コンテナ」の役目を果たしているため、そのコンテナにプロパティーを設定することはできますが、コンテナ自体にはアクセスできません。
次の例では、userpool が作成され、その canmount プロパティーが off に設定されます。子孫のユーザーファイルシステムのマウントポイントは、 1 つの共通したマウントポイント /export/home に設定されます。親のファイルシステムに設定されたプロパティーは子孫のファイルシステムに継承されますが、親のファイルシステム自体がマウントされることはありません。
# zpool create userpool mirror c0t5d0 c1t6d0 # zfs set canmount=off userpool # zfs set mountpoint=/export/home userpool # zfs set compression=on userpool # zfs create userpool/user1 # zfs create userpool/user2 # zfs mount userpool/user1 /export/home/user1 userpool/user2 /export/home/user2
canmount プロパティーを noauto に設定した場合、データセットは明示的にマウントする必要があり、自動的にはマウントできません。この値設定は Oracle Solaris アップグレードソフトウェアで使用され、アクティブなブート環境に属するデータセットだけがブート時にマウントされるようにします。
recordsize プロパティーは、ファイルシステムに格納するファイルの推奨ブロックサイズを指定します。
このプロパティーは、レコードサイズが固定されているファイルにアクセスするデータベースワークロードだけで使用するように設計されています。ZFS では、標準的なアクセスパターンに最適化された内部アルゴリズムに従って、ブロックサイズが自動的に調整されます。作成されるファイルのサイズが大きく、それらのファイルにさまざまなパターンの小さなブロック単位でアクセスするデータベースの場合には、このようなアルゴリズムが最適でないことがあります。recordsize にデータベースのレコードサイズ以上の値を設定すると、パフォーマンスが大きく向上することがあります。このプロパティーを汎用目的のファイルシステムに使用することは、パフォーマンスが低下する可能性があるため、できるだけ避けてください。指定するサイズは、512 バイト - 128K バイトの 2 の累乗にしてください。ファイルシステムの recordsize 値を変更した場合、そのあとに作成されたファイルだけに適用されます。既存のファイルには適用されません。
このプロパティーの省略名は recsize です。
volsize プロパティーはボリュームの論理サイズを指定します。デフォルトでは、ボリュームを作成するときに、同じ容量の予約が設定されます。volsize への変更があった場合には、予約にも同様の変更が反映されます。これらのチェックは、予期しない動作が起きないようにするために使用されます。ボリュームで使用できる容量が指定した容量より少ない場合には、ボリュームがどのように使用されるかによって異なりますが、定義されていない動作が実行されたりデータが破損したりする可能性があります。このような影響は、ボリュームの使用中にボリュームサイズを変更した場合にも発生することがあります。特に、サイズを縮小した場合にはその可能性が高くなります。ボリュームサイズを調整するときは、特に注意してください。
推奨される方法ではありませんが、zfs create -V に -s フラグを指定するか、またはボリュームの作成後に予約を変更すると、疎ボリュームを作成できます。「疎ボリューム」とは、予約がボリュームサイズと等しくないボリュームのことです。疎ボリュームの場合、volsize を変更しても予約には反映されません。
ボリュームの使用方法の詳細については、「ZFS ボリューム」を参照してください。
ZFS は、ネイティブプロパティーに加えて、任意のユーザープロパティーもサポートします。ユーザープロパティーは ZFS の動作には影響しませんが、これらを使用すると、使用環境内で意味のある情報をデータセットに注釈として付けることができます。
ユーザープロパティーの名前は、次の規則に適合している必要があります。
ネイティブプロパティーと区別するためのコロン(': ') を含んでいる必要がある。
小文字の英字、数字、または次の句読文字を含んでいる必要がある。「:」、「+」、「.」、「_」。
ユーザープロパティー名の最大長は、256 文字である。
想定されている規則では、プロパティー名は次の 2 つの部分に分割しますが、この名前空間は ZFS によって強制されているものではありません。
module:property
ユーザープロパティーをプログラムで使用する場合、プロパティー名の module 要素には、逆順にした DNS ドメイン名を使用してください。これは、それぞれ単独で開発された 2 つのパッケージが、異なる目的で同じプロパティー名を使用する可能性を減らすためです。com.sun. で始まるプロパティー名は、Oracle Corporation が使用するために予約されています。
ユーザープロパティーの値は次の規則に準拠する必要があります。
常に継承され、決して検証されることのない任意の文字列から構成されている必要がある。
ユーザープロパティー値の最大長は、1024 文字である。
次に例を示します。
# zfs set dept:users=finance userpool/user1 # zfs set dept:users=general userpool/user2 # zfs set dept:users=itops userpool/user3
プロパティーを処理するコマンド (zfs list、zfs get、zfs set など) はすべて、ネイティブプロパティーとユーザープロパティーの両方の操作に使用できます。
次に例を示します。
zfs get -r dept:users userpool NAME PROPERTY VALUE SOURCE userpool dept:users all local userpool/user1 dept:users finance local userpool/user2 dept:users general local userpool/user3 dept:users itops local
ユーザープロパティーを消去するには、zfs inherit コマンドを使用します。次に例を示します。
# zfs inherit -r dept:users userpool
プロパティーがどの親のデータセットにも定義されていない場合は、完全に削除されます。