۱. شناسایی دیسکها
همیشه از نامهای /dev/disk/by-id استفاده کنید. نامهایی مثل sdb بعد از راهاندازی مجدد ممکن است جابهجا شوند:
lsblk -o NAME,SIZE,MODEL,SERIAL
ls -l /dev/disk/by-id/ | grep -v part۲. pool آینهای
دستور زیر همهی دادههای دو دیسک را پاک میکند.
zpool create -o ashift=12 tank mirror \
/dev/disk/by-id/ata-SAMSUNG_SSD_870_S1 /dev/disk/by-id/ata-SAMSUNG_SSD_870_S2
zfs set compression=lz4 tank
zfs set atime=off tank
zpool status tankashift=12 برای دیسکهای ۴K (تقریباً همهی دیسکهای امروزی) لازم است و بعداً قابل تغییر نیست.
۳. افزودن به Proxmox
pvesm add zfspool tank-vm --pool tank --content images,rootdir --sparse 1
pvesm statusحالا هنگام ساخت VM یا LXC، tank-vm در فهرست storageها هست. هر دیسک ماشین یک zvol یا dataset جداگانه است و میتوان از آن snapshot گرفت.
۴. محدود کردن ARC
ZFS بهطور پیشفرض تا نیمی از RAM را برای cache برمیدارد و همین حافظه از دسترس VMها خارج میشود. از Proxmox 8.1 به بعد، نصبکننده سقف را ۱۰٪ RAM میگذارد، ولی poolای که بعداً میسازید را بررسی کنید. نمونه برای سقف ۸ گیگابایت:
echo "options zfs zfs_arc_max=$((8 * 1024**3))" > /etc/modprobe.d/zfs.conf
update-initramfs -u -k all
echo $((8 * 1024**3)) > /sys/module/zfs/parameters/zfs_arc_max # apply now
arc_summary | grep -A3 'ARC size'۵. NAS با NFS برای بکاپ و ISO
pvesm scan nfs 192.168.10.50
pvesm add nfs nas --server 192.168.10.50 --export /volume1/proxmox \
--content backup,iso,vztmpl --options vers=4.1
pvesm statusشبکهی ذخیرهسازی را ترجیحاً روی کارت یا VLAN جداگانه بگذارید تا ترافیک بکاپ شبکهی کاربران را کند نکند.
۶. نگهداری
zpool scrub tank # Proxmox already schedules a monthly scrub (/etc/cron.d/zfsutils-linux)
zpool status -x # "all pools are healthy"
zfs list -o name,used,avail,compressratioبرای تعویض دیسک خراب در آینه:
zpool replace tank /dev/disk/by-id/ata-OLD /dev/disk/by-id/ata-NEW
zpool status tank # wait for resilver to finish