เทคโนโลยีสำหรับการปรับปรุงประสิทธิภาพโดยใช้ SSD และใช้กันอย่างแพร่หลายในระบบจัดเก็บข้อมูลได้รับการคิดค้นมานานแล้ว ประการแรกคือการใช้ SSD เป็นพื้นที่จัดเก็บข้อมูลซึ่งมีประสิทธิภาพ 100% แต่มีราคาแพง ดังนั้นจึงใช้เทคโนโลยีการเหนื่อยและการแคช โดยที่ SSD ใช้สำหรับข้อมูลที่ได้รับความนิยมสูงสุด (“ร้อน”) เท่านั้น การแบ่งระดับเป็นสิ่งที่ดีสำหรับสถานการณ์การใช้ข้อมูล "ยอดนิยม" ในระยะยาว (วัน-สัปดาห์) ในทางกลับกัน การแคชมีไว้สำหรับการใช้งานระยะสั้น (นาที-ชั่วโมง) ตัวเลือกทั้งสองนี้ถูกนำมาใช้ในระบบจัดเก็บข้อมูล
สาระสำคัญของเทคโนโลยีแคช SSD คือการใช้ SSD เป็นแคชระดับกลางระหว่างฮาร์ดไดรฟ์และ RAM ของคอนโทรลเลอร์ แน่นอนว่าประสิทธิภาพของ SSD นั้นต่ำกว่าประสิทธิภาพของแคชของคอนโทรลเลอร์ แต่ปริมาณนั้นมีลำดับความสำคัญที่สูงกว่า ดังนั้นเราจึงได้รับการประนีประนอมระหว่างความเร็วและปริมาตร
บ่งชี้ในการใช้แคช SSD สำหรับการอ่าน:
- ความเหนือกว่าของการดำเนินการอ่านมากกว่าการดำเนินการเขียน (ส่วนใหญ่มักเป็นเรื่องปกติสำหรับฐานข้อมูลและเว็บแอปพลิเคชัน)
- การมีอยู่ของคอขวดในรูปแบบของประสิทธิภาพของอาเรย์ฮาร์ดไดรฟ์
- จำนวนข้อมูลที่ต้องการน้อยกว่าขนาดของแคช SSD
ข้อบ่งชี้สำหรับการใช้แคช SSD แบบอ่าน+เขียนจะเหมือนกัน ยกเว้นลักษณะของการดำเนินการ - ประเภทผสม (เช่น ไฟล์เซิร์ฟเวอร์)
ผู้จำหน่ายอุปกรณ์จัดเก็บข้อมูลส่วนใหญ่ใช้แคช SSD แบบอ่านอย่างเดียวในผลิตภัณฑ์ของตน ความแตกต่างพื้นฐาน
แคช SSD ใน XCubeSAN ได้รับการปรับใช้ทางกายภาพในรูปแบบของพูลแคช SSD ที่แยกจากกัน อาจมีได้ถึงสี่รายการในระบบ แน่นอนว่าแต่ละพูลใช้ชุด SSD ของตัวเอง และในคุณสมบัติของดิสก์เสมือนแล้วเราจะพิจารณาว่าจะใช้พูลแคชหรือไม่และอันไหน การเปิดใช้งานและปิดใช้งานการใช้แคชสำหรับวอลุ่มสามารถทำได้ทางออนไลน์โดยไม่ต้องหยุด I/O คุณยังสามารถเพิ่ม SSD ลงในพูลได้ทันทีและลบออกจากที่นั่น เมื่อสร้างแคชพูล SSD คุณต้องเลือกโหมดที่จะใช้งาน: อ่านอย่างเดียวหรืออ่าน+เขียน องค์กรทางกายภาพของมันขึ้นอยู่กับสิ่งนี้ เนื่องจากสามารถมีพูลแคชได้หลายพูล ฟังก์ชันการทำงานอาจแตกต่างกัน (นั่นคือ ระบบสามารถมีทั้งพูลแคชแบบอ่านและอ่าน+เขียนในเวลาเดียวกัน)
หากใช้แคชพูลแบบอ่านอย่างเดียว แคชพูลนั้นสามารถประกอบด้วย 1-8 SSD ดิสก์ไม่จำเป็นต้องมีความจุเท่ากันและผู้ขายรายเดียวกัน เนื่องจากดิสก์ถูกรวมเข้าไว้ในโครงสร้าง NRAID+ SSD ทั้งหมดในพูลถูกแชร์ ระบบจะพยายามขนานคำขอขาเข้าระหว่าง SSD ทั้งหมดอย่างอิสระเพื่อให้ได้ประสิทธิภาพสูงสุด หาก SSD ตัวใดตัวหนึ่งล้มเหลว จะไม่มีอะไรเลวร้ายเกิดขึ้น เพราะแคชจะมีเพียงสำเนาของข้อมูลที่จัดเก็บไว้ในอาร์เรย์ของฮาร์ดไดรฟ์ เพียงแต่ปริมาณแคช SSD ที่มีอยู่จะลดลง (หรือกลายเป็นศูนย์หากใช้แคช SSD ดั้งเดิมจากไดรฟ์เดียว)
หากใช้แคชสำหรับการดำเนินการอ่าน + เขียน จำนวน SSD ในพูลควรเป็นจำนวนเท่าของสอง เนื่องจากเนื้อหาจะถูกมิเรอร์บนคู่ของไดรฟ์ (ใช้โครงสร้าง NRAID 1+) จำเป็นต้องทำซ้ำแคชเนื่องจากอาจมีข้อมูลที่ยังไม่ได้เขียนลงในฮาร์ดไดรฟ์ และในกรณีนี้ ความล้มเหลวของ SSD จากพูลแคชอาจทำให้ข้อมูลสูญหายได้ ในกรณีของ NRAID 1+ ความล้มเหลวของ SSD จะทำให้แคชถูกถ่ายโอนไปยังสถานะอ่านอย่างเดียว โดยข้อมูลที่ยังไม่ได้เขียนจะถูกทิ้งลงในอาเรย์ของฮาร์ดไดรฟ์ หลังจากเปลี่ยน SSD ที่ชำรุด แคชจะกลับสู่โหมดการทำงานดั้งเดิม อย่างไรก็ตาม เพื่อความปลอดภัยที่มากขึ้น คุณสามารถกำหนด Hot Spares เฉพาะให้กับแคชการอ่านและเขียนได้
เมื่อใช้ฟังก์ชันการแคช SSD ใน XCubeSAN มีข้อกำหนดหลายประการสำหรับจำนวนหน่วยความจำของตัวควบคุมการจัดเก็บข้อมูล: ยิ่งหน่วยความจำระบบมากเท่าใด พูลแคชก็จะยิ่งใหญ่ขึ้นเท่านั้น
ต่างจากผู้ผลิตระบบจัดเก็บข้อมูลส่วนใหญ่ที่เสนอตัวเลือกในการเปิด/ปิดใช้งานแคช SSD เท่านั้น QSAN มีตัวเลือกมากกว่า โดยเฉพาะอย่างยิ่ง คุณสามารถเลือกโหมดการทำงานของแคชได้ ขึ้นอยู่กับลักษณะของโหลด มีเทมเพลตที่กำหนดไว้ล่วงหน้าสามแบบที่ใกล้เคียงที่สุดในการดำเนินการกับบริการที่เกี่ยวข้อง: ฐานข้อมูล ระบบไฟล์ บริการเว็บ นอกจากนี้ ผู้ดูแลระบบสามารถสร้างโปรไฟล์ของตนเองได้โดยการตั้งค่าพารามิเตอร์ที่ต้องการ:
- ขนาดบล็อก (ขนาดบล็อกแคช) – 1/2/4 MB
- จำนวนคำขอในการอ่านบล็อกเพื่อคัดลอกไปยังแคช (เกณฑ์การเติมเมื่ออ่าน) – 1..4
- จำนวนคำขอในการเขียนบล็อกเพื่อคัดลอกไปยังแคช (เกณฑ์การเติมเมื่อเขียน) – 0..4
โปรไฟล์สามารถเปลี่ยนแปลงได้ทันที แต่แน่นอนว่าด้วยเนื้อหาของการรีเซ็ตแคชและ "การอุ่นเครื่อง" ใหม่
เมื่อพิจารณาถึงหลักการทำงานของแคช SSD เราสามารถเน้นการทำงานหลักเมื่อทำงานกับแคชได้:
อ่านข้อมูลเมื่อไม่อยู่ในแคช อ่านข้อมูลเมื่อมีอยู่ในแคช การเขียนข้อมูลเมื่อใช้แคชการอ่าน การเขียนข้อมูลเมื่อใช้แคชการอ่าน + เขียน
อ่านข้อมูลเมื่อไม่อยู่ในแคช
- คำขอจากโฮสต์มาถึงตัวควบคุม
- เนื่องจากสิ่งที่ร้องขอไม่ได้อยู่ในแคช SSD จึงถูกอ่านจากฮาร์ดไดรฟ์
- ข้อมูลการอ่านจะถูกส่งไปยังโฮสต์ ในเวลาเดียวกัน จะมีการตรวจสอบเพื่อดูว่าบล็อกเหล่านี้ "ร้อน" หรือไม่
- หากใช่ ระบบจะคัดลอกไปยังแคช SSD เพื่อใช้งานต่อไป
อ่านข้อมูลเมื่อมีอยู่ในแคช
- คำขอจากโฮสต์มาถึงตัวควบคุม
- เนื่องจากข้อมูลที่ร้องขออยู่ในแคช SSD จึงถูกอ่านจากที่นั่น
- ข้อมูลการอ่านจะถูกส่งไปยังโฮสต์
การเขียนข้อมูลเมื่อใช้แคชการอ่าน
- คำขอเขียนจากโฮสต์มาถึงคอนโทรลเลอร์
- ข้อมูลถูกเขียนลงในฮาร์ดไดรฟ์
- การตอบสนองที่ระบุว่าการบันทึกสำเร็จจะถูกส่งกลับไปยังโฮสต์
- ในเวลาเดียวกัน จะมีการตรวจสอบว่าบล็อกนั้น "ร้อน" หรือไม่ (มีการเปรียบเทียบพารามิเตอร์ Populate-on-Write Threshold) หากใช่ ระบบจะคัดลอกไปยังแคช SSD เพื่อใช้ในภายหลัง
การเขียนข้อมูลเมื่อใช้แคชอ่าน+เขียน
- คำขอเขียนจากโฮสต์มาถึงคอนโทรลเลอร์
- ข้อมูลถูกเขียนลงในแคช SSD
- การตอบสนองที่ระบุว่าการบันทึกสำเร็จจะถูกส่งกลับไปยังโฮสต์
- ข้อมูลจากแคช SSD ถูกเขียนลงในฮาร์ดไดรฟ์ในพื้นหลัง
ดำเนินการเช็คอิน
แท่นทดสอบ
เซิร์ฟเวอร์ 2 เครื่อง (CPU: 2 x Xeon E5-2620v3 2.4Hz / RAM: 32GB) เชื่อมต่อกันด้วยสองพอร์ตผ่าน Fibre Channel 16G โดยตรงกับระบบจัดเก็บข้อมูล XCubeSAN XS5224D (RAM 16GB/ตัวควบคุม)
เราใช้ 16 x Seagate Constellation ES, ST500NM0001, 500GB, SAS 6Gb/s, รวมกันใน RAID5 (15+1) สำหรับอาร์เรย์ข้อมูลและ 8 x HGST Ultrastar SSD800MH.B, HUSMH8010BSS200, 100GB, SAS 12Gb/s เป็นแคช
มีการสร้างโวลุ่ม 2 เล่ม: หนึ่งเล่มสำหรับแต่ละเซิร์ฟเวอร์
ทดสอบ 1. แคช SSD แบบอ่านอย่างเดียวจาก 1-8 SSD
แคช SSD
- ประเภท I/O: การปรับแต่ง
- ขนาดบล็อกแคช: 4MB
- เติมเกณฑ์เมื่ออ่าน: 1
- เกณฑ์เติมเมื่อเขียน: 0
รูปแบบ I/O
- เครื่องมือ: IOmeter V1.1.0
- คนงาน: 1
- ยอดคงค้าง(ความลึกของคิว): 128
- ข้อกำหนดการเข้าถึง: 4KB, อ่าน 100%, สุ่ม 100%
ตามทฤษฎีแล้ว ยิ่ง SSD อยู่ในพูลแคชมากเท่าใด ประสิทธิภาพก็ยิ่งสูงขึ้นเท่านั้น ในทางปฏิบัติสิ่งนี้ได้รับการยืนยันแล้ว การเพิ่มขึ้นอย่างมีนัยสำคัญของจำนวน SSD ที่มีปริมาณน้อยเท่านั้นไม่ทำให้เกิดผลกระทบจากการระเบิด
ทดสอบ 2. แคช SSD ในโหมดอ่าน + เขียนด้วย 2-8 SSD
แคช SSD
- ประเภท I/O: การปรับแต่ง
- ขนาดบล็อกแคช: 4MB
- เติมเกณฑ์เมื่ออ่าน: 1
- เกณฑ์เติมเมื่อเขียน: 1
รูปแบบ I/O
- เครื่องมือ: IOmeter V1.1.0
- คนงาน: 1
- ยอดคงค้าง(ความลึกของคิว): 128
- ข้อกำหนดการเข้าถึง: 4KB, เขียน 100%, สุ่ม 100%
ผลลัพธ์เดียวกัน: ประสิทธิภาพที่เพิ่มขึ้นอย่างรวดเร็วและการปรับขนาดตามจำนวน SSD ที่เพิ่มขึ้น
ในการทดสอบทั้งสอง จำนวนข้อมูลการทำงานน้อยกว่าขนาดแคชทั้งหมด ดังนั้นเมื่อเวลาผ่านไป บล็อกทั้งหมดจึงถูกคัดลอกไปยังแคช และในความเป็นจริงงานนี้ได้ดำเนินการโดยใช้ SSD แล้วในทางปฏิบัติโดยไม่ส่งผลกระทบต่อฮาร์ดไดรฟ์ วัตถุประสงค์ของการทดสอบเหล่านี้คือเพื่อแสดงให้เห็นอย่างชัดเจนถึงประสิทธิภาพในการอุ่นเครื่องแคชและปรับขนาดประสิทธิภาพตามจำนวน SSD
ตอนนี้กลับมาที่โลกและตรวจสอบสถานการณ์ที่สมจริงมากขึ้น เมื่อปริมาณข้อมูลมีขนาดใหญ่กว่าขนาดแคช เพื่อให้การทดสอบผ่านการทดสอบในระยะเวลาที่เหมาะสม (ระยะเวลา "อุ่นเครื่อง" ของแคชจะเพิ่มขึ้นอย่างมากเมื่อขนาดวอลุ่มเพิ่มขึ้น) เราจะจำกัดขนาดวอลุ่มไว้ที่ 120GB
ทดสอบ 3. การจำลองฐานข้อมูล
แคช SSD
- ประเภท I/O: ฐานข้อมูล
- ขนาดบล็อกแคช: 1MB
- เติมเกณฑ์เมื่ออ่าน: 2
- เกณฑ์เติมเมื่อเขียน: 1
รูปแบบ I/O
- เครื่องมือ: IOmeter V1.1.0
- คนงาน: 1
- ยอดคงค้าง(ความลึกของคิว): 128
- ข้อกำหนดการเข้าถึง: 8KB, อ่าน 67%, สุ่ม 100%
คำตัดสิน
แน่นอนว่าข้อสรุปที่ชัดเจนคือประสิทธิภาพที่ดีของการใช้แคช SSD เพื่อปรับปรุงประสิทธิภาพของระบบจัดเก็บข้อมูล นำไปใช้กับ
คิวซาน XCubeSAN ข้อความนี้มีผลใช้บังคับอย่างสมบูรณ์: ฟังก์ชันการแคช SSD ได้รับการใช้งานอย่างสมบูรณ์แบบ สิ่งนี้เกี่ยวข้องกับการรองรับโหมดอ่านและอ่าน + เขียน การตั้งค่าที่ยืดหยุ่นสำหรับทุกสถานการณ์การใช้งาน รวมถึงประสิทธิภาพโดยรวมของระบบโดยรวม ดังนั้นด้วยต้นทุนที่สมเหตุสมผลมาก (ราคาลิขสิทธิ์เทียบได้กับราคา 1-2 SSD) คุณสามารถเพิ่มประสิทธิภาพโดยรวมได้อย่างมาก
ที่มา: will.com