TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #353 1.24K
Автоматическое создание LVM-снапшотов с очисткой старых копий

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
  • 👍 6
More from @bash_tex
  1. Oct 9, 2026BashTex 📱 #мем
  2. Oct 8, 2026Bridge FDB - как Linux bridge узнаёт, где находится MAC Linux bridge не знает заранее, за…
  3. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  4. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
  5. Oct 5, 2026name_to_handle_at() - как получить файловый объект без обычного пути В Linux обычно обраща…
  6. Oct 2, 2026madvise() - как процесс подсказывает ядру, как он собирается использовать память Когда про…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →