กลับ
การตั้งค่าคอนโทรลเลอร์ดิสก์และแคช
คอนโทรลเลอร์ดิสก์และแคชของ 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 ที่มีดิสก์เสมือนหลายตัวที่จัดการการอ่าน/เขียนพร้อมกัน