การทดสอบการจัดเก็บข้อมูลคืออะไร? ประเภทต่างๆ Concepts & ตัวอย่าง
⚡ สรุปอย่างชาญฉลาด
การทดสอบการจัดเก็บข้อมูลจะตรวจสอบว่าแอปพลิเคชันเขียนข้อมูลไปยังไดเร็กทอรีที่ถูกต้องและมีพื้นที่ดิสก์เพียงพอเพื่อหลีกเลี่ยงการหยุดทำงานโดยไม่คาดคิด พร้อมทั้งวัดความเร็วในการตอบสนองของระบบจัดเก็บข้อมูลภายใต้ภาระงานที่สมจริง
การทดสอบการจัดเก็บข้อมูลคืออะไร?
การทดสอบการจัดเก็บข้อมูล การทดสอบซอฟต์แวร์แบบหนึ่งใช้เพื่อตรวจสอบว่าแอปพลิเคชันซอฟต์แวร์ที่กำลังทดสอบจัดเก็บข้อมูลที่เกี่ยวข้องลงในไดเร็กทอรีที่เหมาะสมหรือไม่ และมีพื้นที่เพียงพอเพื่อป้องกันการหยุดทำงานโดยไม่คาดคิดเนื่องจากพื้นที่ดิสก์ไม่เพียงพอ เรียกอีกอย่างว่า การทดสอบแบบอื่น การทดสอบประสิทธิภาพการจัดเก็บข้อมูล.
เทคนิคนี้จัดอยู่ในกลุ่มที่ไม่เน้นการใช้งานจริงของศาสตร์แขนงนี้ เช่นเดียวกับรูปแบบอื่นๆ ของ... การทดสอบที่ไม่เกี่ยวข้องกับการทำงานข้อความดังกล่าวไม่ได้กล่าวถึงว่าฟีเจอร์นั้นให้คำตอบที่ถูกต้องหรือไม่ แต่กล่าวถึงว่าระบบจะยังคงให้คำตอบได้ต่อไปหรือไม่เมื่อปริมาณข้อมูลและแรงกดดันด้าน I/O เพิ่มขึ้น
ทำไมต้องทดสอบการจัดเก็บข้อมูล?
การจัดเก็บข้อมูลเป็นชั้นที่ทำงานช้าที่สุดที่แอปพลิเคชันส่วนใหญ่ใช้งาน ดังนั้นจุดอ่อนในส่วนนี้จึงส่งผลกระทบต่อทุกส่วน มีเหตุผลสี่ประการที่สนับสนุนให้มีการทดสอบอย่างเป็นระบบ
- การจัดเก็บข้อมูลช้าหมายถึงเวลาตอบสนองที่ช้า การค้นหาข้อมูลที่ใช้เวลานาน และความพร้อมใช้งานของแอปพลิเคชันที่ลดลง
- การเก็บข้อมูลที่ช้าเป็นภาระเพิ่มเติมในการบำรุงรักษาโครงสร้างพื้นฐานของเซิร์ฟเวอร์
- วิธีนี้ช่วยให้ทราบขีดจำกัดพื้นที่จัดเก็บข้อมูลที่ใช้งานได้จริงของระบบก่อนการใช้งานจริง
- การเข้าใจว่าระบบตอบสนองอย่างไรเมื่อมีการเปลี่ยนหรืออัปเกรดอุปกรณ์ฮาร์ดแวร์นั้นเป็นสิ่งสำคัญ
แผนภาพด้านล่างแสดงให้เห็นถึงการทดสอบการจัดเก็บข้อมูลในบริบทนั้น กล่าวคือ แอปพลิเคชัน ระบบไฟล์ และอุปกรณ์ทางกายภาพทั้งหมดอยู่บนเส้นทางเดียวกัน และความล่าช้าใดๆ บนเส้นทางนั้นจะส่งผลกระทบต่อผู้ใช้
ประเภทของการทดสอบการจัดเก็บข้อมูล
มีการใช้แนวทางสามวิธี ซึ่งแตกต่างกันหลักๆ ตรงที่ปริมาณงานที่จำลองขึ้นนั้นคล้ายคลึงกับแอปพลิเคชันจริงมากน้อยเพียงใด
- การทดสอบแอปพลิเคชัน: การทดสอบแอปพลิเคชันด้วยตัวอย่างคำสั่งค้นหาในสภาพแวดล้อมที่คล้ายกับการใช้งานจริง
- การจำลองการใช้งาน: ทำการทดสอบโดยใช้ซอฟต์แวร์มาตรฐานที่มีลักษณะการทำงานคล้ายคลึงกับแอปพลิเคชันเป้าหมาย
- Benchmarking: ทำการทดสอบโดยใช้ซอฟต์แวร์วัดประสิทธิภาพมาตรฐานที่สร้างภาระงานจำลองที่สามารถทำซ้ำได้
วิธีแรกให้ผลลัพธ์ที่สมจริงที่สุดแต่พกพาได้ยากที่สุด ส่วนวิธีที่สามให้ตัวเลขที่สามารถเปรียบเทียบได้ระหว่างอุปกรณ์และผู้ผลิตต่างๆ แต่ไม่ได้บอกอะไรมากนักเกี่ยวกับพฤติกรรมของแอปพลิเคชันเอง
การทดสอบทั่วไป Concepts เกี่ยวข้องระหว่างการทดสอบการจัดเก็บ
แต่ละประเภททั้งสามประเภทนั้นสอดคล้องกับชุดกิจกรรมที่แตกต่างกัน ดังที่สรุปไว้ด้านล่างนี้
| ประเภทของการทดสอบการจัดเก็บข้อมูล | ตัวอย่างกิจกรรมการทดสอบการจัดเก็บข้อมูลทั่วไป |
| การทดสอบแอปพลิเคชัน | เปรียบเทียบเวลาตอบสนอง OLTP เปรียบเทียบเวลารันแบทช์ เปรียบเทียบอัตราการสตรีมแบบยั่งยืน |
| การจำลองการใช้งาน | ทดสอบ IOPS พื้นที่จัดเก็บข้อมูลสูงสุดสำหรับฐานข้อมูล ทดสอบอัตราการรับส่งข้อมูลสูงสุดของอุปกรณ์จัดเก็บข้อมูลสำหรับสภาพแวดล้อมการสตรีมข้อมูล ทดสอบความหน่วงในการจัดเก็บข้อมูลสำหรับการส่งข้อความหรือแอปพลิเคชันแบบเธรดเดียวอื่นๆ |
| เปรียบเทียบ | การทดสอบความเสียหายของข้อมูล |
ตัวชี้วัดสำคัญในการทดสอบระบบจัดเก็บข้อมูล
ผลลัพธ์ด้านการจัดเก็บข้อมูลจะถูกรายงานผ่านชุดตัวเลขจำนวนเล็กน้อย การอ่านตัวเลขใดตัวเลขหนึ่งเพียงอย่างเดียวเป็นวิธีที่ทำให้ได้ข้อสรุปที่ผิดพลาดได้เร็วที่สุด เพราะตัวเลขเหล่านี้มีความสัมพันธ์กันและเปลี่ยนแปลงไปมา
| เมตริก | มันวัดอะไร | ในจุดที่สำคัญที่สุด |
| IOPS | จำนวนการอ่านและเขียนข้อมูลต่อวินาที โดยไม่คำนึงถึงขนาด | ฐานข้อมูลธุรกรรมและการเขียนแบบสุ่มขนาดเล็ก |
| ความแอบแฝง | ระยะเวลาระหว่างการเริ่มต้นและการเสร็จสิ้นของการดำเนินการอินพุต/เอาต์พุตหนึ่งครั้ง | เส้นทางการส่งข้อความและแอปพลิเคชันแบบเธรดเดียว |
| ทางเข้า | ปริมาณข้อมูลที่ส่งต่อวินาที โดยปกติจะวัดเป็นเมกะไบต์ต่อวินาที (MB/s) | การประมวลผลแบบกลุ่ม การสำรองข้อมูล และเวิร์กโหลดแบบสตรีมมิ่ง |
| ความลึกของคิว | จำนวนคำขอค้างชำระที่ออกในเวลาเดียวกัน | การทำงานใดๆ ที่ต้องสะท้อนถึงการทำงานพร้อมกันอย่างแท้จริง |
ความลึกของคิวเป็นสิ่งที่ควรให้ความสนใจเป็นพิเศษ การส่งคำขอทีละรายการจะทำให้ได้ค่าความหน่วงแฝงของคำขอแต่ละรายการที่แม่นยำ แต่จะได้ค่า IOPS และปริมาณงานที่ต่ำกว่าความเป็นจริง ซึ่งเป็นเหตุผลว่าทำไมอุปกรณ์จึงดูช้าในระหว่างการทดสอบและเร็วในระหว่างการใช้งานจริง หรือในทางกลับกัน
วิธีดำเนินการทดสอบการจัดเก็บข้อมูล
การทดสอบการจัดเก็บข้อมูลจะมีความน่าเชื่อถือมากน้อยเพียงใดนั้นขึ้นอยู่กับสภาวะที่ทำการทดสอบ ลำดับขั้นตอนด้านล่างนี้จะช่วยให้ได้ผลลัพธ์ที่สามารถทำซ้ำได้
- ขั้นตอนที่ 1) กำหนดวัตถุประสงค์ ตัดสินใจว่าการทดสอบครั้งนี้มีจุดประสงค์เพื่อพิสูจน์ความพร้อมของฐานข้อมูล ค้นหาขีดจำกัดสูงสุดของปริมาณงาน หรือเปรียบเทียบอุปกรณ์สองเครื่อง แต่ละเป้าหมายหมายถึงภาระงานที่แตกต่างกัน และการผสมผสานเป้าหมายเหล่านั้นจะทำให้ได้ตัวเลขที่ไม่สามารถนำไปใช้ประโยชน์ได้
- ขั้นตอนที่ 2) กำหนดขนาดชุดข้อมูลให้สมจริง ชุดข้อมูลใช้งานที่มีขนาดเล็กพอที่จะเก็บไว้ในแคชได้นั้นเป็นการวัดประสิทธิภาพของแคช ไม่ใช่พื้นที่จัดเก็บข้อมูล ควรมีขนาดที่ตรงกับปริมาณข้อมูลในระบบการผลิต หรืออย่างน้อยที่สุดควรมีขนาดใหญ่กว่าขนาดของแคชอย่างมาก
- ขั้นตอนที่ 3) เลือกอัตราส่วนการอ่าน/เขียนและรูปแบบ การเข้าถึงแบบสุ่มและการเข้าถึงแบบเรียงลำดับมีพฤติกรรมที่แตกต่างกันมากบนอุปกรณ์เดียวกัน เช่นเดียวกับการผสมการอ่านและการเขียน 70/30 และการเขียนอย่างเดียวเป็นช่วงๆ ควรใช้ค่าการผสมจากข้อมูลการตรวจสอบระหว่างการใช้งานจริงมากกว่าค่าเริ่มต้น
- ขั้นตอนที่ 4) ตั้งค่าความลึกของคิวและจำนวนเธรด ตัวแปรเหล่านี้ควบคุมปริมาณการทำงานพร้อมกันที่ส่งไปยังอุปกรณ์ ดังนั้นควรบันทึกตัวแปรเหล่านี้ไว้กับทุกผลลัพธ์ — ตัวเลขที่ระบุโดยไม่มีตัวแปรเหล่านี้จะไม่สามารถทำซ้ำได้
- ขั้นตอนที่ 5) ล้างแคชและวอร์มเครื่อง ล้างแคชของเซิร์ฟเวอร์และอุปกรณ์ระหว่างการทำงานแต่ละครั้ง จากนั้นให้ละทิ้งช่วงเวลาแรก เพื่อเปรียบเทียบตัวเลขในสภาวะคงที่แทนที่จะเป็นตัวเลขในช่วงแรก
- ขั้นตอนที่ 6) วิ่งให้นานพอ การใช้งานระยะสั้นจะซ่อนปัญหาการเขียนเกินขีดจำกัด (write-cliff) ที่เกิดขึ้นเมื่อ SSD ใช้พื้นที่เขียนจนหมด แต่การใช้งานต่อเนื่องเป็นเวลานานจะทำให้เห็นปัญหานี้ชัดเจนขึ้น
- ขั้นตอนที่ 7) ตรวจสอบระบบทั้งหมด บันทึกการใช้งานโปรเซสเซอร์ หน่วยความจำ และเครือข่ายควบคู่ไปกับตัวนับพื้นที่จัดเก็บข้อมูล เพื่อป้องกันไม่ให้ปัญหาคอขวดในส่วนอื่นถูกเข้าใจผิดว่าเป็นข้อจำกัดด้านพื้นที่จัดเก็บข้อมูล
- ขั้นตอนที่ 8) ทำซ้ำและเปรียบเทียบ เรียกใช้การกำหนดค่าเดียวกันมากกว่าหนึ่งครั้งและเก็บบันทึกไว้ การเปลี่ยนแปลงประสิทธิภาพระหว่างการสร้างแต่ละครั้งจะเห็นได้ชัดเจนก็ต่อเมื่อเปรียบเทียบกับค่าพื้นฐานที่บันทึกไว้เท่านั้น
เนื่องจากหลักการเดียวกันนี้ใช้ได้กับการวัดใดๆ ที่ขับเคลื่อนด้วยภาระ ดังนั้นการทดสอบเหล่านี้จึงมักวางแผนร่วมกันกับ การทดสอบประสิทธิภาพ และกำหนดไว้ก่อนที่จะทำการตรึงเวอร์ชันทดสอบสุดท้าย
เครื่องมือทดสอบการจัดเก็บข้อมูล
เครื่องมือแบ่งออกเป็นสองประเภท และทีมส่วนใหญ่ต้องการทั้งสองประเภท
- เครื่องกำเนิดอินพุต/เอาต์พุตสังเคราะห์ ยูทิลิตี้เช่น FiOโปรแกรม Iometer และ sysbench จะสร้างภาระงานที่อธิบายไว้อย่างแม่นยำ ไม่ว่าจะเป็นขนาดบล็อก อัตราส่วนการอ่าน/เขียน ความลึกของคิว และระยะเวลา ดังนั้นจึงสามารถทำซ้ำการทำงานได้อย่างแม่นยำบนอุปกรณ์อื่น
- เครื่องมือโหลดระดับแอปพลิเคชัน ผู้ขับขี่เช่น JMeter ทดสอบการทำงานของแอปพลิเคชันโดยตรง เพื่อให้ระบบจัดเก็บข้อมูลเห็นรูปแบบการเข้าถึงแบบเดียวกับที่ผู้ใช้จริงสร้างขึ้น รวมถึงแผนการสืบค้นและพฤติกรรมของดัชนี ซึ่งเครื่องมือจำลองไม่สามารถจำลองได้
Operaตัวนับระบบจัดเก็บข้อมูลช่วยเติมเต็มภาพรวม ไม่ว่าเครื่องมือใดจะสร้างภาระ ข้อมูลการจัดเก็บข้อมูลจะต้องถูกอ่านควบคู่ไปกับตัวนับโปรเซสเซอร์ หน่วยความจำ และเครือข่าย ซึ่งมีเทคนิคการทดสอบการจัดเก็บข้อมูลหลายวิธี รวมถึง การทดสอบมาตรฐาน และ การทดสอบปริมาตรต้องอาศัยมุมมองแบบองค์รวม (full-stack view) เพื่อตีความผลลัพธ์ได้อย่างถูกต้อง
ข้อผิดพลาดขณะทำการทดสอบการจัดเก็บข้อมูล
ผลลัพธ์การจัดเก็บที่ไม่ถูกต้องส่วนใหญ่ tracซึ่งหมายถึงจำนวนข้อผิดพลาดที่สามารถหลีกเลี่ยงได้ลดลง
- การตรวจสอบประสิทธิภาพเซิร์ฟเวอร์ผิดเครื่อง ทำให้ตัวเลขที่ได้นั้นแสดงถึงเครื่องที่ไม่ใช่เครื่องที่กำลังทดสอบอยู่
- การเปรียบเทียบอุปกรณ์จัดเก็บข้อมูลโดยไม่ล้างแคชของเซิร์ฟเวอร์ก่อน ซึ่งเป็นการวัดหน่วยความจำแทนที่จะเป็นดิสก์
- การลืมตรวจสอบการใช้งานโปรเซสเซอร์ระหว่างการทดสอบ ทำให้ปัญหาคอขวดที่เกิดจากโปรเซสเซอร์ถูกซ่อนไว้ภายใต้ปัญหาที่ดูเหมือนเกิดจากพื้นที่จัดเก็บข้อมูล
- ทดสอบประสิทธิภาพการจัดเก็บข้อมูลด้วยคำสั่งคัดลอกไฟล์ ซึ่งเป็นการทำงานแบบเธรดเดียว ใช้แคชช่วย และไม่สามารถทำซ้ำได้

