ここにあげるのは、本当に起こるかどうかも疑わしい例の 1 つです。たとえば 様々な処理を次々こなしているサーバを運用しているとします。有効なバック アップという点からすると、稼働中のあらゆるプログラムを落とす必要があります。 そうしないと、システムが不整合な状態に陥ってしまうからです。
典型的な例として、あるファイルを /tmp から /root に移す場合を見てみます。 /root がまずバックアップされていました。/root を見た時、まだそのファイルは ありませんでした。その時までに /tmp がバックアップが完了しましたが、ファイ ルは移動した後でした。
データベースやディレクトリの保存では状況が変わります。アプリケーションを きちんと落とす機会がないと、ファイルがバックアップ可能な状態になるきっかけ が得られません。
別の問題も出てきます。普通はアプリケーションを落し、バックアップをとってから、 再起動をかけます。これはバックアップが数分で取り終えればまったく問題になりま せんが、数時間かかったり、いつ終るともわからないなら、ダメージをこうむること になります。
LVM でこの状況を救いましょう。
LVM を使えば、その時々の論理ボリュームの状況をスナップショットにとること ができ、それをマウントしたり、バックアップをとることもできます。
試してみましょう。
# mount /dev/test/HOWTO /mnt
# echo > /mnt/a.test.file
# ls /mnt/
a.test.file lost+found
# ls -l /mnt/
total 13
-rw-r--r-- 1 root root 1 Apr 2 00:28 a.test.file
drwxr-xr-x 2 root root 12288 Apr 2 00:28 lost+found
これで、対象となるファイルができました。スナップショットを作ってみましょう。
# lvcreate --size 16m --snapshot --name snap /dev/test/HOWTO
lvcreate -- WARNING: all snapshots will be disabled if more than 16 MB are changed
lvcreate -- INFO: using default snapshot chunk size of 64 KB
lvcreate -- doing automatic backup of "test"
lvcreate -- logical volume "/dev/test/HOWTO" successfully created
「--size」パラメタについては後で詳しく触れます。スナップショットをマウント してみます。
# mount /dev/test/snap /snap
# ls /snap
total 13
-rw-r--r-- 1 root root 1 Apr 2 00:28 a.test.file
drwxr-xr-x 2 root root 12288 Apr 2 00:28 lost+found
元の位置から a.test.file を削除して、まだスナップショットの場所に存在する
かをチェックしてみてください。
# rm /mnt/a.test.file
# ls /snap
total 13
-rw-r--r-- 1 root root 1 Apr 2 00:28 a.test.file
drwxr-xr-x 2 root root 12288 Apr 2 00:28 lost+found
これはすごい!
「--size」パラメタを設定しなければならなかったことをおぼえていますか? 「snap」ボリュームは、ブロックもしくは「チャンク」のすべてのコピーを LVM が 必要とする時、つまり元データが変更されてしまった時になければいけません。
訳註:チャンク(chunk)とは、あるデータ構造をいくつかにまとめた単位を 表します。この場合は、ディスク上で物理的に連続している LVM が利用可能な最小 単位を意味しています。
a.test.file を削除した時、その inode は削除されます。すると 64 KB 分(チャンク の大きさ)が「ダーティー(dirty)な」状態としてマークされ、元データのコピーが 「snap」ボリュームに書かれます。この場合ですと、スナップショットとして 16 MB 確保してありますから、 16 MB 以上の「チャンク」が変更されると、スナップ ショットは機能しなくなるでしょう。
スナップショットのパーティションの大きさを間違いなく決めるには、論理ボリューム 本来の使われ方を考慮して、スナップショットをアクティブにする時間を推測するしか ありません。たとえば、真夜中に誰も利用していないシステムを数時間かけてバック アップするなら、ごくわずかな空きしか必要ないと思います。
注意して欲しいのは、スナップショットはずっと存在するものではない、ということ です。LVM を落したり、リブートしたりすれば、スナップショットは消えてしまい、 再作成することになります。