ZFS е файловата система, която използваме в инфраструктурата на VPSStorages. Една от най-мощните й функции е поддръжката на snapshots — моментни снимки на данните, които правят архивирането бързо, надеждно и ефективно.

Какво е ZFS snapshot?

Snapshot е моментна снимка на файловата система в определен момент от времето. За разлика от традиционните backup методи, ZFS snapshot-ите:

  • Се създават мигновено — независимо от размера на данните
  • Заемат минимално дисково пространство (само разликите)
  • Не влияят на производителността на системата
  • Позволяват точно възстановяване до всеки момент

Основни ZFS команди за backup

Създаване на snapshot

sudo zfs snapshot pool/dataset@snapshot-name # Пример: sudo zfs snapshot ssdpool/data@2026-04-09

Преглед на snapshots

sudo zfs list -t snapshot sudo zfs list -t snapshot pool/dataset

Възстановяване от snapshot

# Внимание: rollback изтрива всички промени след snapshot-а sudo zfs rollback pool/dataset@2026-04-09

Изтриване на snapshot

sudo zfs destroy pool/dataset@2026-04-09

Изпращане на backup към отдалечен сървър

ZFS позволява изпращане на snapshots към друг сървър чрез zfs send и zfs receive:

# Изпращане на пълен snapshot към отдалечен сървър sudo zfs send pool/dataset@snapshot | ssh user@backup-server "sudo zfs receive backup-pool/dataset" # Изпращане само на разликите (incremental) sudo zfs send -i pool/dataset@old-snap pool/dataset@new-snap | ssh user@backup-server "sudo zfs receive backup-pool/dataset"
Предимство на incremental backup

Инкременталният backup изпраща само промените между два snapshot-а. При 100 GB dataset с малко промени дневно, инкременталният backup може да е само няколко MB — огромна икономия на трафик и време.

Автоматизиране с cron

Създайте скрипт за автоматично ежедневно архивиране:

sudo nano /usr/local/sbin/zfs-backup.sh
#!/bin/bash DATASET="ssdpool/data" DATE=$(date +%Y-%m-%d) REMOTE="user@backup-server" REMOTE_POOL="backup-pool/data" # Създай snapshot zfs snapshot "${DATASET}@${DATE}" # Намери предишния snapshot PREV=$(zfs list -t snapshot -o name -s creation "${DATASET}" | tail -2 | head -1) # Изпрати incremental backup if [ -n "$PREV" ]; then zfs send -i "${PREV}" "${DATASET}@${DATE}" | ssh "${REMOTE}" "zfs receive ${REMOTE_POOL}" fi # Изтрий snapshots по-стари от 30 дни zfs list -t snapshot -o name "${DATASET}" | grep "@" | head -n -30 | xargs -r zfs destroy
sudo chmod +x /usr/local/sbin/zfs-backup.sh

Добавете в crontab за изпълнение всяка нощ в 02:00:

sudo crontab -e # Добавете реда: 0 2 * * * /usr/local/sbin/zfs-backup.sh >> /var/log/zfs-backup.log 2>&1

Мониторинг на ZFS pool

Проверявайте редовно здравето на ZFS pool-а:

# Статус на pool-а sudo zpool status # Статистика за I/O sudo zpool iostat -v # Проверка за грешки sudo zpool status -x
⚠️ Важно за backup стратегията

Snapshot-ите на същия pool НЕ са пълноценен backup. Ако pool-ът се повреди физически, ще загубите и snapshot-ите. Винаги правете копия на отдалечен сървър или отделен storage.

Storage планове за backup от VPSStorages

Нашите Storage планове са изградени на ZFS mirror (два диска в огледало) за максимална надеждност. Идеални за:

  • Съхранение на ZFS backup-и от VPS
  • Архивиране на бизнес данни
  • Offsite backup за производствени сървъри
  • Long-term storage на медийни файлове

Заключение

ZFS snapshots са един от най-ефективните методи за архивиране на данни. Бързи, надеждни и ефективни откъм дисково пространство — правилният инструмент за всеки сериозен сървър. Комбинирайте ги с dedicated storage план от VPSStorages за пълна защита на данните.