LVMのスナップショット領域を作成

懸案のスナップショットによるバックアップを実行することにした。 論理ボリュームに空きを作らなかったので、まず、スナップショット領域を作成する。 まず、事前にバックアップを取る。 そして、OSをインストールCDからレスキューモードで起動する。 boot: linux rescue # lvm vgchange -a y # fsck.ext3 -f /dev/VolGroup00/LogVol01 # resize2fs /dev/VolGroup00/LogVol01 250G # lvm lvresize -L 250G /dev/VolGroup00/LogVol01 Do you really want to reduce LogVol00? [y/n]: y # exit 再起動後に縮小されたかを確認する。 # lvdisplay /dev/VolGroup00/LogVol01 # vgdisplay Free PE / Size 715 / 22.34GB 22.3Gの空きができた。 まあ、対象ボリュームの10%にも満たないが、バックアップのためのミラーを更新する間だけなので、十分だろう。 スナップ領域が確保できたので、以下の自動バックアップスクリプトを作成して、cronに日に1回snapback、週に1回snaptgzを登録する。 snapbackは必要な領域をバックアップ用HDDにrsyncでコピー、snaptgzはsnapbackに加え、リムーバブルディスクにバックアップコピーするためのもの。 snapback
#!/bin/sh

RM=/bin/rm
MV=/bin/mv
TAR=/bin/tar
NICE=/bin/nice
RSYNC=/usr/bin/rsync

BACKUP_DIR=/var/backup
SNAP_DIR=/mnt/snap

VOL_GROUP=VolGroup00
TARGET_VOL=LogVol01
SNAP_VOL=snap
TARGET_VOL_PATH=/dev/${VOL_GROUP}/${TARGET_VOL}
SNAP_VOL_PATH=/dev/${VOL_GROUP}/${SNAP_VOL}
SNAP_VOL_SIZE=22G

DATE=`date '+%y%m%d'`

lvcreate -s -L ${SNAP_VOL_SIZE} -n ${SNAP_VOL} ${TARGET_VOL_PATH} >& /dev/null
mount ${SNAP_VOL_PATH} ${SNAP_DIR} || exit

${NICE} -n 5 ${RSYNC} -aq --delete ${SNAP_DIR}/etc ${BACKUP_DIR}
${NICE} -n 5 ${RSYNC} -aq --delete ${SNAP_DIR}/var/lib/mailman ${BACKUP_DIR}
${NICE} -n 5 ${RSYNC} -aq --delete ${SNAP_DIR}/var/lib/mysql ${BACKUP_DIR}
${NICE} -n 5 ${RSYNC} -aq --delete ${SNAP_DIR}/var/named/chroot/etc ${BACKUP_DIR
}/named
${NICE} -n 5 ${RSYNC} -aq --delete ${SNAP_DIR}/var/named/chroot/var ${BACKUP_DIR
}/named
${NICE} -n 5 ${RSYNC} -aq --delete ${SNAP_DIR}/var/www ${BACKUP_DIR}
${NICE} -n 5 ${RSYNC} -aq --delete ${SNAP_DIR}/root ${BACKUP_DIR}
${NICE} -n 5 ${RSYNC} -aq --delete ${SNAP_DIR}/home ${BACKUP_DIR}

umount ${SNAP_DIR}
lvremove -f ${SNAP_VOL_PATH} >& /dev/null

snaptgz
#!/bin/sh

RM=/bin/rm
MV=/bin/mv
TAR=/bin/tar
NICE=/bin/nice
RSYNC=/usr/bin/rsync

BACKUP_DIR=/var/backup
SNAP_DIR=/mnt/snap

VOL_GROUP=VolGroup00
TARGET_VOL=LogVol01
SNAP_VOL=snap
TARGET_VOL_PATH=/dev/${VOL_GROUP}/${TARGET_VOL}
SNAP_VOL_PATH=/dev/${VOL_GROUP}/${SNAP_VOL}
SNAP_VOL_SIZE=22G

lvcreate -s -L ${SNAP_VOL_SIZE} -n ${SNAP_VOL} ${TARGET_VOL_PATH} >& /dev/null
mount ${SNAP_VOL_PATH} ${SNAP_DIR} || exit

${NICE} -n 5 ${RSYNC} -aq --delete ${SNAP_DIR}/etc ${BACKUP_DIR}
${NICE} -n 5 ${RSYNC} -aq --delete ${SNAP_DIR}/var/lib/mailman ${BACKUP_DIR}
${NICE} -n 5 ${RSYNC} -aq --delete ${SNAP_DIR}/var/lib/mysql ${BACKUP_DIR}
${NICE} -n 5 ${RSYNC} -aq --delete ${SNAP_DIR}/var/named/chroot/etc ${BACKUP_DIR
}/named
${NICE} -n 5 ${RSYNC} -aq --delete ${SNAP_DIR}/var/named/chroot/var ${BACKUP_DIR
}/named
${NICE} -n 5 ${RSYNC} -aq --delete ${SNAP_DIR}/var/www ${BACKUP_DIR}
${NICE} -n 5 ${RSYNC} -aq --delete ${SNAP_DIR}/root ${BACKUP_DIR}
${NICE} -n 5 ${RSYNC} -aq --delete ${SNAP_DIR}/home ${BACKUP_DIR}

umount ${SNAP_DIR}
lvremove -f ${SNAP_VOL_PATH} >& /dev/null

cd ${BACKUP_DIR}
# for i in etc mailman www root home
for i in etc mailman named mysql www root home
do
        if [ -e ${BACKUP_DIR}/tgz/$i.tar.gz.9 ] ; then rm ${BACKUP_DIR}/tgz/$i.t
ar.gz.9; fi
        if [ -e ${BACKUP_DIR}/tgz/$i.tar.gz.8 ] ; then mv ${BACKUP_DIR}/tgz/$i.t
ar.gz.8 ${BACKUP_DIR}/tgz/$i.tar.gz.9; fi
        if [ -e ${BACKUP_DIR}/tgz/$i.tar.gz.7 ] ; then mv ${BACKUP_DIR}/tgz/$i.t
ar.gz.7 ${BACKUP_DIR}/tgz/$i.tar.gz.8; fi
        if [ -e ${BACKUP_DIR}/tgz/$i.tar.gz.6 ] ; then mv ${BACKUP_DIR}/tgz/$i.t
ar.gz.6 ${BACKUP_DIR}/tgz/$i.tar.gz.7; fi
        if [ -e ${BACKUP_DIR}/tgz/$i.tar.gz.5 ] ; then mv ${BACKUP_DIR}/tgz/$i.t
ar.gz.5 ${BACKUP_DIR}/tgz/$i.tar.gz.6; fi
        if [ -e ${BACKUP_DIR}/tgz/$i.tar.gz.4 ] ; then mv ${BACKUP_DIR}/tgz/$i.t
ar.gz.4 ${BACKUP_DIR}/tgz/$i.tar.gz.5; fi
        if [ -e ${BACKUP_DIR}/tgz/$i.tar.gz.3 ] ; then mv ${BACKUP_DIR}/tgz/$i.t
ar.gz.3 ${BACKUP_DIR}/tgz/$i.tar.gz.4; fi
        if [ -e ${BACKUP_DIR}/tgz/$i.tar.gz.2 ] ; then mv ${BACKUP_DIR}/tgz/$i.t
ar.gz.2 ${BACKUP_DIR}/tgz/$i.tar.gz.3; fi
        if [ -e ${BACKUP_DIR}/tgz/$i.tar.gz.1 ] ; then mv ${BACKUP_DIR}/tgz/$i.t
ar.gz.1 ${BACKUP_DIR}/tgz/$i.tar.gz.2; fi
        if [ -e ${BACKUP_DIR}/tgz/$i.tar.gz.0 ] ; then mv ${BACKUP_DIR}/tgz/$i.t
ar.gz.0 ${BACKUP_DIR}/tgz/$i.tar.gz.1; fi
        if [ -e ${BACKUP_DIR}/tgz/$i.tar.gz ] ; then mv ${BACKUP_DIR}/tgz/$i.tar
.gz ${BACKUP_DIR}/tgz/$i.tar.gz.0; fi
        ${NICE} -n 5 ${TAR} zcf ${BACKUP_DIR}/tgz/$i.tar.gz ./$i --exclude ./mys
ql/mysql.sock --exclude ./named/var/run/dbus/system_bus_socket
done

このブログ記事について

このページは、norが2011年3月30日 14:18に書いたブログ記事です。

ひとつ前のブログ記事は「BCTV4-PCIをtowerにインストール」です。

次のブログ記事は「またまたtower崩壊?」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

アーカイブ

ウェブページ

Powered by Movable Type 6.8.5