Snapper は Linux のコマンドライン ユーティリティで、LVM シン ボリュームのスナップショットを作成および管理するために使用されます。スナップショットを作成、削除、比較し、スナップショット間で行われた変更を元に戻すことができます。また、Snapper を使用すると、Btrfs のスナップショットを簡単に作成および管理できます。
スナッパーのインストール
yum コマンドを使用して、snapper ソフトウェア パッケージをインストールします。
# yum install snapper ... Transaction Summary ============================================================= Install 1 Package (+3 Dependent packages) Total download size: 499 k Installed size: 1.5 M Is this ok [y/d/N]: y ... Complete!
rpm –ql コマンドを使用して、snapper パッケージによって提供されるファイルを表示します。
# rpm –ql snapper /etc/cron.daily/snapper /etc/cron.hourly/snapper /etc/dbus-1/system.d/org.opensus.Snapper.conf /etc/logrotate.d/snapper /usr/bin/snapper /usr/sbin/snapperd /usr/share/dbus-1/system-services/org.opensus.Snapper.service ...2 つの cron snapper ファイルに注意してください。
– デフォルトでは、snapper は cron.hourly を設定します。 .snapshots にスナップショットを作成するジョブ ボリュームのサブディレクトリと cron.daily 古いスナップショットをクリーンアップするジョブ。
– 構成ファイルを編集して、この動作を無効にしたり変更したりできます。
1.シン プロビジョニングされた論理ボリュームの作成
lvcreate コマンドを使用して、thinvol1 という名前のシン プロビジョニング ボリュームを作成します。 snapper コマンドを使用してスナップショットを作成する前に、このボリュームをマウントする必要があることに注意してください。
# vgs VG #PV #LV #SN Attr VSize VFree myvolg 1 0 0 wz--n- 1020.00m 1020.00m
シン プールを作成します:
# lvcreate –v –L 100m –T myvolg/mythinpool ... Logical volume “mythinpool” created
シン プロビジョニング ボリュームの作成:
# lvcreate –v –V 200m –T myvolg/mythinpool –n thinvol1 ... Logical volume “thinvol1” created
シン ボリュームにファイル システムを作成します。
# mkfs.ext4 /dev/myvolg/thinvol1 ... Writing superblocks and filesystem accounting information: done
ファイルシステムをマウントします:
# mkdir /myvol1 # mount /dev/myvolg/thinvol1 /myvol1
2. Snapper 構成ファイルの作成
Snapper を使用してスナップショットを作成するには、LVM シン ボリュームまたは Btrfs サブボリューム用の構成ファイルが必要です。 LVM および Btrfs ボリュームには、マウントされたファイル システムも必要です。構成ファイルを作成するには、create-config コマンドを使用します。次の例では、/myvol1 にマウントされた LVM ext4 ファイル システム用に myvol_snap という名前の構成ファイルを作成します。
# snapper –c myvol1_snap create-config –f "lvm(ext4)" /myvol1
– このコマンドは、/etc/sysconfig/snapper にエントリを追加します。
– このコマンドは、/etc/snapper/configs/myvol1_snap 構成ファイルを作成します。
– このコマンドは、/myvol1 に .snapshots ディレクトリを作成します。ディレクトリ。
# cat /etc/sysconfig/snapper ... SNAPPER_CONFIGS=”myvol1_snap”
# cat /etc/snapper/configs/myvol1_snap ... # subvolume to snapshot SUBVOLUME=”/myvol1” # filesystem type FSTYPE=”lvm(ext4)” ... # start comparing pre- and post-snapshot in background after... BACKGROUND_COMPARISON=”yes” # run daily number cleanup NUMBER_CLEANUP=”yes” ... # create hourly snapshots TIMELINE_CREATE=”yes” # cleanup hourly snapshots after some time TIMELINE_CLEANUP=”yes” ... # cleanup empty pre-post-pairs EMPTY_PRE_POST_CLEANUP=”yes” ...
/myvol1 ファイル システムのスナップショットは、.snapshots サブディレクトリに保存されます。
# ls –la /myvol1 ... drwxr-x--- ... .snapshots ...
スナップショットの種類
snapper を使用して作成できるスナップショットには、次の 3 種類があります。
前: 変更前のボリュームの状態を記録するために使用します。事前スナップショットには、常に対応する事後スナップショットが必要です。
post: 変更後のボリュームの状態を記録するために使用します。
単一: これらのスナップショットは、他のスナップショットと特別な関係はありません。
3.スナップショットを作成しています
/myvol1 ディレクトリにテスト ファイルを作成します。
# echo "This is a test file" > /myvol1/test_file
snapper create -t pre を使用して、myvol1_snap で定義されたボリュームの事前スナップショットを作成します 構成ファイル。 –p オプションを含めて、作成中のスナップショットの番号を表示します。 (この例では、事前スナップショット番号は 1 です)
# snapper –c myvol1_snap create –t pre –p 1
スナップショットは、ボリュームの .snapshots サブディレクトリにスナップショット番号ごとに保存されます。 /myvol1/.snapshots ディレクトリの内容を表示します。
# ls –l /myvol1/.snapshots ... drwxr-xr-x ... 1
/myvol1/.snapshots/1 ディレクトリの内容を表示します。
# ls –l /myvol1/.snapshots/1 ... -rw------- ... info.xml drwxr-x--- ... snapshot
test_file を削除して、/myvol1 ディレクトリの内容を変更します。
# rm /myvol1/test_file
snapper create -t post を使用して、myvol1_snap 構成ファイルで定義されたボリュームのポスト スナップショットを作成します。 –pre-num 1 オプションを含めて、このポスト スナップショットをプレ スナップショット 1 に関連付けます。–p オプションを含めて、作成中のスナップショットの番号を表示します。
# snapper –c myvol1_snap create –t post --pre-num 1 –p 2
.snapshots ディレクトリに作成された新しいディレクトリ名 2 が表示されます。
# ls –l /myvol1/.snapshots/2 ... -rw------- ... filelist-1.txt -rw------- ... info.xml drwxr-x--- ... snapshot
filelist-1.txt には、プレ スナップショットの後、ポスト スナップショットの前に削除されたファイルが含まれています。
# cat /myvol1/.snapshots/2/filelist-1.txt -..... /test_file
前後のスナップショットの比較
snapper status コマンドを使用して、プレ スナップショット 1 とポスト スナップショット 2 の間に追加、削除、または変更されたファイルとディレクトリを表示します。
# snapper –c myvol1_snap status 1..2 -..... /test_file
snapper diff コマンドを使用して、プレ スナップショット 1 とポスト スナップショット 2 のファイルの内容の違いを表示します。
# snapper –c myvol1_snap diff 1..2 Binary files /myvol1/.snapshots/1/snapshot/test_file and /myvol1/.snapshots/2/snapshot/test_file differ
snapper list コマンドを使用して、myvol1_snap 構成ファイルで定義されたボリュームに存在するスナップショットを一覧表示します。
# snapper –c myvol1_snap list Type | # | Pre # | Date | User | Cleanup |Description| Userdata ------+---+-------+------+------+---------+------------+-------- single| 0 | | ... | root | | Current | pre | 1 | | ... | root | | | post | 2 | 1 | ... | root | | |
ポスト スナップショットからプレ シャンショットへの変更を元に戻す
ポスト スナップショットからプレ スナップショットへの変更を元に戻すには、つまり、test_file を復元するには、snapper undochange を使用します コマンド。
# snapper –c myvol1_snap undochange 1..2 create:1 modify:0 delete:0
確認
# ls /myvol1 lost+found test_file