2016年4月2日土曜日

システムバックアップその10

システムバックアップだけで既に10回目…。
今回作ったマシン、色々な実験をすることが目的であって、システムバックアップが目的じゃない。
システムバックアップは、実験をする上で絶対必須なので、書かざるを得ないというのが背景でココまで書いてきた。
最後まで書ききってから、実験ネタに入りたい。

さて、今度はスナップショットの削除だ。
例によってスクリプトを。
sudo su - して root 権限を取得しておくのを忘れないようにね。

# cd
# cd backup/bin
# vi 0060_remove_snapshot


--ココから--
#!/bin/sh

BINDIR=`/usr/bin/dirname $0`
BINDIR=`/usr/bin/realpath ${BINDIR}`
ETCDIR=`/usr/bin/realpath ${BINDIR}/../etc`

. ${ETCDIR}/config

# Remove Snapshot
for FSCONFIG in ${ETCDIR}/fsconfig/*
do
  VOLNAME=""
  USELVM=""

  . ${FSCONFIG}

  . ${BACKUPPOINT}/current/config/blkid/${VOLNAME}

  if [ x${USELVM} = "xYes" -a x${TYPE} != "xswap" ]
  then
    /bin/sync;/bin/sync;/bin/sync
    /sbin/lvremove -f ${ROOTVG}/${VOLNAME}.snap
  fi
done

--ココまで--
中身の作りは、スナップショット作成のスクリプトとほとんど同じだ。
スナップショット作成で使った lvcreate が、スナップショット削除の lvremove コマンドに置き換わっただけだ。
ただ、これまで一時的に作成したスナップショットを削除した時、「本当に削除していいか?」と聞かれたと思う。
スクリプトでそれを聞かれるのは非常に使い勝手が悪いので、「強制的に削除する」を意味する -f オプションを付与している。

さて、内部で使っている変数は、これまでに出てきたものと同じなので、これまで通り実行テストしてみよう。

# chmod +x 0060_remove_snapshot
# ./0010_mount
# ./0020_mkdir
# ./0030_create_config
# ./0040_create_snapshot
# ./0050_create_archive
# ./0060_remove_snapshot


最後に、「Logical volume "lv-root.snap" successfully removed」と出ただろうか?これで、スナップショットが削除されているはずだ。lvsコマンド等で確認してみよう。

最後に、例によって自動で作成されたファイルを削除して、元に戻しておこう。

# rm -rf /media/backup/current
# umount /media/backup


これでスナップショットの削除処理は完了だ。
今回はココまで。
次回は、ファイルシステムのメタ情報の取得だ。
これは、実はリストアでは必要無い。何かトラブルがあった時のための情報取得だ。
 

0 件のコメント:

コメントを投稿