次のページ 前のページ 目次へ

7. 確実なバックアップを行うには、スナップショットを取る

ここにあげるのは、本当に起こるかどうかも疑わしい例の 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

これはすごい!

7.1 どのように働く?

「--size」パラメタを設定しなければならなかったことをおぼえていますか? 「snap」ボリュームは、ブロックもしくは「チャンク」のすべてのコピーを LVM が 必要とする時、つまり元データが変更されてしまった時になければいけません。

訳註:チャンク(chunk)とは、あるデータ構造をいくつかにまとめた単位を 表します。この場合は、ディスク上で物理的に連続している LVM が利用可能な最小 単位を意味しています。

a.test.file を削除した時、その inode は削除されます。すると 64 KB 分(チャンク の大きさ)が「ダーティー(dirty)な」状態としてマークされ、元データのコピーが 「snap」ボリュームに書かれます。この場合ですと、スナップショットとして 16 MB 確保してありますから、 16 MB 以上の「チャンク」が変更されると、スナップ ショットは機能しなくなるでしょう。

スナップショットのパーティションの大きさを間違いなく決めるには、論理ボリューム 本来の使われ方を考慮して、スナップショットをアクティブにする時間を推測するしか ありません。たとえば、真夜中に誰も利用していないシステムを数時間かけてバック アップするなら、ごくわずかな空きしか必要ないと思います。

注意して欲しいのは、スナップショットはずっと存在するものではない、ということ です。LVM を落したり、リブートしたりすれば、スナップショットは消えてしまい、 再作成することになります。


次のページ 前のページ 目次へ