LVM (Logical Volume Manager) - это не только удобное управление дисковыми разделами, но и инструмент для снапшотов. С их помощью можно «заморозить» состояние тома, сделать бэкап или провести тестовые изменения. Но если такие снапшоты создавать регулярно, нужно и контролировать их «уборку».
🛠 Пример скрипта
#!/bin/bash
VG="vg0" # имя volume group
LV="data" # исходный LV
SNAP_SIZE="2G" # размер снапшота
KEEP=5 # сколько последних снапшотов хранить
DATE=$(date +%Y%m%d-%H%M)
SNAP_NAME="${LV}_snap_${DATE}"
# 1. Создаём снапшот
lvcreate -L "$SNAP_SIZE" -s -n "$SNAP_NAME" "/dev/$VG/$LV"
echo "[+] Snapshot создан: $SNAP_NAME"
# 2. Список снапшотов, сортировка по дате
SNAPS=$(lvs --noheadings -o lv_name $VG | grep "${LV}_snap_" | sort)
# 3. Если снапшотов больше $KEEP - удаляем старые
COUNT=$(echo "$SNAPS" | wc -l)
if (( COUNT > KEEP )); then
REMOVE=$(echo "$SNAPS" | head -n $((COUNT - KEEP)))
for s in $REMOVE; do
echo "[-] Удаляем старый снапшот: $s"
lvremove -f "/dev/$VG/$s"
done
fi
▪️ Как использовать
Положите скрипт, например в
/usr/local/bin/auto-lvm-snapshot.shСделайте его исполняемым:
chmod +x /usr/local/bin/auto-lvm-snapshot.sh
Добавьте в cron, например, раз в день в 02:00:
0 2 * * * root /usr/local/bin/auto-lvm-snapshot.sh >> /var/log/lvm-snapshot.log 2>&1
▪️ Важные моменты
📍Снапшоты занимают место: при изменении данных в оригинальном LV они растут. Размер -L должен быть с запасом.
📍Если снапшот «переполнится» - он станет невалидным.
📍Для бэкапа можно монтировать снапшот в отдельный каталог, а после копирования - удалять его.
BashTex 📱 #bash