ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris の管理: ZFS ファイルシステム Oracle Solaris 11 Information Library (日本語) |
1. Oracle Solaris ZFS ファイルシステム (概要)
3. Oracle Solaris ZFS ファイルシステムと従来のファイルシステムの相違点
4. 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 のトラブルシューティングとプールの回復
13. 推奨の Oracle Solaris ZFS プラクティス
この Solaris リリースでは、次のように ZFS ファイルシステムの共有を作成してその共有を公開します。
zfs share コマンドを使用して、ファイルシステム共有を作成し、NFS または SMB 共有プロパティーを定義します。
個別のコマンドを使用して共有を作成した場合、次の機能が得られます。
ファイルシステム内の特定のパスを共有するために使用されるオプションを定義します。
ファイルシステムごとに複数の共有を定義できますが、それぞれの共有を一意に特定する共有名が使用されます。
1 つの共有は、NFS 共有と SMB 共有の両方に対してオプションを定義できます。
単一のディレクトリパスに対し複数の SMB パスを定義できます。
共有は、.zfs/share ディレクトリ内にある共有の名前が付いたファイルに格納されます。
定義された共有と sharenfs および sharesmb プロパティーとの関連は、次のようになります。
既存の sharenfs プロパティーは、ファイルシステムを NFS で公開するかどうかを制御します。値は on または off です。このプロパティーは子孫のファイルシステムに継承されます。
既存の sharesmb プロパティーは、ファイルシステムを SMB で公開するかどうかを制御します。値は on または off です。このプロパティーは子孫のファイルシステムに継承されます。
sharenfs または sharesmb プロパティーを on に設定すると、ファイルシステム (およびこのプロパティーを継承したすべての子孫のファイルシステム) の定義された共有すべてが、該当するプロトコルに対して公開されます。定義されたすべての共有は、zfs share コマンドを発行したときにも公開されます。
共有が定義されていない場合、ファイルシステムは共有されません。
ファイルシステムの共有が定義されている場合は、これらの共有だけが公開されます。ファイルシステムのマウントポイントは、ファイルシステムを明示的に共有する共有が存在する場合にのみ共有されます。
sharenfs または sharesmb プロパティーを off に設定すると、ファイルシステム (およびプロパティーを継承したすべての子孫のファイルシステム) の公開済みの共有すべてが、該当するプロトコルに対して非公開になります。これらの共有は、sharenfs または sharesmb プロパティーを on に設定するまで共有解除のままです。
このプロパティーを off に設定しても共有は削除されず、次回、sharenfs または sharesmb プロパティーを on に設定したときに再度共有されます。
zfs unshare コマンドを発行すると、ファイルシステムの公開済みのすべての共有が非公開になります。これらの共有は、ファイルシステムに対して zfs share コマンドを発行するまで共有解除のままです。
zfs unshare コマンドを発行しても定義された共有は削除されず、次回、zfs share コマンドを発行したときに再度共有されます。
このセクションでは、新しい共有構文とレガシー共有構文のいくつかの相違点について詳しく説明します。
新しい共有の主要な相違点は次のとおりです。
ZFS ファイルシステムを共有するための sharemgr インタフェースが zfs set share コマンドに置き換わります。
sharemgr インタフェースは使用できなくなりました。旧バージョンの share コマンドおよび sharenfs プロパティーは引き続き使用できます。次の例を参照してください。
/etc/dfs/dfstab ファイルは引き続き存在しますが、変更は無視されます。SMF が ZFS または UFS の共有情報を管理するので、システムのリブート時にファイルシステムが自動的に共有されます。ZFS のマウントおよび共有情報が管理される方法と似ています。
share -a コマンドは、share -ap コマンドに似ており、ファイルシステム共有は永続的です。
子孫のファイルシステムは、共有プロパティーを継承しません。オンに設定された sharenfs プロパティーを継承して子孫のファイルシステムが作成された場合は、新しい子孫のファイルシステムに共有が作成されます。
レガシー共有構文は引き続きサポートされています。
share コマンドを使用してファイルシステムを共有します。
たとえば、ZFS ファイルシステムを共有するには、次のように行います。
# share -F nfs /tank/zfsfs # cat /etc/dfs/sharetab /tank/zfsfs - nfs rw
上の構文は UFS ファイルシステムの共有と同じです。
# share -F nfs /ufsfs # cat /etc/dfs/sharetab /ufsfs - nfs rw /tank/zfsfs - nfs rw
sharenfs プロパティーが設定されるまでは、ファイルシステムを初期共有するために zfs share コマンドを使用することはできません。
# zfs share rpool/data cannot share 'rpool/data': legacy share use share(1M) to share this filesystem, or set the 'share' property and set [sharenfs|sharesmb] property on # zfs set sharenfs=on rpool/data # cat /etc/dfs/sharetab /rpool/data - nfs rw
すべての方法が即座にファイルシステム共有を公開します。
新しい zfs set share コマンドは、NFS プロトコルまたは SMB プロトコルで ZFS ファイルシステムを共有するために使用します。共有は、sharenfs セットプロパティーもファイルシステムで設定されるまで公開されません。
zfs set share コマンドを使用して、ZFS ファイルシステムの NFS または SMB 共有を作成し、sharenfs プロパティーも設定します。
# zfs create rpool/fs1 # zfs set share=name=fs1,path=/rpool/fs1,prot=nfs rpool/fs1 name=fs1,path=/rpool/fs1,prot=nfs
sharenfs または sharesmb プロパティーが on に設定されるまで、共有は公開されません。例:
# zfs set sharenfs=on rpool/fs1 # cat /etc/dfs/sharetab /rpool/fs1 fs1 nfs sec=sys,rw
公開 NFS 共有は次のように作成できます。
# zfs set share=name=pp,path=/pub,prot=nfs,sec=sys,rw=*,public rpool/public name=pp,path=/pub,prot=nfs,public=true,sec=sys,rw=* # zfs set sharenfs=on rpool/public # cat /etc/dfs/sharetab /pub pp nfs public,sec=sys,rw
次のような構文を使用して、新しく作成した ZFS ファイルシステムの共有も作成できます。
# zfs create -o mountpoint=/ds -o sharenfs=on rpool/ds
ZFS ファイルシステムの NFS 共有を作成する場合、次の共有コンポーネントを指定する必要があります。
共有の名前を指定します。最大の共有名は 80 文字です。
共有するファイルシステムまたはディレクトリ内に存在する必要がある、NFS 共有のパスを指定します。
NFS または SMB としてプロトコルを指定します。
共有する ZFS ファイルシステムを指定します。
その他の共有オプションは次のとおりです。
共有の識別に役立つテキストを入力します。説明内のスペースまたはコンマは、引用符 (" ") で囲む必要があります。
すべてのクライアントに対して共有を読み取り/書き込み可能にするか読み取り専用にするかを指定します。ホスト名、IP アドレス、またはネットグループを含むコロン区切りのリストを指定することもできます。
ルートアクセスを許可された特定のホストまたはホストのリストから root ユーザーを指定します。デフォルトでは、ルートアクセスを許可されたホストはありません。
sys、dh、krb5 などの NFS サーバーセキュリティーモードを指定します。サポートされているセキュリティーモード情報については、nfssec(5) を参照してください。
次の NFS プロパティーは、prot=nfs のあとで、sec= プロパティーの前に指定する必要があります。
anon=user-name| uid
nosub=true|false
nosuid=true|false
aclok=true|false
public=true|false
index=filename
log=TYPE_LOGTAG
cksum=TYPE_STRINGSET
次の省略可能な SMB プロパティーは、 prot=smb プロパティーのあとに指定する必要があります。
ad-container=string
abe=[true|false]
csc=[disabled|manual|auto|vdo]
catia=[true|false]
guestok=[true|false]
ro=access-list
rw=access-list
none=access-list
NFS および SMB 共有プロパティーの詳細については、share_nfs(1M) および share_smb(1M) を参照してください。
以前のリリースと同様に、sharenfs プロパティーの値を表示するには、zfs get sharenfs プロパティーを使用するか、zfs get all コマンド構文を使用します。
# zfs get sharenfs rpool/fs1 NAME PROPERTY VALUE SOURCE rpool/fs1 sharenfs on local
新しい共有情報は、zfs get share コマンドを使用して取得できます。
# zfs get share rpool/fs1 NAME PROPERTY VALUE SOURCE rpool/fs1 share name=rpool_fs1,path=/rpool/fs1,prot=nfs local
新しい共有情報は、zfs get all コマンド構文では取得できません。
新しく作成した ZFS ファイルシステムを作成する場合、zfs get share コマンドを使用して、share-name 名または share-path 名を指定します。例:
# zfs create -o mountpoint=/data -o sharenfs=on rpool/data # zfs get share rpool/data NAME PROPERTY VALUE SOURCE rpool/data share name=data,path=/data,prot=nfs local
zfs share プロパティーと sharenfs または sharesmb プロパティーの継承は、次のように機能します。
zfs share プロパティーは親から子孫のファイルシステムに継承されません。さらに、zfs set share コマンドは、子孫のファイルシステムで ZFS プロパティーを設定する -r オプションをサポートしません。
sharenfs または sharesmb プロパティーが親ファイルシステムで設定されている場合、sharenfs または sharesmb プロパティーは子孫のファイルシステムでも設定されます。例:
# zfs create -o mountpoint=/ds rpool/ds # zfs set share=name=ds,path=/ds,prot=nfs rpool/ds name=ds,path=/ds,prot=nfs # zfs set sharenfs=on rpool/ds # cat /etc/dfs/sharetab /ds rpool_ds nfs sec=sys,rw # zfs create rpool/ds/ds1 # zfs get sharenfs rpool/ds/ds1 NAME PROPERTY VALUE SOURCE rpool/ds/ds1 sharenfs on inherited from rpool/ds
既存のすべての子ファイルシステムも、親の sharenfs または sharesmb プロパティー値を継承します。
sharenfs または sharesmb プロパティーが親ファイルシステムで off に設定されている場合、sharenfs または sharesmb プロパティーは子孫のファイルシステムでも off に設定されます。例:
# zfs set sharenfs=off rpool/ds $ zfs get -r sharenfs rpool/ds NAME PROPERTY VALUE SOURCE rpool/ds sharenfs off local rpool/ds/ds1 sharenfs off inherited from rpool/ds rpool/ds/ds2 sharenfs off inherited from rpool/ds rpool/ds/ds3 sharenfs off inherited from rpool/ds
共有プロパティー値を変更する場合、名前およびプロトコルのプロパティーを指定する必要があります。
たとえば、次のような NFS 共有を作成します。
# zfs create -o mountpoint=/ds -o sharenfs=on rpool/ds # zfs set share=name=ds,path=/ds,prot=nfs rpool/ds name=ds,path=/ds,prot=nfs
続いて、SMB プロトコルを追加します。
# zfs set share=name=ds,prot=nfs,prot=smb rpool/ds name=ds,path=/ds,prot=nfs,prot=smb
SMB プロトコルを削除します。
# zfs set -c share=name=ds,prot=smb rpool/ds name=ds,path=/ds,prot=nfs
zfs set - c コマンドを使用して、既存の共有を削除できます。たとえば、共有名を指定します。
# zfs get share NAME PROPERTY VALUE SOURCE rpool/ds share name=ds,path=/ds,prot=nfs local
続いて、share-name 名を指定して共有を削除します。例:
# zfs set -c share=name=ds rpool/ds share 'ds' was removed.
ファイルシステムの作成時に、デフォルトの共有を作成することによって共有が確立されている場合、共有は share-name 名または share-path 名で削除できます。たとえば、この共有にはデフォルトの share-name 名 (data) とデフォルトの share-path 名 (/data) が与えられています。
# zfs create -o mountpoint=/data -o sharenfs=on rpool/data # zfs get share rpool/data NAME PROPERTY VALUE SOURCE rpool/data share name=data,path=/data,prot=nfs local
share-name 名を指定することによって共有を削除します。例:
# zfs set -c share=name=data rpool/data share 'data' was removed.
share-path 名を指定することによって共有を削除します。例:
# zfs set -c share=path=/data rpool/data share 'data' was removed.
以前の Solaris リリースでは、Oracle Solaris 非大域ゾーンで NFS 共有または SMB 共有を作成して公開することはできませんでした。この Solaris リリースでは、zfs set share コマンドとレガシー share コマンドを非大域ゾーンで使用することにより、NFS 共有を作成して公開できます。
ZFS ファイルシステムは、非大域ゾーンでマウントされて使用できるようになれば、そのゾーン内で共有できます。
ファイルシステムは、非大域ゾーンでマウントされていない場合、または非大域ゾーンに共有されていない場合に、大域ゾーン内で共有できます。
ZFS ファイルシステムの mountpoint プロパティーが legacy に設定されている場合、レガシー share コマンドを使用してファイルシステムを共有できます。
たとえば、/export/home/data および /export/home/data1 ファイルシステムは、zfszone で使用できます。
zfszone# share -F nfs /export/home/data zfszone# cat /etc/dfs/sharetab /export/home/data export_home_data nfs sec=sys,rw
zfszone# zfs set share=name=data1,path=/export/home/data1,prot=nfs tank/zones/export/home/data1 zfszone# zfs set sharenfs=on tank/zones/export/home/data1 zfszone# cat /etc/dfs/sharetab /export/home/data1 data1 nfs sec=sys,rw
次の表では、新しい ZFS ファイルシステム共有構文とレガシー共有構文について説明しています。
表 6-5 ZFS 共有とレガシー共有コマンドのサマリー
|
サブディレクトリまたは子孫のファイルシステムがすでに共有されている場合、親ファイルシステムを共有できません。
# share -F nfs /rpool/fs2/dir1 # share -F nfs /rpool/fs2/dir2 # share -F nfs /rpool/fs2 share: NFS: descendant of path is shared: /rpool/fs2/dir1 in rpool_fs2_dir2
zfs set share コマンドで作成された共有の名前変更はサポートされていません。
zfs set share コマンドを使用することにより、NFS と SMB の両方のプロトコルでファイルシステム共有を作成できます。例:
# zfs set share=name=ds,path=/ds,prot=nfs,prot=smb rpool/ds name=ds,path=/ds,prot=nfs,prot=smb
レガシー share コマンドを使用して、NFS と SMB の両方のプロトコルでファイルシステム共有を作成する場合、コマンドを 2 度指定する必要があります。例:
# share -F nfs /rpool/ds # share -F smb /rpool/ds # zfs get share rpool/df name=rpool_ds,path=/rpool/ds,prot=nfs,prot=smb
コンマ (,) を含む共有パスや説明は、二重引用符で囲む必要があります。
このセクションでは移行に関する問題を説明します。
システムのアップグレード - このリリースでのプロパティーの変更により、古い BE でブートすると、ZFS 共有が不正になります。ZFS 以外の共有は影響を受けません。以前の BE に戻す予定がある場合は、ZFS ファイルシステムで共有構成を復元できるように、pkg update 操作の前に、最初に既存の共有構成のコピーを保存してください。
古い BE で、sharemgr show -vp コマンドを使用して、すべての共有およびそれらの構成を一覧表示します。
zfs get sharenfs filesystem コマンドおよび zfs sharesmb filesystem コマンドを使用して、共有プロパティーの値を取得します。
古い BE に戻す場合は、sharenfs および sharesmb プロパティーを元の値にリセットします。
旧バージョンの共有解除動作 - unshare -a コマンドまたは unshareall コマンドを使用すると、共有が解除されますが、SMF 共有リポジトリは更新されません。既存の共有を再度共有しようとすると、共有リポジトリで競合がチェックされ、エラーが表示されます。