แนวทางการ tuning ZFS Proxmox
จากบทความที่แล้ว ได้พูดถึงการปรับ limit ZFS ARC ส่วนบทความนี้จะเป็นการ tuning performance หลังจากใช้งาน ZFS Storage แล้วเจอปัญหาหลักๆคือ เรื่องใช้งาน IO สูงผิดปกติ จนตัว Proxmox ค้างบ่อยครั้ง
ถ้าติดตั้ง Proxmox ด้วยระบบ ZFS จะมี pool เริ่มต้นมาให้คือ rpool ซึ่งเราจะสามารถใช้งานได้ทั้ง local และ local-zfs สำหรับเป็น storage vm, container
Tuning Performance ZFS
- compression = lz4
- atime = off
- xattr = sa
- recordsize = 16K - 64K
- volblocksize = 16k - 64k
compression แนะนำเป็น lz4 จะใช้งาน cpu นิดนึง
zfs set compression=lz4 rpool
atime แนะนำเป็น off ระบบไม่ update time ทุกครั้งที่มีการอ่านไฟล์
zfs set atime=off rpool
xattr แนะนำเป็น sa (System Attributes) โดย attributes จะถูกเก็บไว้ใน inodes
zfs set xattr=sa rpool
recordsize ค่าเริ่มต้นของ proxmox คือ 128K แนะนำปรับอยู่ในช่วง 16K - 64K ซึ่งจะมีผลดีต่อความเร็ว IOPs ของการ random reads และ writes
zfs set recordsize=64K rpool
สุดท้ายคือ volblocksize เข้าไปที่ Proxmox UI (Datacenter -> Storage -> local-zfs -> Edit) โดยค่าเริ่มต้นอยู่ที่ 8k แนะนำปรับอยู่ในช่วง 16k - 64k และติ๊ก Thin provision
สำหรับ vm ที่เคยติดตั้งไปแล้ว จะโดนใช้ค่า volblocksize=8k (default) ต้องทำการติดตั้ง vm ใหม่ หรือใช้วิธี backup vm แล้วค่อย restore กลับมาก็ได้เหมือนกัน
หลังจากปรับจูน ZFS ตอนนี้ไม่เจอปัญหา IO สูง จนทำให้ Proxmox ค้างอีกเลย ข้อมูลทั้งหมดจากประสบการณ์ล้วนๆ อาจจะไม่ถูกต้อง 100% สามารถอ่านเพิ่มเติมได้จากข้างล่าง