Home>>รีวิว>>SSD Extra Over-Provisioning คืออะไร แล้วมันเป็นประโยชน์ยังไงกับ QNAP NAS?
รีวิว

SSD Extra Over-Provisioning คืออะไร แล้วมันเป็นประโยชน์ยังไงกับ QNAP NAS?

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

ก่อนอื่นต้องทำความเข้าใจหลักการทำงานของ SSD ก่อน

ในขณะที่ฮาร์ดดิสก์แบบเดิมๆ จะใช้จานแม่เหล็กเก็บข้อมูล และใช้แรงแม่เหล็กในการเขียนข้อมูลลงในบนจานแม่เหล็ก SSD หรือ Solid-State Drive ใช้หน่วยความจำที่เป็นสารกึ่งตัวนำในการเก็บข้อมูลแทน และเป็นที่รู้กันว่าความเร็วในการอ่านและเขียนของ SSD นั้นสูงกว่าฮาร์ดดิสก์แบบเดิมๆ มาก

ภาพอธิบายการทำงานเขียนข้อมูลของ SSD

ข้อมูลที่เก็บอยู่บน SSD จะถูกเรียกว่าเซลล์ของหน่วยความจำแบบแฟลช (Flash memory cell) หรือจะเรียกสั้นๆ ว่า เซลล์ ซึ่งมันจะถูกเรียงรวมกันเป็นส่วนที่เรียกว่า บล็อก (Block) โดยแต่ละบล็อก ก็จะมีการแบ่งออกเป็นสิ่งที่เรียกว่า เพจ (Page) โดยแต่ละบล็อก จะมีได้ตั้งแต่ 128-256 เพจ และแต่ละเพจก็จะทำหน้าที่เก็บข้อมูลจำนวน 2KB-16GB

ในการใช้งานจริง พอใช้ไปเรื่อยๆ ข้อมูลก็จะถูกเขียนลงไปใน SSD บ้างละ โดนลบออกไปบ้างละ สุดท้าย มันก็จะเต็มไปด้วยบล็อกที่มีทั้งเพจที่มีข้อมูลที่ยังใช้งานอยู่ (Valid data) กับเพจที่มีข้อมูลที่พร้อมจะให้เขียนข้อมูลใหม่มาทับแล้ว (Invalid data) แต่การที่จะเขียนข้อมูลใดๆ ลงไปในบล็อกได้ ก็ต้องมีการทำสิ่งที่เรียกว่า Garbage collection ก่อน นั่นก็คือ การสำเนาข้อมูลที่ยังใช้งานอยู่ (Valid data) ที่อยู่ในบล็อกนั้นๆ ไปเขียนไว้ที่อื่น เพื่อที่ข้อมูลจะได้ไม่หายไป แล้วก็ลบข้อมูลที่พร้อมจะให้เขียนทับ (Invalid data) ที่อยู่ในบล็อกนั้นๆ ออกด้วย

ภาพอธิบายการขั้นตอนการเขียนข้อมูลลง SSD และทำให้เกิด Write amplification

ลองยกตัวอย่างแบบนี้ครับ เอาแบบง่ายๆ (ของจริงมันจะซับซ้อนกว่านี้ อันนี้ทำมาแบบง่ายๆ เพื่อให้เข้าใจหลักการทำงานเฉยๆ) SSD อันนึง ประกอบไปด้วยข้อมูล 6 บล็อก แต่ละบล็อกก็จะมี 4 เพจอยู่ข้างใน ซึ่ง ณ ตอนนี้เราจะเห็นว่ามีข้อมูลถูกเขียนเอาไว้อยู่แล้ว (คือไอ้เพจสีเขียว ที่มีตัว D อยู่) โดยข้อมูล 6 เพจ มันดันกระจายอยู่ใน 3 บล็อก บล็อกละ 2 เพจ

ภาพขั้นตอนการเขียนข้อมูลบน SSD

ทีนี้มันมีการเขียนข้อมูลใหม่มาทับ ก็คือไอ้เพจสีน้ำเงิน ที่มีตัว N ซึ่งมีขนาด 2 บล็อก เราจะเห็นว่า หากจะเขียนข้อมูลทับของเดิม มันก็จะกระทบต่อ 2 บล็อกเดิม สิ่งที่ SSD Controller จะทำก็คือ การสำเนาข้อมูลที่เป็น Valid data ในสองบล็อกด้านบน ไปไว้ในบล็อกที่ว่างอยู่ (ที่เป็นสีม่วง) จากนั้นค่อยลบข้อมูลใดๆ ก็ตามที่อยู่ใน 2 บล็อกด้านบนออก แล้วสุดท้ายถึงได้เอาข้อมูลใหม่มาเขียนลงไปในสองบล็อกด้านบน

ภาพอธิบายข้อมูลบน SSD หลังกระบวนการเขียนข้อมูลเสร็จสิ้น

สังเกตว่าข้อมูลที่เราจะเขียนจริงๆ มีด้วยกัน 6 เพจ แต่เวลาทำงานจริงๆ SSD Controller จะต้องทำสำเนาข้อมูลเก่า 4 เพจ มาเขียนลงในพื้นที่ว่างก่อน แล้วถึงได้เขียนข้อมูลจริงๆ อีก 6 เพจ รวมแล้ว เขียนจริงคือ 10 เพจ ปรากฏการที่การเขียนข้อมูลจริงๆ ดันมีจำนวนมากกว่าข้อมูลที่ต้องการเขียน เขาเรียกว่า Write amplification ครับ ซึ่งส่งผลกระทบต่อประสิทธิภาพในการเขียนข้อมูล (IOPS – Input/Output Operations per second) ของตัว SSD ยิ่ง Write amplification สูง ยิ่งทำให้ SSD ทำงานช้า และ SSD ที่ใกล้จะเต็ม ยิ่งเขียนข้อมูลช้าครับ เพราะพื้นที่ว่างสำหรับสำเนา Valid data ไปเก็บไว้ เพื่อเตรียมทำ Garbage collection มันน้อยลง กระบวนการเขียนๆ ลบๆ มันก็จะต้องทำหลายขั้นตอนมากขึ้นนั่นเอง

เขาเลยใช้ Over-provisioning ในการลดผลกระทบจาก Write amplification

ไม่ใช่ว่าผู้ผลิต SSD เขาจะไม่รู้ถึงปัญหานี้ครับ เขาก็มีเทคนิคเข้ามาแก้ปัญหา Write amplification แล้ว โดยอาศัยหลักการที่ว่าถ้ามันมีพื้นที่ว่างที่ไม่มีข้อมูลเหลืออยู่มากกว่าข้อมูลใหม่ที่จะเขียน มันก็จะไม่ต้องเสียเวลาไปทำ Garbage collection เลย เพราะจะสามารถเขียนข้อมูลใหม่ลงในพื้นที่ว่าง แล้วก็จบกระบวนการได้เลย

ภาพอธิบายการเขียนข้อมูลลงบน SSD ในกรณีที่มีการทำ Over-provisioning 25%

แบบในรูปด้านบนครับ ถ้าเกิดพื้นที่ที่ว่างมันมี 2 บล็อก แล้วข้อมูลใหม่ที่อยากเขียน ก็มี 2 บล็อกเท่ากัน ข้อมูลใหม่ก็จะถูกเขียนลงในช่องว่างทันที แล้วก็จบ ไม่เกิด Write amplification ใดๆ เลย

Over-provisioning นี่ก็คือ การที่ผู้ผลิต SSD เขากันเนื้อที่บน SSD เอาไว้ส่วนนึง ไม่ให้มีข้อมูลใดๆ มาเขียนในนั้น เพื่อเตรียมพื้นที่ว่างเอาไว้ให้เขียนข้อมูลได้ เพื่อลด Write amplification นั่นเอง

แล้วผู้ผลิต SSD เขาไป “กันพื้นที่” จากตรงไหน?

Over-provisioning ได้มาจาก 3 แหล่งหลักๆ ครับ โดย 2 แหล่งนี่เราอาจจะเห็นอยู่ทุกที แค่เราไม่รู้ตัวเท่านั้นเองครับ นั่นคือ

1️⃣ ความแตกต่างจากเลขสเปกความจุที่คิดจากเลขฐานสิบ เมื่อเทียบกับความจุจริงที่คิดจากเลขฐานสอง ถ้าใครนึกไม่ออกว่ามันคือยังไง ให้ไปอ่านบล็อก ทำไมฮาร์ดดิสก์มีความจุไม่เต็มตามป้ายที่บอกล่ะ? ของผมครับ แต่ถ้าจะอธิบายให้เห็นภาพง่ายๆ ก็คือ ในฐานะผู้ใช้งาน เราจะมองความจุ 1GB (อ่านว่า กิกะไบต์ Gigabyte) มีค่าเท่ากับ 1,000,000,000 ไบต์ ครับ แต่คอมพิวเตอร์ จะเห็นเป็น 1GiB (อ่านว่า จิบิไบต์ Gibibyte) มีค่าเท่ากับ 1,073,741,824 ไบต์ หรือก็คือ มีความแตกต่างกันอยู่ 7.37% ของความจุตามสเปก และไอ้ 7.37% นี่แหละ ถูกเอาไปทำ Over-provisioning

2️⃣ ระบุสเปกความจุให้ต่ำกว่าความเป็นจริงไปอีกหน่อย เพื่อเอาเนื้อที่มาทำ Over-provisioning ซึ่งอันนี้เราจะได้เห็นจาก SSD บางรุ่น เช่น WD Blue SSD ในรูปด้านล่าง มันจะมีสเปกความจุแปลกๆ ที่เราไม่ค่อยได้เจอ เช่น 250GB ทั้งๆ ที่ปกติ มันจะเป็นตัวเลขหาร 8 ลงตัว (เช่น 128GB, 256GB, 512GB เป็นต้น) ไอ้ตัวเลขที่หายไปก็คือ โดนเอาไปทำ Over-provisioning ครับ เช่นในกรณีนี้ หายไป 6GB หรือราวๆ 2.3% เอาไปรวมกับ Over-provisioning ที่เกิดจากความแตกต่างของตัวเลขสเปก กับความจุจริงที่คอมพิวเตอร์มองเห็น ก็จะได้ Over-provisioning รวมๆ แล้ว ราวๆ 10%

WD Blue SSD แบบ SATA SSD 250GB

3️⃣ Over-provisioning แบบกำหนดเองด้วยซอฟต์แวร์ ซึ่งผู้ผลิต SSD บางราย ก็จะมีซอฟต์แวร์มาช่วยให้ผู้ใช้งานสามารถกำหนดค่า Over-provisioning ได้เอง อันนี้เรียก Software-defined over-provisioning ครับ และฟีเจอร์ SSD Extra Over-Provisioning ของ QNAP NAS ก็อยู่ในกลุ่มนี้แหละ

แล้ว Over-provisioning นี่มันช่วยอะไรได้?

QNAP อ้างอิงงานวิจัยจากผู้ผลิตหน่วยความจำแบบแฟลชชื่อ Atpnic ที่พบว่า หากมีการเพิ่ม Over-provisioning ให้อีก 28% จะสามารถช่วยลดอัตราส่วนของ Write amplification จาก 4.7 ให้เหลือ 1.9 ได้ และช่วยเพิ่มอายุการใช้งานของ SSD ซึ่งวัดจากค่า TBW (Terabytes Written) ได้เป็นสองเท่า

กราฟกแสดงอัตราส่วนของ Write amplification กับค่า Terybytes Written เมื่อมีการตั้งค่า Over-provisioning ที่แตกต่างกันออกไป

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

ถ้า SSD Extra Over-Provisioning มันดีแบบนี้ ก็ตั้งให้เยอะๆ ไปเลยดิ?

จะบ้าเรอะ?!?!?!? ก็อย่างที่บอกนะครับ Over-provisioning คือการ “กันพื้นที่” เอาไว้ ดังนั้นหมายความว่า หากตั้งไว้เยอะ ผลที่ตามมาก็คือ SSD ก็จะมีความจุน้อยลงไปด้วย เพราะพื้นที่ที่จะเขียนข้อมูลลงไปได้ตามใจมันโดนกันออกไปจนเหลือน้อยลงอะ สมมติ SSD ความจะ 1,000GB โดนตั้ง Over-provisioning ไว้ที่ 90% นี่คือ เหลือพื้นที่ใช้งาน 100GB นะครับ

ฉะนั้น การจะตั้งค่า Over-provisioning ก็ต้องพิจารณาจากหลายๆ ปัจจัยตั้งแต่ ความเร็วของการเขียนข้อมูลที่เราอยากได้ ความจุที่ SSD ที่เราต้องการใช้ และงบประมาณที่เรามี เพราะหากเราต้องการความเร็วสูงๆ แล้วมันต้องไปทำ Over-provisioning เยอะ แต่เราก็ยังต้องการความจุประมาณนึง เราอาจจะต้องเลือกใช้ SSD ที่ความจุเยอะๆ หน่อย

SSD Profiling Tool ของ QNAP ช่วย

QNAP เขาเลยมีเครื่องมือมาช่วยให้เราพิจารณาเลือกค่า Over-provisioning ให้เหมาะสมได้ นั่นคือ SSD Profiling Tool ครับ ซึ่งันก็จะทำการทดสอบตัว SSD ให้แล้วก็มีข้อมูลมาให้เราดูว่าค่า Over-provisioning ที่เท่าไหร่ เราจะได้ความเร็วในการเขียนข้อมูลแค่ไหน และจะเหลือพื้นที่ให้ใช้งานเท่าไหร่

หน้าจอการทดสอบ SSD ด้วยโปรแกรม SSD Profiling Tool ของ QNAP

ทดสอบเสร็จแล้ว เราก็จะได้สามารถเลือกค่า Over-provisioning ที่ตอบโจทย์เรามากที่สุดได้นั่นเองครับ

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.