จากบทความที่แล้ว ได้พูดถึงการปรับ limit ZFS ARC ส่วนบทความนี้จะเป็นการ tuning performance หลังจากใช้งาน ZFS Storage แล้วเจอปัญหาหลักๆคือ เรื่องใช้งาน IO สูงผิดปกติ จนตัว Proxmox ค้างบ่อยครั้ง

แนวทางการ limit ZFS ARC

ถ้าติดตั้ง Proxmox ด้วยระบบ ZFS จะมี pool เริ่มต้นมาให้คือ rpool ซึ่งเราจะสามารถใช้งานได้ทั้ง local และ local-zfs สำหรับเป็น storage vm, container

zfs list

เรียกดู list NAME USED AVAIL REFER MOUNTPOINT rpool 27.8G 29.4G 96K /rpool rpool/ROOT 11.5G 29.4G 96K /rpool/ROOT rpool/ROOT/pve-1 11.5G 29.4G 11.5G / rpool/data 16.2G 29.4G 112K /rpool/data

result zfs list

Tuning Performance ZFS

  1. compression = lz4
  2. atime = off
  3. xattr = sa
  4. recordsize = 16K - 64K
  5. volblocksize = 16k - 64k

compression แนะนำเป็น lz4 จะใช้งาน cpu นิดนึง

zfs set compression=lz4 rpool

zfs get compression rpool

คำสั่งเรียกดู compression atime แนะนำเป็น off ระบบไม่ update time ทุกครั้งที่มีการอ่านไฟล์

zfs set atime=off rpool

zfs get atime rpool

คำสั่งเรียกดู get atime xattr แนะนำเป็น sa (System Attributes) โดย attributes จะถูกเก็บไว้ใน inodes

zfs set xattr=sa rpool

zfs get xattr rpool

คำสั่งเรียกดู get xattr recordsize ค่าเริ่มต้นของ proxmox คือ 128K แนะนำปรับอยู่ในช่วง 16K - 64K ซึ่งจะมีผลดีต่อความเร็ว IOPs ของการ random reads และ writes

zfs set recordsize=64K rpool

zfs get recordsize rpool

คำสั่งเรียกดู recordsize สุดท้ายคือ volblocksize เข้าไปที่ Proxmox UI (Datacenter -> Storage -> local-zfs -> Edit) โดยค่าเริ่มต้นอยู่ที่ 8k แนะนำปรับอยู่ในช่วง 16k - 64k และติ๊ก Thin provision สำหรับ vm ที่เคยติดตั้งไปแล้ว จะโดนใช้ค่า volblocksize=8k (default) ต้องทำการติดตั้ง vm ใหม่ หรือใช้วิธี backup vm แล้วค่อย restore กลับมาก็ได้เหมือนกัน

zfs get volblocksize

คำสั่งเรียกดู volblocksize NAME PROPERTY VALUE SOURCE rpool volblocksize - - rpool/ROOT volblocksize - - rpool/ROOT/pve-1 volblocksize - - rpool/data volblocksize - - rpool/data/vm-101-disk-0 volblocksize 64K - rpool/data/vm-101-disk-1 volblocksize 64K -

result volblocksize หลังจากปรับจูน ZFS ตอนนี้ไม่เจอปัญหา IO สูง จนทำให้ Proxmox ค้างอีกเลย ข้อมูลทั้งหมดจากประสบการณ์ล้วนๆ อาจจะไม่ถูกต้อง 100% สามารถอ่านเพิ่มเติมได้จากข้างล่าง

See Also