การทดสอบการจัดเก็บข้อมูลคืออะไร? ประเภทต่างๆ Concepts & ตัวอย่าง

⚡ สรุปอย่างชาญฉลาด

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

  • 💾 เรียกอีกอย่างว่า: การทดสอบประสิทธิภาพการจัดเก็บข้อมูล เนื่องจากความเร็วมีความสำคัญพอๆ กับการจัดวางที่ถูกต้อง
  • ⚠️ ทำไมมันเรื่อง: การจัดเก็บข้อมูลที่ช้าส่งผลให้เวลาตอบสนองช้าลง การค้นหาข้อมูลใช้เวลานาน และความพร้อมใช้งานของแอปพลิเคชันลดลง
  • 🧩 สามประเภท: การทดสอบแอปพลิเคชัน การจำลองแอปพลิเคชัน และการวัดประสิทธิภาพ แต่ละอย่างมีกิจกรรมเฉพาะของตนเอง
  • 📏 ตัวชี้วัดหลัก: ค่า IOPS, ความหน่วง, ปริมาณงาน และความลึกของคิว ควรพิจารณาควบคู่กันเสมอ ไม่ควรพิจารณาแยกกัน
  • 🧪 วิธีการทำงาน: กำหนดวัตถุประสงค์ กำหนดขนาดชุดข้อมูล เลือกอัตราส่วนการอ่าน/เขียนที่สมจริง จากนั้นค่อยๆ เพิ่มภาระงาน
  • 🛠️ เครื่องมือ: ตัวสร้าง I/O สังเคราะห์จะสร้างตัวเลขที่สม่ำเสมอ ซึ่งคำสั่งคัดลอกไฟล์ไม่สามารถทำได้
  • ???? ข้อผิดพลาดทั่วไป: กำลังตรวจสอบเซิร์ฟเวอร์ผิดเครื่อง ข้ามไปping การล้างแคชและการไม่สนใจการใช้งานโปรเซสเซอร์

บทแนะนำการทดสอบระบบจัดเก็บข้อมูล ครอบคลุมประเภท แนวคิด และข้อผิดพลาดที่พบบ่อย

การทดสอบการจัดเก็บข้อมูลคืออะไร?

การทดสอบการจัดเก็บข้อมูล การทดสอบซอฟต์แวร์แบบหนึ่งใช้เพื่อตรวจสอบว่าแอปพลิเคชันซอฟต์แวร์ที่กำลังทดสอบจัดเก็บข้อมูลที่เกี่ยวข้องลงในไดเร็กทอรีที่เหมาะสมหรือไม่ และมีพื้นที่เพียงพอเพื่อป้องกันการหยุดทำงานโดยไม่คาดคิดเนื่องจากพื้นที่ดิสก์ไม่เพียงพอ เรียกอีกอย่างว่า การทดสอบแบบอื่น การทดสอบประสิทธิภาพการจัดเก็บข้อมูล.

เทคนิคนี้จัดอยู่ในกลุ่มที่ไม่เน้นการใช้งานจริงของศาสตร์แขนงนี้ เช่นเดียวกับรูปแบบอื่นๆ ของ... การทดสอบที่ไม่เกี่ยวข้องกับการทำงานข้อความดังกล่าวไม่ได้กล่าวถึงว่าฟีเจอร์นั้นให้คำตอบที่ถูกต้องหรือไม่ แต่กล่าวถึงว่าระบบจะยังคงให้คำตอบได้ต่อไปหรือไม่เมื่อปริมาณข้อมูลและแรงกดดันด้าน 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ซึ่งหมายถึงจำนวนข้อผิดพลาดที่สามารถหลีกเลี่ยงได้ลดลง

  • การตรวจสอบประสิทธิภาพเซิร์ฟเวอร์ผิดเครื่อง ทำให้ตัวเลขที่ได้นั้นแสดงถึงเครื่องที่ไม่ใช่เครื่องที่กำลังทดสอบอยู่
  • การเปรียบเทียบอุปกรณ์จัดเก็บข้อมูลโดยไม่ล้างแคชของเซิร์ฟเวอร์ก่อน ซึ่งเป็นการวัดหน่วยความจำแทนที่จะเป็นดิสก์
  • การลืมตรวจสอบการใช้งานโปรเซสเซอร์ระหว่างการทดสอบ ทำให้ปัญหาคอขวดที่เกิดจากโปรเซสเซอร์ถูกซ่อนไว้ภายใต้ปัญหาที่ดูเหมือนเกิดจากพื้นที่จัดเก็บข้อมูล
  • ทดสอบประสิทธิภาพการจัดเก็บข้อมูลด้วยคำสั่งคัดลอกไฟล์ ซึ่งเป็นการทำงานแบบเธรดเดียว ใช้แคชช่วย และไม่สามารถทำซ้ำได้

คำถามที่พบบ่อย

การทดสอบปริมาตร การทดสอบการจัดเก็บข้อมูลจะเพิ่มปริมาณข้อมูลที่แอปพลิเคชันจัดเก็บและสังเกตพฤติกรรมที่ลดลง ส่วนการทดสอบการจัดเก็บข้อมูลจะมุ่งเป้าไปที่ชั้นอุปกรณ์ด้านล่าง โดยวัดความเร็วในการเขียนและอ่านข้อมูลกลับมา

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

ตัวชี้วัดต่างๆ ยังคงเหมือนเดิม แต่จะมีการเพิ่มขีดจำกัด IOPS ที่กำหนดไว้ เครดิตการใช้งานแบบเร่งด่วน และเครือข่ายข้างเคียงที่ก่อให้เกิดเสียงรบกวน ควรใช้งานต่อเนื่องนานพอจนกว่าเครดิตการใช้งานแบบเร่งด่วนจะหมดลง มิเช่นนั้นตัวเลขที่วัดได้จะสะท้อนถึงค่าที่อนุญาตชั่วคราว ไม่ใช่ค่าในสภาวะคงที่

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

นักบิน GitHub โปรแกรมนี้สร้างไฟล์งาน ไฟล์ห่อหุ้มสำหรับการล้างแคช และสคริปต์สำหรับการวิเคราะห์ผลลัพธ์ได้อย่างรวดเร็ว ผู้ทดสอบยังคงต้องระบุขนาดบล็อก ความลึกของคิว และระยะเวลา เนื่องจากข้อมูลเหล่านั้นได้มาจากการตรวจสอบการทำงานจริง ไม่ใช่จากเทมเพลต

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

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

โดยปกติแล้ว ผู้ทดสอบประสิทธิภาพจะเป็นผู้ดำเนินการทดสอบ ในขณะที่ผู้ดูแลระบบโครงสร้างพื้นฐานหรือฐานข้อมูลจะเป็นผู้กำหนดค่าอุปกรณ์และรูปแบบการเข้าถึงในสภาพแวดล้อมการใช้งานจริง ผลลัพธ์ที่ได้จะน่าเชื่อถือได้ก็ต่อเมื่อทั้งสองฝ่ายเห็นพ้องต้องกันว่าปริมาณงานนั้นสมจริง

สรุปโพสต์นี้ด้วย: