JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris 11.1 の管理: ZFS ファイルシステム     Oracle Solaris 11.1 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

1.  Oracle Solaris ZFS ファイルシステム (概要)

2.  Oracle Solaris ZFS 入門

3.  Oracle Solaris ZFS ストレージプールの管理

4.  ZFS ルートプールのコンポーネントの管理

5.  Oracle Solaris ZFS ファイルシステムの管理

ZFS ファイルシステムの管理 (概要)

ZFS ファイルシステムの作成、破棄、および名前変更を行う

ZFS ファイルシステムを作成する

ZFS ファイルシステムを破棄する

ZFS ファイルシステムの名前を変更する

ZFS のプロパティーの紹介

ZFS の読み取り専用のネイティブプロパティー

used プロパティー

設定可能な ZFS ネイティブプロパティー

canmount プロパティー

casesensitivity プロパティー

copies プロパティー

dedup プロパティー

encryption プロパティー

recordsize プロパティー

share.smb プロパティー

volsize プロパティー

ZFS ユーザープロパティー

ZFS ファイルシステムの情報のクエリー検索を行う

基本的な ZFS 情報を表示する

複雑な ZFS クエリーを作成する

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

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

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

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

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

ZFS ファイルシステムをマウントする

ZFS マウントポイントを管理する

自動マウントポイント

レガシーマウントポイント

ZFS ファイルシステムをマウントする

一時的なマウントプロパティーを使用する

ZFS ファイルシステムをアンマウントする

ZFS ファイルシステムを共有および共有解除する

旧バージョンの ZFS 共有の構文

新しい ZFS 共有構文

プロパティーごとの継承による ZFS 共有

古いプールでの ZFS 共有の継承

ZFS 名前付き共有

ZFS 自動共有

ZFS 共有情報を表示する

ZFS 共有プロパティー値の変更

ZFS 共有の公開と非公開

ZFS 共有を削除する

非大域ゾーン内の ZFS ファイル共有

ZFS 共有のマイグレーション/移行に関する問題

ZFS ファイルシステムの共有の問題のトラブルシューティング

ZFS の割り当て制限と予約を設定する

ZFS ファイルシステムに割り当て制限を設定する

ZFS ファイルシステムでユーザーおよびグループの割り当て制限を設定する

ZFS ファイルシステムに予約を設定する

ZFS ファイルシステムの暗号化

暗号化された ZFS ファイルシステムの鍵を変更する

ZFS 暗号化鍵の管理

ZFS 鍵操作アクセス権を委任する

暗号化した ZFS ファイルシステムをマウントする

暗号化された ZFS ファイルシステムをアップグレードする

ZFS の圧縮、複製解除、暗号化のプロパティー間の関連

ZFS ファイルシステムを暗号化する例

ZFS ファイルシステムを移行する

ファイルシステムを ZFS ファイルシステムに移行する方法

ZFS ファイルシステムの移行のトラブルシューティング

ZFS ファイルシステムをアップグレードする

6.  Oracle Solaris ZFS のスナップショットとクローンの操作

7.  ACL および属性を使用した Oracle Solaris ZFS ファイルの保護

8.  Oracle Solaris ZFS 委任管理

9.  Oracle Solaris ZFS の高度なトピック

10.  Oracle Solaris ZFS のトラブルシューティングとプールの回復

11.  スナップショットのアーカイブとルートプールの回復

12.  推奨の Oracle Solaris ZFS プラクティス

A.  Oracle Solaris ZFS バージョンの説明

索引

ZFS ファイルシステムを共有および共有解除する

Oracle Solaris 11.1 リリースでは、ZFS プロパティーの継承を活用することで、ZFS 共有の管理を簡素化しています。プールバージョン 34 が動作しているプールで新しい共有構文が有効になっています。

ファイルシステムごとに複数の共有を定義できます。共有名は、各共有を一意に識別します。ファイルシステム内の特定のパスを共有するために使用されるプロパティーを定義できます。デフォルトでは、すべてのファイルシステムが共有解除されます。通常、共有が作成されるまで、NFS サーバーサービスは開始されません。有効な共有が作成されると、NFS サービスは自動的に開始されます。ZFS ファイルシステムの mountpoint プロパティーが legacy に設定されている場合、レガシー share コマンドを使用することによってのみファイルシステムを共有できます。

たとえば、tank/home ファイルシステムを共有する場合、次のような構文を使用します。

# zfs set share.nfs=on tank/home

追加のプロパティー値を指定したり、既存のファイルシステム共有の既存のプロパティー値を変更したりすることもできます。例:

# zfs set share.nfs.nosuid=on tank/home/userA

前の例では、tank/home ファイルシステムに対して share.nfs プロパティーが on に設定されており、share.nfs プロパティー値はすべての子孫ファイルシステムに継承されます。例:

# zfs create tank/home/userA
# zfs create tank/home/userB

旧バージョンの ZFS 共有の構文

Oracle Solaris 11 の構文は引き続きサポートされているため、2 つの手順でファイルシステムを共有できます。この構文は、すべてのプールバージョンでサポートされています。

ファイルシステム共有は、レガシー zfs get share コマンドを使用して表示できます。

# zfs get share rpool/fs1
NAME       PROPERTY  VALUE  SOURCE
rpool/fs1  share     name=fs1,path=/rpool/fs1,prot=nfs  local

また、ファイルシステムを共有するための share コマンドは、Oracle Solaris 10 リリースの構文と同様に、ファイルシステム内のディレクトリを共有するためにも引き続きサポートされています。たとえば、ZFS ファイルシステムを共有するには、次のように行います。

# share -F nfs /tank/zfsfs
# grep zfsfs /etc/dfs/sharetab
/tank/zfsfs    tank_zfsfs     nfs     sec=sys,rw

上の構文は UFS ファイルシステムの共有と同じです。

# share -F nfs /ufsfs
# grep ufsfs /etc/dfs/sharetab
/ufsfs          -               nfs     rw      
/tank/zfsfs     tank_zfsfs      nfs     rw      

新しい ZFS 共有構文

zfs set コマンドは、NFS または SMB プロトコルを介して ZFS ファイルシステムを共有および公開するために使用します。あるいは、ファイルシステムの作成時に share.nfs または share.smb プロパティーを設定することもできます。

たとえば、tank/sales ファイルシステムを作成および共有します。デフォルトの共有アクセス権は、全員に対する読み取り/書き込みです。share.nfs プロパティーは子孫のファイルシステムに継承されるため、子孫の tank/sales/logs ファイルシステムも自動的に共有され、tank/sales/log ファイルシステムは読み取り専用アクセスに設定されます。

# zfs create -o share.nfs=on tank/sales
# zfs create -o share.nfs.ro=\* tank/sales/logs
# zfs get -r share.nfs tank/sales
NAME             PROPERTY   VALUE  SOURCE
tank/sales       share.nfs  on     local
tank/sales%      share.nfs  on     inherited from tank/sales
tank/sales/log   share.nfs  on     inherited from tank/sales
tank/sales/log%  share.nfs  on     inherited from tank/sales

次のように、共有ファイルシステムの特定のシステムにルートアクセスすることができます。

# zfs set share.nfs=on tank/home/data
# zfs set share.nfs.sec.default.root=neo tank/home/data

プロパティーごとの継承による ZFS 共有

最新のプールバージョン 34 にアップグレードされているプールでは、ZFS プロパティーの継承を使用して共有の維持を容易にする新しい共有構文を使用できます。各共有特性は、別々の share プロパティーになります。それらの share プロパティーは、share. 接頭辞で始まる名前によって識別されます。share プロパティーの例には、share.descshare.nfs.nosuid、および share.smb.guestok などがあります。

share.nfs プロパティーは NFS 共有が有効であるかどうかを制御します。share.smb プロパティーは SMB 共有が有効であるかどうかを制御します。新しいプールでは、sharenfsshare.nfs の別名であり、sharesmbshare.smb の別名であるため、レガシー sharenfs および sharesmb プロパティー名は引き続き使用できます。tank/home ファイルシステムを共有する場合、次のような構文を使用します。

# zfs set share.nfs=on tank/home

この例では、share.nfs プロパティー値はすべての子孫ファイルシステムに継承されます。例:

# zfs create tank/home/userA 
# zfs create tank/home/userB
# grep tank/home /etc/dfs/sharetab
/tank/home      tank_home       nfs     sec=sys,rw      
/tank/home/userA        tank_home_userA nfs     sec=sys,rw      
/tank/home/userB        tank_home_userB nfs     sec=sys,rw   
古いプールでの ZFS 共有の継承

古いプールでは、sharenfs および sharesmb プロパティーのみが子孫ファイルシステムによって継承されます。他の共有特性は、共有ごとに .zfs/shares ファイルに格納され、継承されません。

特別な規則は、sharenfs または sharesmb を親から継承する新しいファイルシステムを作成したときは必ず、sharenfs または sharesmb 値からそのファイルシステムのデフォルトの共有が作成されるというものです。sharenfs が単に on のときは、子孫ファイルシステムで作成されるデフォルトの共有にはデフォルトの NFS 特性のみが含まれることに注意してください。例:

# zpool get version tank
NAME  PROPERTY  VALUE  SOURCE
tank  version   33     default
# zfs create -o sharenfs=on tank/home
# zfs create tank/home/userA
# grep tank/home /etc/dfs/sharetab
/tank/home      tank_home       nfs     sec=sys,rw      
/tank/home/userA        tank_home_userA nfs     sec=sys,r

ZFS 名前付き共有

名前付き共有を作成することもできます。これにより、SMB 環境でアクセス権およびプロパティーを設定する際の柔軟性が向上します。例:

# zfs share -o share.smb=on tank/workspace%myshare

前の例では、zfs share コマンドによって、tank/workspace ファイルシステムの myshare という SMB 共有が作成されます。このファイルシステムの .zfs/shares ディレクトリを介して SMB 共有にアクセスしたり、特定のアクセス権や ACL を表示または設定したりできます。各 SMB 共有は、個別の .zfs/shares ファイルで表されます。例:

# ls -lv /tank/workspace/.zfs/shares
-rwxrwxrwx+  1 root     root           0 May 15 10:31 myshare
     0:everyone@:read_data/write_data/append_data/read_xattr/write_xattr
         /execute/delete_child/read_attributes/write_attributes/delete
         /read_acl/write_acl/write_owner/synchronize:allow

名前付き共有は親ファイルシステムから共有プロパティーを継承します。前の例で share.smb.guestok プロパティーを親ファイルシステムに追加した場合、このプロパティーは名前付き共有に継承されます。例:

# zfs get -r share.smb.guestok tank/workspace
NAME                    PROPERTY           VALUE  SOURCE
tank/workspace          share.smb.guestok  on     inherited from tank
tank/workspace%myshare  share.smb.guestok  on     inherited from tank

名前付き共有は、NFS 環境でファイルシステムのサブディレクトリに対して共有を定義するときに役立つことがあります。例:

# zfs create -o share.nfs=on -o share.nfs.anon=99 -o share.auto=off tank/home
# mkdir /tank/home/userA
# mkdir /tank/home/userB
# zfs share -o share.path=/tank/home/userA tank/home%userA
# zfs share -o share.path=/tank/home/userB tank/home%userB
# grep tank/home /etc/dfs/sharetab
/tank/home/userA        userA   nfs     anon=99,sec=sys,rw      
/tank/home/userB        userB   nfs     anon=99,sec=sys,rw  

上記の例は、ファイルシステムの share.auto を off に設定すると、そのファイルシステムの自動共有のみが off になり、他のすべてのプロパティー継承は変更されないことも示しています。他のほとんどの共有プロパティーと異なり、share.auto プロパティーは継承可能ではありません。

名前付き共有は、公開 NFS 共有の作成時にも使用します。公開共有は、名前付きの NFS 共有でのみ作成できます。例:

# zfs create -o mountpoint=/pub tank/public
# zfs share -o share.nfs=on -o share.nfs.public=on tank/public%pubshare
# grep pub /etc/dfs/sharetab
/pub    pubshare        nfs     public,sec=sys,rw

NFS および SMB 共有プロパティーの詳細については、share_nfs(1M) および share_smb(1M) を参照してください。

ZFS 自動共有

自動共有が作成されると、ファイルシステム名から一意のリソース名が構築されます。構築される名前はファイルシステム名のコピーですが、リソース名では使用できない文字がファイルシステム名に含まれている場合、それらは下線 (_) で置き換えられます。たとえば、data/home/john のリソース名は data_home_john になります。

share.autoname プロパティー名を設定すると、自動共有の作成時にファイルシステム名を特定の名前で置き換えることができます。この特定の名前は、継承の際に先頭部分のファイルシステム名を置き換えるためにも使用されます。例:

# zfs create -o share.smb=on -o share.autoname=john data/home/john
# zfs create data/home/john/backups
# grep john /etc/dfs/sharetab
/data/home/john john    smb     
/data/home/john/backups john_backups    smb

まだ共有されていないファイルシステムでレガシー share コマンドまたは zfs set share コマンドを使用すると、その share.auto 値は自動的に off に設定されます。レガシーコマンドは常に名前付き共有を作成します。この特別な規則によって、自動共有が作成中の名前付き共有を妨害するのを防ぐことができます。

ZFS 共有情報を表示する

ファイル共有プロパティーの値を表示するには、zfs get コマンドを使用します。次の例は、単一ファイルシステムの share.nfs プロパティーを表示する方法を示しています。

# zfs get share.nfs tank/sales
NAME        PROPERTY   VALUE  SOURCE
tank/sales  share.nfs  on     local

次の例は、子孫ファイルシステムの share.nfs プロパティーを表示する方法を示しています。

# zfs get -r share.nfs tank/sales
NAME             PROPERTY   VALUE  SOURCE
tank/sales       share.nfs  on     local
tank/sales%      share.nfs  on     inherited from tank/sales
tank/sales/log   share.nfs  on     inherited from tank/sales
tank/sales/log%  share.nfs  on     inherited from tank/sales

zfs get all コマンド構文では、共有プロパティーの拡張情報は利用できません。

NFS または SMB 共有に関する詳細を表示するには、次の構文を使用します。

# zfs get share.nfs.all tank/sales
NAME        PROPERTY             VALUE  SOURCE
tank/sales  share.nfs.aclok      off    default
tank/sales  share.nfs.anon              default
tank/sales  share.nfs.charset.*  ...    default
tank/sales  share.nfs.cksum             default
tank/sales  share.nfs.index             default
tank/sales  share.nfs.log               default
tank/sales  share.nfs.noaclfab   off    default
tank/sales  share.nfs.nosub      off    default
tank/sales  share.nfs.nosuid     off    default
tank/sales  share.nfs.public     -      -
tank/sales  share.nfs.sec               default
tank/sales  share.nfs.sec.*      ...    default

共有プロパティーの数が多いため、デフォルト以外の値でプロパティーを表示することを検討してください。例:

# zfs get -e -s local,received,inherited share.all tank/home
NAME       PROPERTY           VALUE  SOURCE
tank/home  share.auto         off    local
tank/home  share.nfs          on     local
tank/home  share.nfs.anon     99     local
tank/home  share.protocols    nfs    local
tank/home  share.smb.guestok  on     inherited from tank

ZFS 共有プロパティー値の変更

共有プロパティー値を変更するには、ファイルシステム共有で新規または変更されたプロパティーを指定します。たとえば、ファイルシステムの作成時に読み取り専用プロパティーを設定した場合、そのプロパティーを off に設定できます。

# zfs create -o share.nfs.ro=\* tank/data
# zfs get share.nfs.ro tank/data
NAME       PROPERTY              VALUE  SOURCE
tank/data  share.nfs.sec.sys.ro  on     local
# zfs set share.nfs.ro=none tank/data
# zfs get share.nfs.ro tank/data
NAME       PROPERTY              VALUE  SOURCE
tank/data  share.nfs.sec.sys.ro  off    local

SMB 共有を作成した場合は、NFS 共有プロトコルを追加することもできます。例:

# zfs set share.smb=on tank/multifs
# zfs set share.nfs=on tank/multifs
# grep multifs /etc/dfs/sharetab
/tank/multifs   tank_multifs    nfs     sec=sys,rw      
/tank/multifs   tank_multifs    smb     -       

SMB プロトコルを削除します。

# zfs set share.smb=off tank/multifs
# grep multifs /etc/dfs/sharetab
/tank/multifs   tank_multifs    nfs     sec=sys,rw

名前付き共有の名前を変更できます。例:

# zfs share -o share.smb=on tank/home/abc%abcshare
# grep abc /etc/dfs/sharetab
/tank/home/abc  abcshare        smb     -   
# zfs rename tank/home/abc%abcshare tank/home/abc%a1share
# grep abc /etc/dfs/sharetab
/tank/home/abc  a1share        smb     -   

ZFS 共有の公開と非公開

名前付き共有を破棄しないで一時的に共有解除するには、zfs unshare コマンドを使用します。例:

# zfs unshare tank/home/abc%a1share
# grep abc /etc/dfs/sharetab
#
# zfs share tank/home/abc%a1share
# grep abc /etc/dfs/sharetab
/tank/home/abc  a1share smb     -

zfs unshare コマンドを発行すると、すべてのファイルシステム共有が共有解除されます。これらの共有は、そのファイルシステムに対して zfs share コマンドを発行するか、そのファイルシステムに対して share.nfs または share.smb プロパティーを設定するまで共有解除のままです。

zfs unshare コマンドを発行しても定義された共有は削除されず、次回そのファイルシステムに対して zfs share コマンドを発行するか、そのファイルシステムに対して share.nfs または share.smb プロパティーを設定したときに再度共有されます。

ZFS 共有を削除する

ファイルシステム共有を共有解除するには、share.nfs または share.smb プロパティーを off に設定します。例:

# zfs set share.nfs=off tank/multifs
# grep multifs /etc/dfs/sharetab
# 

名前付き共有を完全に削除するには、zfs destroy コマンドを使用します。例:

# zfs destroy tank/home/abc%a1share

非大域ゾーン内の ZFS ファイル共有

Oracle Solaris 11 以降、Oracle Solaris の非大域ゾーン内で NFS 共有を作成して公開できます。

たとえば、/export/home/data および /export/home/data1 ファイルシステムは、zfszone で使用できます。

zfszone# share -F nfs /export/home/data
zfszone#  cat /etc/dfs/sharetab
zfszone# zfs set share.nfs=on tank/zones/export/home/data1
zfszone# cat /etc/dfs/sharetab

ZFS 共有のマイグレーション/移行に関する問題

このセクションでは移行に関する問題を説明します。

ZFS ファイルシステムの共有の問題のトラブルシューティング

共有動作に関する次のシナリオと考慮事項を確認してください。

次の表は、既知の共有状態と、必要に応じてそれらの解決方法を示しています。

共有状態
説明
解決方法
INVALID
共有が内部で一貫性がないか、別の共有と競合しているために無効になっています。
次のコマンドを使用して、無効な共有を再度共有してみます。
# zfs share FS%share

このコマンドを使用すると、共有のどの側面が検証に失敗しているのかに関するエラーメッセージが表示されます。これを訂正してから、共有を再試行してください。

SHARED
共有は共有されています。
何も必要ありません。
UNSHARED
共有は有効ですが、共有が解除されています。
zfs share コマンドを使用して、個々の共有または親ファイルシステムのどちらかを再度共有します。
UNVALIDATED
共有はまだ検証されていません。その共有を含むファイルシステムが共有可能な状態でない可能性があります。たとえば、マウントされていなかったり、現在のゾーン以外のゾーンに委任されていたりします。あるいは、目的の共有を表す ZFS プロパティーが作成されてはいますが、まだ有効な共有として検証されていません。
zfs share コマンドを使用して、個々の共有または親ファイルシステムを再度共有します。ファイルシステムそのものが共有可能である場合、再共有の試みは共有に成功 (状態が shared に遷移) するか、共有に失敗 (状態が invalid に遷移) するかのどちらかになります。あるいは、share -A コマンドを使用して、マウント済みのすべてのファイルシステム内のすべての共有を一覧表示することもできます。これにより、マウント済みのファイルシステム内のすべての共有が unshared (有効だがまだ共有されていない) と invalid のどちらかとして解決されます。