LVM スナップショットの覚え書き
Linuxでバックアップに利用されるLVMの機能、スナップショット。
スナップショットは単にデータのコピーを取るのではなく、対象となる論理ボリュームにおける、その瞬間のポインタを捉える。もっと一般的な言い方をすると、「ある瞬間のファイルシステムイメージを保持」したもの。
捉えられたポインタはスナップショット領域に保持されるわけだが、スナップショットを作成した瞬間のポインタがそのまま保持されるのではない。ファイルシステム上でなんらかの変更があれば、スナップショット領域内において差分が更新される。さらに、スナップショット領域内には変更前のデータ(のポインタ?)も退避され、保存される。
….と、いうことらしい。この辺りはちょっと難しい。。
仕様については切り上げて、実践編。
スナップショットを作成するには、lvcreateに-sオプション、もしくは–snapshotをつける。-nで領域の名前を指定する。以下は、論理ボリューム”/dev/vg_name/lv_name”のスナップショットをsnap_testという名で作成している。
※スナップショット用の領域が確保されていることが前提。ないと怒られる。
# lvcreate -s -L 200MB -n snap_test /dev/vg_name/lv_name
作成後lvdisplayしてみると、スナップショット領域が出来上がっているのが確認できるだろう。
作成したスナップショットは、dumpやrsyncなど利用してバックアップに使える。スナップショットは通常のデバイスと同じように扱えることができて、dumpでテープにバックアップを取るのであれば以下コマンドでOK。
# dump 0uf /dev/st0 /dev/vg_name/snap_test
rsyncを実行する場合は、スナップショットをマウントしておく。
# mount -r /dev/vg_name/snap_test /mnt/snap_point
snap_testを”/mnt/snap_point”にマウント
※rsyncコマンド例は今回は割愛。気が向いたら追記。
スナップショット領域は放っておくとどんどん増えていくので、バックアップが済んだら速やかに削除する。
アンマウントしてからlvremoveする。
# umount /mnt/snap_point
# lvremove -f /dev/vg_name/snap_test ←-f は–forceでも。
スナップショットの説明は以下サイトが分かりやすいかも。
http://www.atmarkit.co.jp/flinux/rensai/root06/root06b.html