پرش به محتوا

ذخیره‌سازی مطمئن با ZFS روی Debian

ZFS را از مخزن contrib نصب کنید، یک pool آینه‌ای با فشرده‌سازی بسازید، snapshot خودکار بگیرید و سلامت دیسک‌ها را با scrub بسنجید.

Debian 13سطح: پیشرفتهبرای: Debian 13، Debian 12به‌روزرسانی: ۱۶ آبان ۱۴۰۵

ZFS فایل‌سیستم و مدیر دیسک را یکی کرده است: checksum برای همه‌ی داده‌ها، snapshot لحظه‌ای، فشرده‌سازی و RAID داخلی. برای سرور فایل و ذخیره‌ی بکاپ انتخاب بسیار خوبی است.

۱. نصب

ZFS در بخش contrib مخزن Debian است و ماژول آن هنگام نصب کامپایل می‌شود:

bash
sudo sed -i 's/^Components: main.*/Components: main contrib non-free non-free-firmware/' /etc/apt/sources.list.d/debian.sources 2>/dev/null
sudo apt update
sudo apt install -y linux-headers-amd64 zfs-dkms zfsutils-linux
sudo modprobe zfs && zfs version

در Debian 12 که از فایل sources.list قدیمی استفاده می‌کند، contrib را دستی به خطوط مخزن اضافه کنید.

۲. ساخت pool آینه‌ای

از شناسه‌های پایدار دیسک استفاده کنید، نه sdb که ممکن است بعد از ری‌استارت عوض شود:

bash
ls -l /dev/disk/by-id/ | grep -v part
sudo zpool create -o ashift=12 -O compression=lz4 -O atime=off -O xattr=sa \
  tank mirror /dev/disk/by-id/ata-DISK_A /dev/disk/by-id/ata-DISK_B
zpool status tank

۳. dataset برای هر کاربرد

bash
sudo zfs create -o mountpoint=/srv/files tank/files
sudo zfs create -o mountpoint=/srv/backup -o compression=zstd tank/backup
sudo zfs set quota=500G tank/files
zfs list -o name,used,avail,compressratio,mountpoint

۴. snapshot

bash
sudo zfs snapshot tank/files@before-cleanup
zfs list -t snapshot
sudo zfs rollback tank/files@before-cleanup      # برگشت کامل
ls /srv/files/.zfs/snapshot/before-cleanup/       # بازیابی یک فایل

برای snapshot خودکار ساعتی و روزانه:

bash
sudo apt install -y zfs-auto-snapshot

۵. scrub دوره‌ای

scrub همه‌ی داده‌ها را می‌خواند و با checksum مقایسه می‌کند. بسته‌ی Debian یک scrub ماهانه زمان‌بندی می‌کند؛ اجرای دستی:

bash
sudo zpool scrub tank
zpool status -v tank
ZFS هم مثل RAID جایگزین بکاپ نیست. با zfs send می‌توانید snapshotها را به سرور دیگری بفرستید.