پرش به محتوا

ذخیره‌سازی در Proxmox: ZFS آینه‌ای برای VMها و NFS برای بکاپ

روی دو دیسک یک pool آینه‌ای ZFS بسازید، آن را به‌عنوان storage ماشین‌ها اضافه کنید، مصرف RAM آن را محدود کنید و یک NAS را برای بکاپ و ISO وصل کنید.

Proxmox VE 9سطح: متوسطبه‌روزرسانی: ۱۷ آبان ۱۴۰۵

۱. شناسایی دیسک‌ها

همیشه از نام‌های /dev/disk/by-id استفاده کنید. نام‌هایی مثل sdb بعد از راه‌اندازی مجدد ممکن است جابه‌جا شوند:

bash
lsblk -o NAME,SIZE,MODEL,SERIAL
ls -l /dev/disk/by-id/ | grep -v part

۲. pool آینه‌ای

دستور زیر همه‌ی داده‌های دو دیسک را پاک می‌کند.
bash
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 tank

ashift=12 برای دیسک‌های ۴K (تقریباً همه‌ی دیسک‌های امروزی) لازم است و بعداً قابل تغییر نیست.

۳. افزودن به Proxmox

bash
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‌ای که بعداً می‌سازید را بررسی کنید. نمونه برای سقف ۸ گیگابایت:

bash
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

bash
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 جداگانه بگذارید تا ترافیک بکاپ شبکه‌ی کاربران را کند نکند.

۶. نگهداری

bash
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

برای تعویض دیسک خراب در آینه:

bash
zpool replace tank /dev/disk/by-id/ata-OLD /dev/disk/by-id/ata-NEW
zpool status tank          # wait for resilver to finish