กลับ

การตั้งค่าคอนโทรลเลอร์ดิสก์และแคช

คอนโทรลเลอร์ดิสก์และแคชของ Proxmox

หน้านี้ให้ข้อมูลเกี่ยวกับการตั้งค่าที่เกี่ยวข้องกับดิสก์เมื่อกำหนดค่าเครื่องเสมือน รวมถึงข้อพิจารณาที่สำคัญและข้อควรระวัง

เกี่ยวกับคอนโทรลเลอร์ SCSI

เมื่อสร้าง VM ใหม่และเลือกคอนโทรลเลอร์ SCSI ตัวเลือกเริ่มต้นคือ “VirtIO Single” ซึ่งหมายความว่าหากมีการสร้างดิสก์เสมือนหลายตัว (ตามที่อธิบายในส่วนถัดไป) ดิสก์ทั้งหมดจะดูเหมือนเชื่อมต่อกับคอนโทรลเลอร์ตัวเดียว การตั้งค่านี้ช่วยเพิ่มประสิทธิภาพการใช้หน่วยความจำและอุปกรณ์ภายในเครื่องเสมือน

การเลือก “VirtIO SCSI” อนุญาตให้กำหนดดิสก์เสมือนแต่ละตัวไปยังบัส SCSI แยกต่างหาก ซึ่งต้องการพื้นที่ไดรเวอร์และหน่วยความจำเพิ่มเติม อย่างไรก็ตาม การกระจายการดำเนินการ I/O สามารถปรับปรุงประสิทธิภาพภายใต้ภาระงานบางประเภท

การจำลองการ์ด SCSI ทางกายภาพอื่นๆ โดยทั่วไปไม่แนะนำ

เกี่ยวกับคอนโทรลเลอร์ดิสก์

IDE (หรือที่รู้จักกันในชื่อ ATA) ถูกกำหนดขึ้นในปี 1988 ซึ่งรับประกันความเข้ากันได้กับระบบปฏิบัติการเกือบทั้งหมด สำหรับระบบปฏิบัติการที่ออกก่อนปี 2003 การใช้ IDE อาจเป็นตัวเลือกที่ดีที่สุด ในขณะที่ IDE ทางกายภาพมีความเร็วสูงสุดที่ 133MB/วินาที IDE เสมือนไม่มีข้อจำกัดนี้เว้นแต่ระบบปฏิบัติการจะบังคับใช้ อย่างไรก็ตาม IDE ไม่รองรับการสลับแบบร้อน (hot-swapping) ซึ่งหมายความว่าไม่สามารถถอดอุปกรณ์ออกได้ขณะที่ VM ทำงานอยู่

SATA เหมาะสำหรับระบบปฏิบัติการที่ออกหลังปี 2003 และเป็นตัวเลือกที่เข้ากันได้มากที่สุดสำหรับระบบปฏิบัติการสมัยใหม่ ในทางกายภาพ มันเป็นวิวัฒนาการของ IDE ด้วยการส่งข้อมูลแบบอนุกรม โดยให้ความเร็วสูงสุดถึง 6Gbps (ประมาณ 600MB/วินาที) อย่างไรก็ตาม ในสภาพแวดล้อมเสมือน ไม่มีข้อจำกัดด้านความเร็วโดยธรรมชาติเว้นแต่ระบบปฏิบัติการเกสต์จะกำหนด

VirtIO SCSI และ VirtIO SCSI Single ให้การเข้าถึงดิสก์ที่เร็วที่สุด อย่างไรก็ตาม พวกเขาต้องการให้ระบบปฏิบัติการเกสต์มีไดรเวอร์แบบพาราเวอร์ชวลไลซ์ (para-virtualized drivers) หากระบบไม่มีดิสก์ IDE/SATA กระบวนการติดตั้ง OS จะล้มเหลวเว้นแต่จะติดตั้งไดรเวอร์ VirtIO SCSI ดิสทริบิวชัน Linux มีไดรเวอร์นี้ตั้งแต่ประมาณปี 2012, FreeBSD ตั้งแต่ปี 2014 และสำหรับ Windows OS ต้องจัดหาไฟล์ ISO เพิ่มเติมที่มีไดรเวอร์ VirtIO ระหว่างการติดตั้ง

เกี่ยวกับแคชดิสก์

การตั้งค่าแคชดิสก์เกี่ยวข้องกับการแลกเปลี่ยนระหว่างความสมบูรณ์ของข้อมูลและประสิทธิภาพ

คุณสมบัติ writethrough directsync none writeback unsafe
การใช้แคช ใช้แคชหน้า (ดีต่อการอ่าน) ไม่ใช้แคช ไม่ใช้แคช ใช้แคชหน้า ใช้แคชหน้า
การออก fsync ออกทุกครั้งที่เขียน ออกทุกครั้งที่เขียน ไม่ออก ออกด้วยความล่าช้า ไม่ออก
กระบวนการเขียน เขียนลงแคช แล้วล้างไปยังดิสก์ทันที เขียนลงดิสก์โดยตรงและล้างทันที เขียนลงดิสก์โดยตรงโดยไม่ล้าง เขียนลงแคชและล้างด้วยความล่าช้า เขียนลงแคชโดยไม่ล้าง
ประสิทธิภาพการอ่าน สูง (ใช้แคช) ต่ำ (ขึ้นอยู่กับดิสก์) ต่ำ (ขึ้นอยู่กับดิสก์) สูง (ใช้แคช) สูง (ใช้แคช)
ประสิทธิภาพการเขียน ปานกลาง (ช่วยด้วยแคช) ต่ำ (ไม่มีแคช) ปานกลาง (ไม่มีแคช) สูง (ล้างแคชล่าช้า) สูงมาก (ล้างแคชล่าช้า)
ความสมบูรณ์ของข้อมูล สูง สูงมาก ปานกลาง (ขึ้นอยู่กับดิสก์) ต่ำ (เขียนล่าช้า) ต่ำมาก (ความเสี่ยงสูญหายข้อมูลสูง)
กรณีใช้งาน ระบบที่เน้นประสิทธิภาพการอ่านและความสมบูรณ์ ระบบที่ต้องการความสมบูรณ์ของข้อมูลสูงสุด ระบบที่เน้นประสิทธิภาพพร้อมความสมบูรณ์ปานกลาง ระบบที่เขียนหนักโดยสมดุลระหว่างประสิทธิภาพและความสมบูรณ์ ระบบที่เน้นประสิทธิภาพโดยยอมรับการสูญหายข้อมูล

TRIM (Discard)

คำสั่ง Discard แจ้งระบบจัดเก็บข้อมูลว่าบล็อกบางส่วนไม่จำเป็นอีกต่อไป

เดิมทีถูกนำมาใช้สำหรับการปรับระดับการสึกหรอของ SSD ระบบปฏิบัติการบางตัวอาจต้องการการจำลอง SSD เพื่อรองรับ TRIM นอกเหนือจาก SSD แล้ว TRIM ยังช่วยในการลบอย่างปลอดภัยโดยการลบคีย์เข้ารหัสแทนการเขียนทับข้อมูล

ในสภาพแวดล้อมคลาวด์ส่วนตัว TRIM ช่วยให้ที่เก็บข้อมูลแบบ thin-provisioned สามารถเรียกคืนพื้นที่ได้ โดยปกติ เมื่อที่เก็บถูกใช้งานโดย VM แม้แต่ข้อมูลที่ถูกลบไปแล้วก็ยังคงถูกจัดสรรไว้ที่ระดับที่เก็บ

fstrim -v /mountpoint

สำหรับการดำเนินการ TRIM แบบเรียลไทม์ ให้เมานต์ด้วยตัวเลือก discard:

mount -o discard,remount /

IO Thread

การเปิดใช้งาน IO threads ใน VirtIO SCSI จะถ่ายโอนการดำเนินการเขียนดิสก์ไปยังเธรดแยกต่างหากจากเธรดหลักของระบบปฏิบัติการ

การตั้งค่านี้ต้องการทรัพยากร CPU เพิ่มเติม แต่ช่วยลดความหน่วง โดยเฉพาะใน VM ที่มีดิสก์เสมือนหลายตัวที่จัดการการอ่าน/เขียนพร้อมกัน