前のチュートリアルでは、zpoolとZFSファイルシステムまたはデータセットを作成する方法を学びました。このチュートリアルでは、ZFSスナップショット、クローン、およびレプリケーションを操作する方法を段階的に説明します。スナップショット、クローン。およびレプリケーションは、ZFSファイルシステムの最も強力な機能です。
ZFSスナップショット-概要
スナップショットはZFSの最も強力な機能の1つであり、スナップショットは、ZFSプール内の余分なスペースを消費しないファイルシステムまたはボリュームの読み取り専用のポイントインタイムコピーを提供します。スナップショットは、ブロック参照が変更されたときにスペースのみを使用します。スナップショットは、現在のデータセットと以前のバージョンの違いのみを記録することにより、ディスク容量を節約します。
スナップショットの一般的な使用例は、ソフトウェアのインストールやシステムのアップグレードなどの危険なアクションが実行されたときに、ファイルシステムの現在の状態をすばやくバックアップする方法です。
ZFSスナップショットの作成と破棄
ボリュームのスナップショットに直接アクセスすることはできませんが、クローンを作成したり、バックアップしたり、ロールバックしたりすることはできます。 ZFSスナップショットの作成と破棄は非常に簡単です。そのためにzfssnapshotおよびzfsdestroyコマンドを使用できます。
datapoolという名前のプールを作成します。
#zpool create datapool mirror / dev / sdb / dev / sdc
#zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
datapool 1.98G 65K 1.98G 0% 0%1.00xオンライン-
これで、datapoolというプールができました。次に、スナップショット機能をシミュレートするために1つのZFSファイルシステムを作成する必要があります。
#zfs create datapool / docs -o mountpoint =/ docs
#zfs list -r datapool
NAME USED AVAIL REFER MOUNTPOINT
datapool 93.5K 1.92G 19K / datapool
datapool / docs 19K 1.92G 19K / docs
ファイルシステムのスナップショットを作成するには、プールとスナップショット名を指定してzfssnapshotコマンドを使用できます。スナップショットを再帰的に作成する場合は、-rオプションを使用できます。スナップショット名は、次の命名要件を満たす必要があります。
[メール保護][メール保護]
#zfsスナップショットデータプール/[メール保護]
#zfsリスト-tスナップショット
名前USEDAVAIL REFER MOUNTPOINT
datapool/[メール保護]0>-19.5Kdatapool/docsのスナップショットが作成されます。
スナップショットを破棄するには、通常どおりzfsdestroyコマンドを使用できます。
#zfs destroy datapool / [email protected]
#zfs list-tsnapshot
利用可能なデータセットがありませんスナップショットのロールバック シミュレーションでは、/docsディレクトリにテストファイルを作成する必要があります。
#echo"バージョン1">/docs/data.txt
#cat/docs/data.txt
バージョン1#zfsスナップショットデータプール/[メール保護]
#zfsリスト-tスナップショット
名前USEDAVAIL REFER MOUNTPOINT
datapool/[メール保護]9K-19.5Kここで、/ docs / data.txt
のコンテンツを変更します#echo"バージョン2">/docs/data.txt
#cat/docs/data.txt
バージョン2古いスナップショットに完全にロールバックできます。これにより、スナップショットが作成された時点のコピーが得られます。
#zfs list -tsnapshot
NAME USED AVAIL REFER MOUNTPOINT
datapool / [email protected] 9.50K-19.5K-
#zfs rollback datapool / [email protected]
#cat/docs/data.txt
バージョン1ご覧のとおり、data.txtのコンテンツは以前のコンテンツに戻っています。
スナップショットの名前を変更する場合は、zfsrenameコマンドを使用できます。
#zfs rename datapool / [email protected] datapool / [email protected]
#zfs list -tsnapshot
NAME USED AVAIL REFER MOUNTPOINT
datapool / [email protected] -50K 19.5K-注:このデータセットのスナップショットが存在する場合、データセットを破棄することはできませんが、-rオプションを使用してそれをオーバーライドできます。
#zfs destroy datapool / docs
can not destroy'datapool / docs':filesystem has children
use'-r' to destroy the following datasets:
datapool / [email protected]#zfs destroy -r datapool / docs
#zfs list-tsnapshot
利用可能なデータセットがありません
ZFSクローンの概要
クローンは、書き込み可能なボリュームまたはファイルシステムであり、その初期の内容は、クローンが作成されたデータセットと同じです。
ZFSクローンの作成と破棄
クローンはスナップショットからのみ作成でき、このスナップショットに基づくクローンを削除するまでスナップショットを削除することはできません。クローンを作成するには、zfscloneコマンドを使用します。
#zfs create datapool / docs -o mountpoint =/ docs
#zfs list -r datapool
NAME USED AVAIL REFER MOUNTPOINT
datapool 93.5K 1.92G 19K / datapool
datapool / docs 19K 1.92G 19K / docs#mkdir / docs / folder {1..5}
#ls / docs /
folder1 folder2 folder3 folder4 folder5#zfsスナップショットデータプール/[メール保護]次に、スナップショットデータプール/[メール保護]からクローンを作成します。
#zfsリスト-tスナップショット
名前USEDAVAIL REFER MOUNTPOINT
datapool/[メール保護]0-19K-#zfs clone datapool / [email protected] datapool / pict
#zfs list
NAME USED AVAIL REFER MOUNTPOINT
datapool 166K 1.92G 19K / datapool
datapool / docs 1.92G 19K / docs
datapool / pict 1K 1.92G 19K / datapool / pictクローン作成プロセスが終了し、スナップショットデータプール/[メール保護]が/datapool/pictにクローンされました。 / datapool / pictディレクトリのコンテンツを確認するとき、コンテンツは/ datapool/docsと同じである必要があります。
#ls / datapool / pict
folder1 folder2 folder3 folder4 folder5スナップショットのクローンを作成した後、データセットを削除するまでスナップショットを削除できません。
#zfs destroy datapool / [email protected]
can not destroy'datapool / [email protected]':スナップショットには依存クローンがあります
'-R'を使用して次のデータセットを破棄します:
datapool / pict#zfs destroy datapool / pict最後に、スナップショットを破棄できます。
#zfs destroy datapool / [email protected]
#zfs list-tsnapshot
利用可能なデータセットがありません
ZFSレプリケーションの概要
このZFSレプリケーションの基本はスナップショットであり、いつでもスナップショットを作成でき、必要な数のスナップショットを作成できます。スナップショットを継続的に作成、転送、および復元することにより、1つ以上のマシン間の同期を提供できます。 ZFSは、データのストリーム表現を標準出力に送信できる組み込みのシリアル化機能を提供します。
ZFSレプリケーションを構成する
このセクションでは、データセットをデータプールからバックアッププールに複製する方法を紹介しますが、ローカルシステムに接続された別のプールにデータを保存するだけでなく、ネットワークを介して別のシステムにデータを送信することもできます。データの複製に使用されるコマンドは、zfssendとzfsreceiveです。
backuppoolという別のプールを作成します。
#zpool create backuppool mirror sde sdf
#zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
backuppool 1.98G 50K 1.98G 0%0
datapool 1.98G 568K 1.98G-0%0%1.00xオンライン-プールのステータスを確認します:
#zpool status
pool:datapool
state:ONLINE
scan:none requested
config:
STATE READ WRITE CKSUM
データプールONLINE 0 0 0
鏡面0 ONLINE 0 0 0
SDB ONLINE 0 0 0
SDC ONLINE 0 0 0
エラー:知られていないデータエラープール:バックアッププール
状態:オンライン
スキャン:要求なし
構成:
名前状態読み取り/書き込みCKSUM
バックアッププールオンライン<00 0 mirror-0 ONLINE 0 0
sde ONLINE 0 0
0
エラー複製するデータセットを作成します。
#zfsスナップショットデータプール/[メール保護]
#zfsリスト-tスナップショット
名前USEDAVAIL REFER MOUNTPOINT
datapool/[メール保護]0/>-19K-
folder1 folder2 folder3 folder4 folder5レプリケーションを実行する時が来ました。
#zfs send datapool / [email protected] | zfs receive backuppool / backup
#zfs list
NAME USED AVAIL REFER MOUNTPOINT
backuppool 83K 1.92G 19K / backuppool
backuppool / backup
backuppool / backup 19K 1.92> datapool 527K 1.92G 19K / datapool
datapool / docs 19K 1.92G 19K / docs#ls / backuppool / backup
folder1 folder2 folder3 folder4 folder5データセットデータプール/[メール保護]は、backuppool/backupに正常に複製されました。
データセットを別のマシンに複製するには、次のコマンドを使用できます。
#zfs send datapool / [email protected] | ssh otherserver zfs recv backuppool / backup完了しました。
結論 スナップショット、クローン、およびレプリケーションは、ZFSの最も強力な機能です。スナップショットはファイルシステムまたはボリュームのポイントインタイムコピーを作成するために使用され、クローン作成は複製データセットを作成するために使用され、複製は同じマシン上のあるデータプールから別のデータプールにデータセットを複製するため、または異なるマシン間でデータプールを複製するために使用されますマシン。
Linux