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 send コマンドを実行すると、スナップショットのストリーム表現が作成され、標準出力に書き込まれます。デフォルトでは、完全なストリームが生成されます。この出力は、ファイルまたは別のシステムにリダイレクトできます。zfs receive コマンドを実行すると、ストリームに内容が指定されているスナップショットが作成され、標準入力に渡されます。ストリーム全体を受信する場合、新しいファイルシステムも作成されます。これらのコマンドを使えば、ZFS スナップショットデータを送信したり、ZFS スナップショットデータやファイルシステムを受信したりできます。次の節の例を参照してください。

ZFS データを保存するために、次のバックアップ方法が用意されています。

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

zfs send および zfs receive コマンド以外に、tar cpio コマンドなどのアーカイブユーティリティーを使用して、ZFS ファイルを保存することもできます。これらのユーティリティーは、ZFS ファイル属性と ACL を保存して復元します。tar コマンドと cpio コマンドの適切なオプションを確認してください。

ZFS およびサードパーティーバックアップ製品に関する問題の最新情報については、『Solaris 10 ご使用にあたって』または次のサイトの ZFS FAQ を参照してください。

http://hub.opensolaris.org/bin/view/Community+Group+zfs/faq/#backupsoftware

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

zfs send コマンドを使用して、スナップショットストリームのコピーを送信し、バックアップデータの格納に使用する別のプール (同じシステム上または別のシステム上にある) でそのスナップショットストリームを受信することができます。たとえば、別のプール上のスナップショットストリームを同じシステムに送信するには、次のような構文を使用します。

# zfs send tank/dana@snap1 | zfs recv spool/ds01

zfs receive コマンドの別名として、zfs recv を 使用できます。

スナップショットストリームを別のシステムに送信する場合は、zfs send の出力を ssh コマンドにパイプします。次に例を示します。

host1# zfs send tank/dana@snap1 | ssh host2 zfs recv newtank/dana

完全なストリームを送信するときは、対象のファイルシステムが存在してはいけません。

zfs send -i オプションを使用すれば、増分データを送信できます。次に例を示します。

host1# zfs send -i tank/dana@snap1 tank/dana@snap2 | ssh host2 zfs recv newtank/dana

最初の引数 (snap1) には、以前のスナップショットを指定します。2 番目の引数 (snap2) には、それよりあとのスナップショットを指定します。この場合は、増分データの受信を正常に行うために newtank/dana ファイルシステムがあらかじめ存在している必要があります。

増分ソース snap1 は、スナップショット名の最後の構成要素だけで指定できます。このショートカットは、snap1 には @ 記号のあとの名前を指定するだけでよいことを意味し、この場合 snap1 は snap2 と同じファイルシステムから作成されたものと見なされます。次に例を示します。

host1# zfs send -i snap1 tank/dana@snap2 > ssh host2 zfs recv newtank/dana

このショートカット構文は、前の例の増分構文と同等です。

異なるファイルシステム snapshot1 から増分ストリームを生成しようとすると、次のメッセージが表示されます。

cannot send 'pool/fs@name': not an earlier snapshot from the same fs

多数のコピーを保管する必要がある場合は、gzip コマンドを使って ZFS スナップショットのストリーム表現を圧縮することを検討してください。次に例を示します。

# zfs send pool/fs@snap | gzip > backupfile.gz

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

ファイルシステムのスナップショットを受信するときは、次の重要な点に留意してください。

次に例を示します。

# zfs send tank/gozer@0830 > /bkups/gozer.083006
# zfs receive tank/gozer2@today < /bkups/gozer.083006
# zfs rename tank/gozer tank/gozer.old
# zfs rename tank/gozer2 tank/gozer

対象のファイルシステムに変更を加え、新たに増分スナップショットを送信する場合は、まず受信側のファイルシステムをロールバックする必要があります。

次のような例を考えます。まず、次のようにファイルシステムに変更を加えます。

host2# rm newtank/dana/file.1

次に、tank/dana@snap3 の増分を送信します。ただし、新しい増分スナップショットを受信するには、まず受信側のファイルシステムをロールバックする必要があります。または、-F オプションを使用すれば、ロールバック手順を実行する必要がなくなります。次に例を示します。

host1# zfs send -i tank/dana@snap2 tank/dana@snap3 | ssh host2 zfs recv -F newtank/dana

増分スナップショットを受信するときは、対象のファイルシステムが存在している必要があります。

ファイルシステムに変更を加えたあとで、新しい増分スナップショットを受信するために受信側のファイルシステムのロールバックを行わない場合、または -F オプションを使用しない場合は、次のようなメッセージが表示されます。

host1# zfs send -i tank/dana@snap4 tank/dana@snap5 | ssh host2 zfs recv newtank/dana
cannot receive: destination has been modified since most recent snapshot

-F オプションが正常に実行される前に、次の検査が行われます。

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

ZFS スナップショットストリームを特定のファイルシステムプロパティー値で送信することができますが、スナップショットストリームを受信したときに異なるローカルプロパティー値を指定することができます。または、元のファイルシステムを再作成するために、スナップショットストリームを受信したときに元のプロパティー値を使用するように指定することもできます。さらに、スナップショットストリームを受信したときにファイルシステムプロパティーを無効にすることもできます。

場合によっては、送信ストリーム内のファイルシステムプロパティーが受信側のファイルシステムに該当しなかったり、mountpoint プロパティー値などのローカルファイルシステムプロパティーが復元を妨害したりすることがあります。

たとえば、tank/data というファイルシステムの compression プロパティーが無効になっているとします。tank/data ファイルシステムのスナップショットが、プロパティー (-p オプション) を指定してバックアッププールに送信され、compression プロパティーが有効な状態で受信されます。

# zfs get compression tank/data
NAME       PROPERTY     VALUE     SOURCE
tank/data  compression  off       default
# zfs snapshot tank/data@snap1
# zfs send -p tank/data@snap1 | zfs recv -o compression=on -d bpool
# zfs get -o all compression bpool/data
NAME        PROPERTY     VALUE     RECEIVED  SOURCE
bpool/data  compression  on        off       local

この例では、スナップショットが bpool に受信されたとき、compression プロパティーは有効になります。したがって、bpool/data では、compression 値は on です。

このスナップショットストリームが復元目的で restorepool という新規プールに送信される場合、元のスナップショットプロパティーをすべて保持することが必要なことがあります。この場合、元のスナップショットプロパティーを復元するために zfs send -b コマンドを使用します。例:

# zfs send -b bpool/data@snap1 | zfs recv -d restorepool
# zfs get -o all compression restorepool/data
NAME              PROPERTY     VALUE     RECEIVED  SOURCE
restorepool/data  compression  off       off       received 

この例では、compression 値は off で、これは元の tank/data ファイルシステムからのスナップショット圧縮値を表します。

スナップショットストリーム内にローカルファイルシステムのプロパティー値があって、スナップショットストリームを受信したときにこのプロパティーを無効にする場合、zfs receive -x コマンドを使用します。たとえば次のコマンドでは、すべてのファイルシステムプロパティーを予約した状態で home ディレクトリファイルシステムの再帰的なスナップショットストリームをバックアッププールに送信しますが、割り当て制限プロパティー値は設定されません。

# zfs send -R tank/home@snap1 | zfs recv -x quota bpool/home
# zfs get -r quota bpool/home
NAME                   PROPERTY  VALUE  SOURCE
bpool/home             quota     none   local
bpool/home@snap1       quota     -      -
bpool/home/lori        quota     none   default
bpool/home/lori@snap1  quota     -      -
bpool/home/mark        quota     none   default
bpool/home/mark@snap1  quota     -      -

再帰的なスナップショットが -x オプションで受信されなかった場合、割り当て制限プロパティーは受信側ファイルシステム内で設定されます。

# zfs send -R tank/home@snap1 | zfs recv bpool/home
# zfs get -r quota bpool/home
NAME                   PROPERTY  VALUE  SOURCE
bpool/home             quota     none   received
bpool/home@snap1       quota     -      -
bpool/home/lori        quota     10G    received
bpool/home/lori@snap1  quota     -      -
bpool/home/mark        quota     10G    received
bpool/home/mark@snap1  quota     -      -

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

この節では、zfs send -I および -R オプションを使用して、より複雑なスナップショットストリームを送受信する方法について説明します。

複雑な ZFS スナップショットストリームを送受信するときは、次の点に留意してください。

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

zfs send -I オプションを使用すると、一連の増分スナップショットを結合して 1 つのスナップショットを作成できます。次に例を示します。

# zfs send -I pool/fs@snapA pool/fs@snapD > /snaps/fs@all-I

次に、snapBsnapC、および snapD を削除します。

# zfs destroy pool/fs@snapB
# zfs destroy pool/fs@snapC
# zfs destroy pool/fs@snapD

結合されたスナップショットを受信するには、次のコマンドを使用します。

# zfs receive -d -F pool/fs < /snaps/fs@all-I
# zfs list
NAME                      USED  AVAIL  REFER  MOUNTPOINT
pool                      428K  16.5G    20K  /pool
pool/fs                    71K  16.5G    21K  /pool/fs
pool/fs@snapA              16K      -  18.5K  -
pool/fs@snapB              17K      -    20K  -
pool/fs@snapC              17K      -  20.5K  -
pool/fs@snapD                0      -    21K  -

zfs send -I コマンドを使用すると、スナップショットとクローンスナップショットを結合して、結合されたデータセットを作成することもできます。次に例を示します。

# zfs create pool/fs
# zfs snapshot pool/fs@snap1
# zfs clone pool/fs@snap1 pool/clone
# zfs snapshot pool/clone@snapA
# zfs send -I pool/fs@snap1 pool/clone@snapA > /snaps/fsclonesnap-I
# zfs destroy pool/clone@snapA
# zfs destroy pool/clone
# zfs receive -F pool/clone < /snaps/fsclonesnap-I

zfs send -R コマンドを使用すると、ZFS ファイルシステムおよび指定されたスナップショットまでのすべての子孫ファイルシステムを複製できます。このストリームの受信時には、すべてのプロパティー、スナップショット、子孫ファイルシステム、およびクローンが維持されます。

次の例では、ユーザーのファイルシステムのスナップショットが作成されます。すべてのユーザースナップショットから 1 つの複製ストリームが作成されます。次に、元のファイルシステムおよびスナップショットが破棄されてから回復されます。

# zfs snapshot -r users@today
# zfs list
NAME                USED  AVAIL  REFER  MOUNTPOINT
users               187K  33.2G    22K  /users
users@today            0      -    22K  -
users/user1          18K  33.2G    18K  /users/user1
users/user1@today      0      -    18K  -
users/user2          18K  33.2G    18K  /users/user2
users/user2@today      0      -    18K  -
users/user3          18K  33.2G    18K  /users/user3
users/user3@today      0      -    18K  -
# zfs send -R users@today > /snaps/users-R
# zfs destroy -r users
# zfs receive -F -d users < /snaps/users-R
# zfs list
NAME                USED  AVAIL  REFER  MOUNTPOINT
users               196K  33.2G    22K  /users
users@today            0      -    22K  -
users/user1          18K  33.2G    18K  /users/user1
users/user1@today      0      -    18K  -
users/user2          18K  33.2G    18K  /users/user2
users/user2@today      0      -    18K  -
users/user3          18K  33.2G    18K  /users/user3
users/user3@today      0      -    18K  -

次の例では、zfs send -R コマンドを使用して、users データセットとその子孫を複製し、複製したストリームを別のプール users2 に送信します。

# zfs create users2 mirror c0t1d0 c1t1d0
# zfs receive -F -d users2 < /snaps/users-R
# zfs list
NAME                 USED  AVAIL  REFER  MOUNTPOINT
users                224K  33.2G    22K  /users
users@today             0      -    22K  -
users/user1           33K  33.2G    18K  /users/user1
users/user1@today     15K      -    18K  -
users/user2           18K  33.2G    18K  /users/user2
users/user2@today       0      -    18K  -
users/user3           18K  33.2G    18K  /users/user3
users/user3@today       0      -    18K  -
users2               188K  16.5G    22K  /users2
users2@today            0      -    22K  -
users2/user1          18K  16.5G    18K  /users2/user1
users2/user1@today      0      -    18K  -
users2/user2          18K  16.5G    18K  /users2/user2
users2/user2@today      0      -    18K  -
users2/user3          18K  16.5G    18K  /users2/user3
users2/user3@today      0      -    18K  -

ZFS データのリモート複製

zfs send および zfs recv コマンドを使用して、あるシステムのスナップショットのストリーム表現を別のシステムに離れた場所からコピーできます。次に例を示します。

# zfs send tank/cindy@today | ssh newsys zfs recv sandbox/restfs@today

このコマンドは、tank/cindy@today スナップショットのデータを送信し、そのデータを sandbox/restfs ファイルシステムに受信します。このコマンドは、restfs@today スナップショットを newsys システム上にも作成します。この例のユーザーは、リモートシステム上で ssh を使用するように設定されています。