sheepdogのvdiイメージの保守

sheepdogのStorageCluster上にあるVDIのスナップショットを取得するScript。
(曜日でローテーション)


#!/bin/bash
snapshotName=dayly_`date +”%w”`

dog vdi list -r |awk ‘{if ($1 == “=”) print $2}’ |while read vdiName
do
dog vdi list -r ${vdiName} |awk ‘{if ($1 == “s”) print $10}’ |grep ${snapshotName} >/dev/null 2>&1
if [ $? -eq 0 ]
then
dog vdi delete -s ${snapshotName} ${vdiName}
fi
dog vdi snapshot -s ${snapshotName} ${vdiName}
done


各VDIをqcow2方式でバックアップするScript。qcow2の圧縮がかなりCPUを食うので容量に余裕があったり、保存先がzfsやbtrfsのような透過圧縮されるような所なら-cは取ったほうが良いかも。

#!/bin/bash
suffix=$1
targetDir=/backups/sheepdog
snapshotTmpName=bkupsnap

dog vdi list -r |awk ‘{if ($1 == “=”) print $2}’ |while read vdiName
do
dog vdi list -r ${vdiName} |awk ‘{if ($1 == “s”) print $10}’ |grep ${snapshotName} >/dev/null 2>&1
if [ $? -eq 0 ]
then
dog vdi delete -s ${snapshotTmpName} ${vdiName}
fi
dog vdi snapshot -s ${snapshotTmpName} ${vdiName}
if [ -f ${targetDir}/${vdiName}_${suffix}.qcow2 ]
then
rm -f ${targetDir}/${vdiName}_${suffix}.qcow2
fi
qemu-img convert -O qcow2 -c sheepdog:${vdiName}:${snapshotTmpName} ${targetDir}/${vdiName}_${suffix}.qcow2
dog vdi delete -s ${snapshotTmpName} ${vdiName}
done