Oracle® Solaris 11.2 での ZFS ファイルシステムの管理

印刷ビューの終了

更新: 2014 年 12 月
 
 

ZFS スナップショットを作成および破棄する

スナップショットは、zfs snapshot コマンドまたは zfs snap コマンドを使って作成します。引数として、作成するスナップショットの名前だけを指定できます。スナップショット名は次のように指定します。

filesystem@snapname
volume@snapname

スナップショット名は、ZFS コンポーネントに名前を付けるときの規則の命名要件に従って付ける必要があります。

次の例では、tank/home/cindyfriday という名前のスナップショットが作成されます。

# zfs snapshot tank/home/cindy@friday

すべての子孫ファイルシステムのスナップショットを作成するには、–r オプションを使用します。例:

# zfs snapshot -r tank/home@snap1
# zfs list -t snapshot -r tank/home
NAME                   USED  AVAIL  REFER  MOUNTPOINT
tank/home@snap1           0      -  2.11G  -
tank/home/cindy@snap1     0      -   115M  -
tank/home/lori@snap1      0      -  2.00G  -
tank/home/mark@snap1      0      -  2.00G  -
tank/home/tim@snap1       0      -  57.3M  -

スナップショットには、変更できるプロパティーはありません。また、データセットのプロパティーをスナップショットに適用することもできません。例:

# zfs set compression=on tank/home/cindy@friday
cannot set property for 'tank/home/cindy@friday':
this property can not be modified for snapshots

スナップショットを破棄するには、zfs destroy コマンドを使用します。例:

# zfs destroy tank/home/cindy@friday

データセットのスナップショットが存在する場合、そのデータセットを破棄することはできません。例:

# zfs destroy tank/home/cindy
cannot destroy 'tank/home/cindy': filesystem has children
use '-r' to destroy the following datasets:
tank/home/cindy@tuesday
tank/home/cindy@wednesday
tank/home/cindy@thursday

さらに、クローンがスナップショットから作成されている場合は、それらをスナップショットを破棄する前に破棄する必要があります。

destroy サブコマンドの詳細については、ZFS ファイルシステムを破棄するを参照してください。

ZFS スナップショットを保持する

さまざまな自動スナップショットポリシーまたはデータ保持ポリシーは、より古いスナップショットが不注意によって破棄されることを意味する場合があります。削除されたスナップショットが進行中の zfs 送受信操作の一部である場合、操作は失敗する可能性があります。このシナリオを回避するには、スナップショットの保留を検討してください。

スナップショットを「保持」すると、そのスナップショットは破棄されなくなります。また、この機能と zfs destroy –d コマンドを使用することにより、最後のクローンの消去を保留しながら、クローンが存在するスナップショットを削除できます。個々のスナップショットには、初期値が 0 のユーザー参照カウントが関連付けられます。このカウントは、スナップショットの保持を設定するたびに 1 増加し、保持を解除するたびに 1 減少します。

以前の Oracle Solaris リリースでは、スナップショットを破棄するには、スナップショットにクローンが存在しない状態で zfs destroy コマンドを使用する必要がありました。この Oracle Solaris リリースでは、さらにスナップショットのユーザー参照カウントが 0 である必要があります。

1 つのスナップショットまたはスナップショットの集合を保持できます。たとえば次の構文は、保持タグ keeptank/home/cindy/snap@1 に付与します。

# zfs hold keep tank/home/cindy@snap1

–r オプションを使用すると、すべての子孫ファイルシステムのスナップショットを再帰的に保持できます。例:

# zfs snapshot -r tank/home@now
# zfs hold -r keep tank/home@now

この構文は、単一の参照 keep を特定のスナップショットまたはスナップショットの集合に追加します。個々のスナップショットには独自のタグ名前空間があり、その空間内で保持タグが一意である必要があります。スナップショットに保持が設定されている場合、保持されたそのスナップショットを zfs destroy コマンドを使って破棄しようとしても失敗します。例:

# zfs destroy tank/home/cindy@snap1
cannot destroy 'tank/home/cindy@snap1': dataset is busy

保持されたスナップショットを破棄するには、–d オプションを使用します。例:

# zfs destroy -d tank/home/cindy@snap1

保持されたスナップショットの一覧を表示するには、zfs holds コマンドを使用します。例:

# zfs holds tank/home@now
NAME           TAG   TIMESTAMP
tank/home@now  keep  Fri Aug  3 15:15:53 2012  
# zfs holds -r tank/home@now
NAME                 TAG   TIMESTAMP
tank/home/cindy@now  keep  Fri Aug  3 15:15:53 2012
tank/home/lori@now   keep  Fri Aug  3 15:15:53 2012
tank/home/mark@now   keep  Fri Aug  3 15:15:53 2012
tank/home/tim@now    keep  Fri Aug  3 15:15:53 2012
tank/home@now        keep  Fri Aug  3 15:15:53 2012  

zfs release コマンドを使用すると、保持されたスナップショットまたはスナップショットの集合を解放することができます。例:

# zfs release -r keep tank/home@now

スナップショットが解放されたら、zfs destroy コマンドを使用してスナップショットを破棄できます。例:

# zfs destroy -r tank/home@now

スナップショットの保持情報を示す 2 つの新しいプロパティーがあります。

  • zfs destroy –d コマンドを使ってスナップショットの遅延破棄が予約されている場合、defer_destroy プロパティーがオンになります。それ以外の場合、このプロパティーはオフです。

  • userrefs プロパティーの値は、このスナップショットに設定されている保持の数に設定されます。この数のことをユーザー参照カウントとも呼びます。

ZFS スナップショットの名前を変更する

スナップショットの名前を変更することはできますが、名前を変更するときはそれらが作成された同じプールとデータセットの中で行う必要があります。例:

# zfs rename tank/home/cindy@snap1 tank/home/cindy@today

また、次のショートカット構文は前の構文と同等です。

# zfs rename tank/home/cindy@snap1 today

次のようなスナップショットの名前変更操作はサポートされていません。ターゲットのプールとファイルシステムの名前が、スナップショットの作成されたプールとファイルシステムと異なるためです。

# zfs rename tank/home/cindy@today pool/home/cindy@saturday
cannot rename to 'pool/home/cindy@today': snapshots must be part of same
dataset

zfs rename –r コマンドを使用すると、スナップショットの名前を再帰的に変更することができます。例:

# zfs list -t snapshot -r users/home
NAME                        USED  AVAIL  REFER  MOUNTPOINT
users/home@now             23.5K      -  35.5K  -
users/home@yesterday           0      -    38K  -
users/home/lori@yesterday      0      -  2.00G  -
users/home/mark@yesterday      0      -  1.00G  -
users/home/neil@yesterday      0      -  2.00G  -
# zfs rename -r users/home@yesterday @2daysago
# zfs list -t snapshot -r users/home
NAME                       USED  AVAIL  REFER  MOUNTPOINT
users/home@now            23.5K      -  35.5K  -
users/home@2daysago           0      -    38K  -
users/home/lori@2daysago      0      -  2.00G  -
users/home/mark@2daysago      0      -  1.00G  -
users/home/neil@2daysago      0      -  2.00G  -