JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris ZFS 管理ガイド     Oracle Solaris 10 8/11 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

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

2.  Oracle Solaris ZFS 入門

3.  Oracle Solaris ZFS ファイルシステムと従来のファイルシステムの相違点

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

5.  Oracle Solaris ZFS ルートファイルシステムのインストールとブート

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

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

ZFS スナップショットの概要

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

ZFS スナップショットの保持

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

ZFS スナップショットを表示してアクセスする

ZFS スナップショットのディスク領域の計上

ZFS スナップショットにロールバックする

ZFS スナップショットの相違点の識別 (zfs diff)

ZFS クローンの概要

ZFS クローンを作成する

ZFS クローンを破棄する

ZFS ファイルシステムを ZFS クローンで置き換える

ZFS データを送信および受信する

ほかのバックアップ製品を使用して ZFS データを保存する

ZFS スナップショットを送信する

ZFS スナップショットを受信する

ZFS スナップショットストリームに異なるプロパティー値を適用する

複雑な ZFS スナップショットストリームを送信および受信する

ZFS データのリモート複製

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

9.  Oracle Solaris ZFS 委任管理

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

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

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

索引

ZFS スナップショットの概要

スナップショット」とは、ファイルシステムまたはボリュームの読み取り専用コピーのことです。スナップショットはほとんど瞬間的に作成することができ、最初はプール内で追加のディスク領域を消費しません。ただし、アクティブなデータセット内のデータが変化していくにつれて、ディスク領域が消費されるようになります。古いデータを引き続き参照し、そのディスク領域を解放しないためです。

ZFS スナップショットには次の特長があります。

ボリュームのスナップショットに直接アクセスすることはできませんが、それらの複製、バックアップ、ロールバックなどを行うことはできます。ZFS スナップショットのバックアップの詳細については、「ZFS データを送信および受信する」を参照してください。

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

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

filesystem@snapname
volume@snapname

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

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

# zfs snapshot tank/home/matt@friday

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

# zfs snapshot -r tank/home@snap1
# zfs list -t snapshot -r tank/home
zfs list -t snapshot -r tank/home
NAME                   USED  AVAIL  REFER  MOUNTPOINT
tank/home@snap1           0      -    34K  -
tank/home/mark@snap1      0      -  2.00G  -
tank/home/matt@snap1      0      -  1.00G  -
tank/home/tom@snap1       0      -  2.00G  -

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

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

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

# zfs destroy tank/home/matt@friday

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

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

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

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

ZFS スナップショットの保持

異なる自動スナップショットポリシーを実装しており、送信側にもう存在しないという理由で古いスナップショットが zfs receive によって意図せず破棄されてしまう場合、スナップショット保持機能の使用を検討することができます。

スナップショットを「保持」すると、そのスナップショットは破棄されなくなります。また、この機能と 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 May  6 06:34:03 2011 
# zfs holds -r tank/home@now
NAME                 TAG   TIMESTAMP                 
tank/home/cindy@now  keep  Fri May  6 06:34:03 2011  
tank/home/mark@now   keep  Fri May  6 06:34:03 2011  
tank/home/matt@now   keep  Fri May  6 06:34:03 2011  
tank/home/tom@now    keep  Fri May  6 06:34:03 2011  
tank/home@now        keep  Fri May  6 06:34:03 2011 

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

# zfs release -r keep tank/home@now

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

# zfs destroy -r tank/home@now

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

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  -

ZFS スナップショットを表示してアクセスする

listsnapshots プールプロパティーを使用すれば、zfs list 出力でのスナップショット表示を有効または無効にすることができます。このプロパティーは、デフォルトで有効になっています。

このプロパティーを無効にした場合、zfs list -t snapshot コマンドを使用すればスナップショット情報を表示できます。あるいは、listsnapshots プールプロパティーを有効にします。次に例を示します。

# zpool get listsnapshots tank
NAME  PROPERTY       VALUE      SOURCE
tank  listsnapshots  on        default
# zpool set listsnapshots=off tank
# zpool get listsnapshots tank
NAME  PROPERTY       VALUE      SOURCE
tank  listsnapshots  off         local

ファイルシステムのスナップショットには、ルートの .zfs/snapshot ディレクトリからアクセスできます。たとえば、tank/home/ahrens/home/ahrens にマウントされている場合は、tank/home/ahrens@thursday スナップショットのデータには、/home/ahrens/.zfs/snapshot/thursday ディレクトリからアクセスできます。

# ls /tank/home/matt/.zfs/snapshot
tuesday wednesday thursday

スナップショットの一覧は次の方法で表示できます。

# zfs list -t snapshot -r tank/home
NAME                       USED  AVAIL  REFER  MOUNTPOINT
tank/home/cindy@today         0      -  2.00G  -
tank/home/mark@today          0      -  2.00G  -
tank/home/matt@tuesday      20K      -  1.00G  -
tank/home/matt@wednesday    20K      -  1.00G  -
tank/home/matt@thursday       0      -  1.00G  -

特定のファイルシステムのために作成したスナップショットの一覧は、次の方法で表示できます。

# zfs list -r -t snapshot -o name,creation tank/home
NAME                      CREATION
tank/home/cindy@today     Fri May  6  6:32 2011
tank/home/mark@today      Fri May  6  6:22 2011
tank/home/matt@tuesday    Tue May  3  6:27 2011
tank/home/matt@wednesday  Wed May  4  6:28 2011
tank/home/matt@thursday   Thu May  5  6:28 2011

ZFS スナップショットのディスク領域の計上

スナップショットを作成したときは、そのディスク領域は最初はスナップショットとファイルシステムの間で共有されます。それまでに作成したスナップショットと領域が共有されることもあります。ファイルシステムが変化していくにつれて、それまで共有されていたディスク領域がスナップショット固有になり、スナップショットの used プロパティーに計上されます。また、スナップショットを削除すると、ほかのスナップショットに固有の (および使用される) ディスク容量を増やすことができます。

スナップショット領域の referenced プロパティーの値は、スナップショットを作成したときのファイルシステムのプロパティーと同じです。

used プロパティーの値がどのように消費されているかについて、さらに詳細な情報を確認することができます。新しい読み取り専用ファイルシステムプロパティーは、クローン、ファイルシステム、およびボリュームに関するディスク領域使用状況を示します。次に例を示します。

$ zfs list -o space -r rpool
NAME                       AVAIL   USED  USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
rpool                      59.1G  7.84G       21K    109K              0      7.84G
rpool@snap1                    -    21K         -       -              -          -
rpool/ROOT                 59.1G  4.78G         0     31K              0      4.78G
rpool/ROOT@snap1               -      0         -       -              -          -
rpool/ROOT/zfsBE           59.1G  4.78G     15.6M   4.76G              0          0
rpool/ROOT/zfsBE@snap1         -  15.6M         -       -              -          -
rpool/dump                 59.1G  1.00G       16K   1.00G              0          0
rpool/dump@snap1               -    16K         -       -              -          -
rpool/export               59.1G    99K       18K     32K              0        49K
rpool/export@snap1             -    18K         -       -              -          -
rpool/export/home          59.1G    49K       18K     31K              0          0
rpool/export/home@snap1        -    18K         -       -              -          -
rpool/swap                 61.2G  2.06G         0     16K          2.06G          0
rpool/swap@snap1               -      0         -       -              -          -

これらのプロパティーについては、表 6-1 を参照してください。

ZFS スナップショットにロールバックする

zfs rollback コマンドを使用すると、特定のスナップショットが作成された時点よりもあとにファイルシステムに対して行われたすべての変更を破棄できます。ファイルシステムは、そのスナップショットが作成されたときの状態に戻ります。デフォルトでは、このコマンドを使って、最新のスナップショット以外のスナップショットにロールバックすることはできません。

それより前のスナップショットにロールバックするには、中間にあるスナップショットをすべて破棄する必要があります。-r オプションを指定すれば、古いスナップショットを破棄できます。

中間にあるスナップショットのクローンが存在する場合は、-R オプションを指定してクローンも破棄する必要があります。


注 - ロールバックするファイルシステムが現在マウントされている場合は、そのマウントが解除されてから再度マウントされます。ファイルシステムのマウントを解除できない場合は、ロールバックに失敗します。必要に応じて -f オプションを指定すると、ファイルシステムのマウントが強制的に解除されます。


次の例では、tank/home/ahrens ファイルシステムが tuesday スナップショットにロールバックされます。

# zfs rollback tank/home/matt@tuesday
cannot rollback to 'tank/home/matt@tuesday': more recent snapshots exist
use '-r' to force deletion of the following snapshots:
tank/home/matt@wednesday
tank/home/matt@thursday
# zfs rollback -r tank/home/matt@tuesday

この例では、スナップショット wednesday および thursday が破棄されます。これらよりも古いスナップショット tuesday にロールバックされるためです。

# zfs list -r -t snapshot -o name,creation tank/home/matt
NAME                    CREATION
tank/home/matt@tuesday  Tue May  3  6:27 2011

ZFS スナップショットの相違点の識別 (zfs diff)

zfs diff コマンドを使用して、ZFS スナップショットの相違点を判別できます。

たとえば、次の 2 つのスナップショットが作成されるものとします。

$ ls /tank/home/tim
fileA
$ zfs snapshot tank/home/tim@snap1
$ ls /tank/home/tim
fileA  fileB
$ zfs snapshot tank/home/tim@snap2

たとえば、2 つのスナップショットの相違点を識別するには、次のような構文を使用します。

$ zfs diff tank/home/tim@snap1 tank/home/timh@snap2
M       /tank/home/tim/
+       /tank/home/tim/fileB

出力で、M はディレクトリが変更されたことを示します。+ は、後者のスナップショットに fileB が存在していることを示します。

次の出力の R は、スナップショットのファイルの名前が変更されたことを示しています。

$ mv /tank/cindy/fileB /tank/cindy/fileC
$ zfs snapshot tank/cindy@snap2
$ zfs diff tank/cindy@snap1 tank/cindy@snap2
M       /tank/cindy/
R       /tank/cindy/fileB -> /tank/cindy/fileC

次の表は、zfs diff コマンドによって識別されるファイルまたはディレクトリの変更を要約したものです。

ファイルまたはディレクトリの変更
識別子
ファイルまたはディレクトリが変更されたかファイルまたはディレクトリのリンクが変更されました
M
ファイルまたはディレクトリは古いスナップショットに存在するが、最近のスナップショットには存在しません
ファイルまたはディレクトリは最近のスナップショットに存在するが、古いスナップショットには存在しません
+
ファイルまたはディレクトリの名前が変更されました
R

詳細は、zfs(1M) を参照してください。