ZFS فایلسیستم و مدیر دیسک را یکی کرده است: checksum برای همهی دادهها، snapshot لحظهای، فشردهسازی و RAID داخلی. برای سرور فایل و ذخیرهی بکاپ انتخاب بسیار خوبی است.
۱. نصب
ZFS در بخش contrib مخزن Debian است و ماژول آن هنگام نصب کامپایل میشود:
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 که ممکن است بعد از ریاستارت عوض شود:
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 برای هر کاربرد
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
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 خودکار ساعتی و روزانه:
sudo apt install -y zfs-auto-snapshot۵. scrub دورهای
scrub همهی دادهها را میخواند و با checksum مقایسه میکند. بستهی Debian یک scrub ماهانه زمانبندی میکند؛ اجرای دستی:
sudo zpool scrub tank
zpool status -v tankZFS هم مثل RAID جایگزین بکاپ نیست. با zfs send میتوانید snapshotها را به سرور دیگری بفرستید.