RAID

ในระยะเวลา 20 ที่ผ่านมาวิวัฒนาการของคอมพิวเตอร์ได้เปลี่ยนแปลงไปตามความผันแปรของโลก และไม่ว่าเราจะพูดถึง เรื่องธุรกิจ การศึกษา หรือกิจกรรมยามว่าง คอมพิวเตอร์ก็ดู เหมือนจะมีบทบาท สำคัญในเรื่องดังกล่าวแทบทั้งสิ้น เราต่างรู้ดีว่ารูปแบบ การพัฒนาในอุตสาหกรรมคอมพิวเตอร์ ต่างก็มี จุดมุ่งหมายเพื่อสนองความต้องการของผู้บริโภคทั้งสิ้น และยิ่งเห็นได้ชัดเจนมากขึ้น เมื่อเรากำลังพูดถึง ส่วนประกอบที่ใช้ในการจัดเก็บข้อมูล ข้อมูล ข่าวสารกลายเป็นสินค้าชนิดหนึ่งที่มีค่ามากในโลกปัจจุบัน ดังนั้นการจัดเก็บข้อมูลไม่ให้สูญหายย่อมถือเป็นงานที่สำคัญมากที่สุดอย่างหนึ่งด้วยระบบ อินเทอร์เน็ตยังช่วยทำให้ข้อมูลข่าวสารเหล่านี้มีค่ามาก ขึ้นเว็บไซต์ที่มีชื่อเสียงหลายแห่งต่างมีข้อมูลข่าวสารที่สำคัญในหลายสาขา ซึ่งหากเกิดความล่าช้า หรือขาดความต่อเนื่องของข้อมูล เหล่านั้น ก็อาจทำให้เกิดความ เสียหายเป็นมูลค่านับร้อยล้านบาทได้ ซึ่งเป็นที่ชัดเจนแล้วว่า การใช้ฮาร์ดดิสก์ขนาดใหญ่ แต่เพียงอย่าง เดียวนั้น ไม่สามารถป้องกันปัญหาที่เกิดขึ้นนี้ได้ ดังนั้นจึงมีการพัฒนาระบบ RAID (Redundant Array of Independent Disks)เพื่อเพิ่ม ขีดความสามารถและเสถียรภาพของการจัดเก็บข้อมูลโดยการกระจาย ข้อมูลแบบเดียวกันไปยังฮาร์ดดิสก์หลายๆ ตัวในเวลา เดียวกัน

ความเป็นมา 
ในปี 1987 Patterson, Gibson และ Katz ซึ่งทำงานที่ University of California Berkeley ได้พิมพ์บทความเกี่ยวกับ A Case for Redundant Arrays of Inexpensive Disks (RAID) โดยเอกสารนี้ได้บรรยายถึงชนิดของดิสก์อะเรย์ประเภทต่างๆ โดยเรียกชื่อย่อๆว่า RAID หลักการพื้นฐานของ RAID มาจากแนวคิดที่ว่า เมื่อเอาดิสก์ที่มีความจุน้อยหลายๆตัวมารวมกันประสิทธิภาพที่ได้จากการใช้งานจะมากกว่าใช้ดิสก์ ขนาดใหญ่เพียงตัวเดียว โดยเมื่อเอาดิสก์มารวมกันแล้ว คอมพิวเตอร์จะต้องเห็นว่า เป็นดิสก์ขนาดใหญ่ตัวเดียว (เป็น LogicalDrive) ซึ่งระบบนี้ถูกสร้าง ครั้งแรกจากการวิจัยของมหาวิทยาลัย UC-BerkeleyระบบRAID นี้ ได้ถูกพัฒนาต่อเนื่องมาเป็นเวลานานนับปี เพื่อสนองความต้องการของผู้บริโภคในเรื่องของความรวดเร็วและความปลอดภัยในการจัดเก็บข้อมูล ซึ่งจะเป็นการอธิบายให้ ทราบถึงระบบ RAID ว่ามีความเป็นมาอย่างไร และแม้ว่าในกลุ่มผู้ใช้คอมพิวเตอร์โดยเฉลี่ยส่วนใหญ่นั้น จะคุ้นเคยกับระบบ IDE หรือไม่ก็ RAID อยู่แล้ว

ความหมายของ RIAD
RAID คือการพัฒนาเรื่องการจัดเก็บข้อมูลในแง่ของความรวดเร็ว เสถียรภาพ และการเพิ่มเนื้อที่สำหรับการจัดเก็บ โดยการใช้ ดิสก์หลายๆตัวในเวลา เดียวกัน โดยพื้นฐานแล้ว RAID คือ การทำให้ฮาร์ดดิสก์หลายตัวถูกใช้งานร่วมกันเสมือนเป็นฮาร์ดดิสก์ขนาด ใหญ่ตัวเดียวกัน ซึ่งผลตอบแทนที่จะได้รับนั้น ขึ้นอยู่กับรูปแบบและระดับการใช้งาน RAID ในแต่ละแห่ง อยู่ที่ว่าคุณต้องการใช้งาน ในลักษณะใด ซึ่งในปัจจุบันมีให้เลือกใช้งานได้หลากหลายรูปแบบ ในราคาที่แตกต่างกันตั้งแต่น้อยกว่า 100 ดอลลาร์ ไปจนกระทั่งถึง 25,000 ดอลลาร์ แน่นอนว่ายิ่งราคาแพงมากเท่าใด ย่อมได้รับระบบการใช้งานที่ดี กว่ามากขึ้นอย่างแน่นอน ซึ่งระบบที่ดีกว่านั้น ขึ้นอยู่กับชนิดของโปรแกรมต่างๆ ที่ถูกนำมาใช้งานเป็นส่วนประกอบด้วย
RAIDคำจำกัดความ คือ Redundant Array of independent disks แปลไทยได้อย่างไม่สละสลวยว่าระบบเผื่อไว้แบบอะเรย์ ของดิสก์ที่เป็นอิสระ ต่อกัน ฟังแล้วอาจจะงง RAID ก็คือ RAID ฟังแล้วง่าย แต่ไม่เข้าใจไปใหญ่ ถ้ามีฮาร์ดดิสก์เพียงตัวเดียว วันหนึ่งถ้าพังก็พังไปเลย ข้อมูลหาย หมด แต่ถ้านำฮาร์ดดิสก์หลายๆ ตัวมาต่อกัน เช่น 5 ตัว ข้อดีคือ ได้ความจุเพิ่มขึ้น แต่ถ้าตัวใดตัวหนึ่งพังก็จะเสียข้อมูลในฮาร์ดดิสก์ตัวนั้นไป แต่จะป้องกัน ได้มากกว่า ถ้าหากเพิ่มฮาร์ดดิสก์เข้าไป 3 ตัว แล้วใช้ระบบการจัดแบ่งเก็บข้อมูลในแต่ละตัว แต่ละตัว พร้อมกันแต่ในแต่ละตัวก็มีข้อมูลที่ซ้ำกัน หรือมีการ เก็บ Parity ของอีกตัวไว้ ถ้าเกิดวันใดที่ตัวหนึ่งเกิดพังไป ข้อมูลในตัวที่พังก็ยังคงมีเก็บ “สำรองเผื่อเสีย” ไว้ การแก้ไข ก็เพียงเอาฮาร์ดดิสก์ใหม่มาเปลี่ยน แล้วค่อยๆ ผ่องถ่ายข้อมูลที่ฮาร์ดดิสก์ตัวเก่าที่พังไปเคยฝากไว้กับฮาร์ดดิสก์ตัวอื่นลงมาใหม่ๆ ทำให้สมบูรณ์แบบทั้งหมดนั้นเรียกว่า ระบบ Fault Tolerance แปลเป็นไทยก็คือ”ระบบที่คงทนต่อความเสียหาย” คือ แทนที่ว่าฮาร์ดดิสก์พังไปตัวหนึ่งก็ต้อง “Down” เซิร์ฟเวอร์ ทำให้ระบบต้องหยุดชะงัก เพื่อป้องกันความ เสียหายดังกล่าว จะต้องสร้างระบบให้คงทนต่อความเสียหาย ฮาร์ดดิสก์พังไปแล้ว หนึ่งตัวระบบยังทำงานต่อไปเหมือนไม่มีอะไรเกิดขึ้นโดยวิธีการนี้จะต้องใช้ RAID ซึ่งเป็นหัวใจของการสร้าง “ดิสก์ที่คงทนต่อความ เสียหาย”

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

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

การจัดลำดับขั้นและแนวคิดในการใช้งาน
ก่อนอื่น ต้องมีความชัดเจนเสียก่อนว่า กำลังจะทำอะไร การจัดลำดับของฮาร์ดไดรฟ์ คือกลุ่มของฮาร์ดไดรฟ์ที่ถูกจัดให้มารวมอยู่ในกลุ่ม เดียวกัน เมื่อพูดถึง RAID บ่อยครั้งที่มักจะนึกถึงความแตกต่างระหว่าง กลุ่มของไดรฟ์ ที่มีอยู่ตามปกติกับกลุ่มของไดรฟ์ที่ถูกกำหนดขึ้นมาโดยกลุ่มของไดรฟ ์ที่มีอยู่ตามปกตินั้น จะสามารถแบ่งออกเป็นส่วนๆ เพื่อกำหนดฮาร์ดไดรฟ์ เพิ่มขึ้นมาอีกหนึ่งหรือมากกว่านั้น ซึ่งกลุ่มของไดรฟ์ที่ ถูกแบ่งขึ้นมาใหม่นี้จะถูก แบ่งออกเป็นไดรฟ์ย่อยๆ เพื่อทำให้ระบบปฏิบัติการสามารถมองเห็นได้ ไดรฟ์ที่ถูกสร้างขึ้นมาจะสามารถแบ่งกลุ่มย่อยและสามารถ ลบข้อมูลทิ้งได้โดยไม่ ่กระทบกระเทือนต่อไดรฟ์อื่นๆ แม้ว่าฟังดูแล้วอาจจะทำให้เกิดความสับสน แต่บ่อยครั้งเมื่อเราทำการติดตั้งระบบ เรามักจะหลีกเลี่ยงสิ่งเหล่านี้ไม่ได้ อย่างไรก็ตามอาจเกิดความยุ่งยากบางอย่าง เมื่อต้องการผนวก RAID ในหลายรูปแบบไว้ที่เดียวกัน การควบคุม RAID คือการจัดการเกี่ยวกับ การจัดเก็บข้อมูล และการเลือกใช้ข้อมูลผ่านไดรฟ์ที่มีอยู่ตามปกติ และจากไดรฟ์ที่เราจัดตั้งขึ้นมาใหม่ ซึ่งเป็นการทำให้มั่นใจได้ว่า ระบบปฏิบัติการจะ สามารถมองเห็นไดรฟ์ที่สร้างใหม่ต่างๆ และไม่มีความจำเป็นต้องกังวลเกี่ยวกับการจัดการในส่วนที่เหลืออยู่ สิ่งที่ต้องคำนึงเกี่ยวกับระบบต่างๆ จึงมีแต่เพียง แต่การทำงานร่วมกับไดรฟ์ที่เราใช้งานอยู่เป็นประจำเท่านั้น ซึ่งการควบคุมการทำงานของ RAID จึงสามารถทำได้จากทั้งการใช้ฮาร์ดแวร์ และซอฟต์แวร์ เท่านั้น การใช้ฮาร์ดแวร์ช่วยในการควบคุมจะให้ผลที่ดีกว่าสำหรับระดับของ RAID ที่ต้องใช้งานเกี่ยวกับการคำนวณมากๆ แม้ว่าในปัจจุบันด้วยการพัฒนาที่ รวดเร็วจะทำให้มีการเลือกใช้งาน ซอฟต์แวร์ ในการควบคุมมากขึ้น เนื่องจากความสะดวกรวดเร็วในการติดตั้ง แต่อย่างไรก็ดี บ่อยครั้งก็อาจทำให้หน่วย ประมวลผลเกิดความผิดพลาดเสียหาย เนื่องจากจำนวนที่มากมายของ I/O ซึ่งจะกล่าวถึงโปรแกรมต่างๆ และระดับของ RAID ที่เหมาะสมกับการ ใช้งานร่วมกับฮาร์ดแวร์และซอฟต์แวร์ ที่ใช่ในการควบคุมการทำงานของ RAID

การแยกส่วนจัดเก็บข้อมูล (Striping)
แนวทางในการจัดเก็บระบบข้อมูลที่มีประสิทธิภาพนั้นมีหลายวิธีด้วยกันแต่วิธีหนึ่งที่น่าจะใช้ได้ผลและก่อให้เกิดประสิทธิภาพในการทำงานได้มากที่สุดน่าจะเป็นการแยก ส่วนจัดเก็บข้อมูล ซึ่งวิธีการนี้เหมาะสำหรับข้อมูลที่อยู่ในอัตราความเสี่ยงที่จะเกิดปัญหา และต้องการการแก้ไขอย่างเร่งด่วน Striping จะเป็นตัวที่ทำการปรับปรุงการทำงานของส่วนต่างๆ โดยการแบ่งข้อมูลออกเป็นส่วนๆ ในไดรฟ์ต่างๆ ซึ่งข้อปฏิบัติหลักในการทำ Striping คือ การทำงานในลักษณะขนาน ให้ลองคิดไปว่า มีไฟล์ขนาดใหญ่อยู่มากมายบนฮาร์ดไดรฟ์ตัวเดียว ถ้าต้องการที่จะอ่านไฟล์นั้น ต้องใช้เวลานานพอสมควรในการรอที่จะให้ ฮาร์ดไดรฟ์นั้นอ่านไฟล์ได้ตั้งแต่ต้นจนจบ ซึ่งวิธีการเช่นนี้ล้าสมัยไปแล้ว ไม่จำเป็นต้องใช้วิธีในข้างต้นนี้ เพียงแต่ใช้วิธีการแตกไฟล์ตัวนั้นออกเป็นส่วนๆ และกระจาย แต่ละไฟล์ลงไปในฮาร์ดไดรฟ์ทำที่ได้จัดสรรพื้นที่เตรียมไว้ เพียงเท่านี้ก็สามารถเรียกไฟล์นั้นมาใช้งานได้แม้จะเป็นการเรียกแบบหลายๆ ไฟล์ในเวลาเดียวกันก็ตาม เพียงแต่วิธีนี้อาจต้องรอระยะเวลาในการเรียกไฟล์แต่ละส่วนขึ้นมาใช้งาน เพราะแต่ละส่วนที่แยกเก็บข้อมูลไว้นั้นจะเป็นไดรฟ์ที่ทำงานอยู่ในลักษณะขนาน และในส่วนที่เหลือก็ทำเช่นเดียวกัน และวิธีนี้เมื่อต้องการเขียนไฟล์ที่มีขนาดใหญ่ลงบนดิสก์ การถ่ายโอนข้อมูลจะเพิ่มขึ้นเป็นจำนวนมาก การเตรียมไดรฟ์ที่มีขนาดใหญ่ไว้รองรับการทำงานจะเป็นการเพิ่มประสิทธิภาพ
ในการปฎิบัติการให้สะดวกยิ่งขึ้น จำนวนของไดรฟ์นั้นเป็นจำนวนเดียวกันกับ Stripe Width ซึ่งจะเกิดขึ้นในเวลาเดียวกันกับตัว Stripes และสามารถโอนถ่ายข้อมูลในเวลาเดียวกัน วิธีการที่จะทำให้ปฎิบัติการนี้เป็นไปอย่างมีประสิทธิภาพที่สุดสามารถปฎิบัติได้โดยนำข้อมูลในทุกๆ ส่วนที่ถูกถ่ายโอนมาไว้ในตัวควบคุมการทำงาน RAID ซึ่งภายในตัวนี้จะถูกแบ่งเป็นส่วนเล็กๆ หลายส่วน และจะมีการใช้ Striping ด้วยกันสองระดับ เพื่อนำเทคนิคของแต่ละระดับเหล่านั้นมาแบ่งส่วนของข้อมูล อันได้แก่ byte level และ block level striping ในส่วนของ byte level striping นั้นจะมีส่วนที่เกี่ยวข้องกันในการแบ่งข้อมูลให้เห็นเป็นหน่วย byte และจัดเก็บข้อมูลเหล่านั้นไว้แบ่งไปตามฮาร์ดไดรฟ์ต่างๆ ที่เตรียมไว้ ยกตัวอย่างเช่น ถ้าข้อมูลถูกแบ่งเป็น 16 ไบต์ จะมีฮาร์ดไดรฟ์ด้วยกันทั้งหมด 4 ส่วนซึ่งข้อมูลในส่วนแรกนั้น จะถูกจัดเก็บไว้ในฮาร์ดไดรฟ์ตัวแรก ส่วนที่สอง สาม และ สี่ ก็จะจัดเก็บเช่นเดียวกัน ซึ่งในบางครั้ง byte level striping จะทำงานในช่วงเวลาหนึ่งประมาณ 512 ไบต์ ส่วน Block level striping นั้นจะเป็นการแบ่งข้อมูลจัดเก็บไว้ตามขนาดของบล็อกที่เตรียมเอาไว้ ซึ่งบล็อกนี้จะนำไปกระจายจัดเก็บไว้ในอาร์เรย์ เช่นเดียวกันกับที่ทำไว้ใน byte level striping ขดของบล็อกนี้จะเรียกว่า stripe size ความหลากหลายของ stripe sizes นั้นจะใช้งานได้อย่างมีประสิทธิภาพหรือไม่นั้นขึ้นอยู่กับประสิทธิภาพการทำงานของตัว RAID ด้วย
เมื่อพูดถึงขนาดของ stripe นั้นเป็นเรื่องที่โต้เถียงกันมากว่าควรมีขนาดเท่าใดจึงจะเหมาะสม ซึ่งในความเป็นจริงแล้วยังไม่มีขนาดที่กำหนดที่แน่นอนของ stripe ว่าควรมีขนาดเท่าไร แต่ขนาดที่ได้มาตรฐานนั้นย่อมทำงานได้ดีเยี่ยมเมื่อทำงานร่วมกับระบบปฎิบัติการที่ได้มาตรฐานเช่นกัน ซึ่งประสิทธิภาพการทำงานจะเป็นผลที่แจ้งได้ชัดเจนยิ่งขั้นว่า stripe ขนาดใดจะเหมาะสมในการใช้งานมากที่สุด การใช้ stripe ที่มีขนาดเล็กนั้นจะมีข้อดีคือสามารถแบ่งข้อมูลได้มาก และ กระจายไปจัดเก็บไว้ในไดรฟ์ต่างๆ ได้ง่าย ส่วนประสิทธิภาพของการการโอนถ่ายข้อมูลจะเพิ่มขึ้นนั้นขึ้นอยู่กับการเพิ่มจำนวนของการลักษณะการทำงาน อย่างไรก็ตาม หากมีการเพิ่มจำนวนของส่วนต่างๆ ในการจัดเก็บดังที่กล่าวไว้ในข้างต้นผู้ใช้งานควรจะลองสุ่มหาไฟล์ที่จัดเก็บ ไว้หากการจัดเก็บมีประสิทธิภาพคุณสามารถหาข้อมูลเจอ นั่นแสดงว่าการแยกส่วนจัดเก็บข้อมูลขอบคุณนั้นใช้งานได้แล้ว ส่วนการใช้ stripe ที่มีขนาดใหญ่จะทำให้เกิดผลในทางตรงกันข้ามคือถึงแม้จะมีการลดขนาดของข้อมูลลง จะทำให้การกระจายข้อมูลเพื่อจัดเก็บน้อยลงและประสิทธิภาพในการโอนถ่ายก็จะลดลงการสุ่มหาไฟล์ก็จะมีประสิทธิภาพที่ลดลงเช่นกัน ทางออกที่ดีที่สุด คือการหาขนาดของ stripe ที่เหมาะสมให้มากที่สุดในการใช้งานร่วมกับระบบปฎิบัติการของคุณ ซึ่งจะทำให้การทำงานได้ผลดียิ่งขึ้น ลองเริ่มต้นด้วย stripe ที่มีขนาดกลาง และพยายามเพิ่มหรือลดขนาด และ บันทึกความแตกต่างของประสิทธิภาพการทำงานในแต่ละขนาดเอาไว้ เพื่อเลือกตัวที่เหมาะสมมาใช้งาน

การกระจายการเขียน-อ่านข้อมูล (Stripping) และพาริตี้ (Parity) 2 กลไก หัวใจของ RAID
การนำเอาดิสก์หลายๆ ตัวมารวมกันเป็นดิสก์อะเรย์ แล้วกำหนดให้เป็น Logical Drive เพียงหนึ่งตัว นั้นมี “Stripping” เป็นหัวใจในการทำงาน กล่าวได้ว่า Stripping เป็นหลักการพื้นฐานของ RAID คือ เมื่อมีฮาร์ดดิสก์หลายๆ ตัวมารวมกัน การเขียนข้อมูลชุดหนึ่งๆ ลงดิสก์ เพื่อให้ได้ประสิทธิภาพดีที่สุด ต้องมีการ “กระจาย” ข้อมูลลงไปในดิสก์ทุกตัวในอะเรย์ เรียกการกระจายเขียน-อ่านข้อมูลเหล่านี้ว่า Stripping
กระบวนการ Stripping นั้นสิ่งที่สำคัญคือ I/O เพราะต้องมีการเข้าถึงฮาร์ดดิสก์ในอะเรย์ ต้องจัดการให้ดิสก์ทุกตัวบรรจุข้อมูลที่ถูกเขียน-อ่าน (Access) ในสภาวะที่สมดุลกัน ยิ่ง RAID Controller ออกแบบเท่าไร ก็จะได้ประสิทธิภาพจาก I/O มากขึ้น สำหรับตัวควบคุมอะเรย์แบบฮาร์ดแวร์ (RAID Controller) การวัดประสิทธิภาพในการทำงาน สิ่งที่นำมาวัดประสิทธิภาพก็คือ I/O Performance

เทคนิค
ทำไมถึงว่า I/O สำคัญ กรณีนี้ จะชี้ให้เห็นว่าถ้าหากเป็น file server นั้น I/O ยังมีความสำคัญไม่มากนัก เพราะ user จะไม่ค่อยเปิด/ปิด file เท่าไหร่ (เว้นแต่มีกรณีที่มีการนำเอา network drive เป็น swap space แต่นั่นไม่ใช่ file request แล้ว เพราะการเปิดแต่ละครั้ง จะเป็นการเปิดเพื่อนำมาแก้ไข ซึ่งกว่าจะ save บางทีใช้เวลานานกว่า 10-15 นาที สมมุติว่ามีผู้ใช้ 20 คน เฉลี่ยเวลาที่จะต้องทำ I/O ก็ยังนานระดับเป็นนาที ซึ่งถือว่าไม่มากนัก แต่ถ้าเป็น database ที่ต้องทำงานระดับ record locking นั้น การเปิดข้อมูลมาแก้ไข 1 record จะมี I/O อย่างน้อย 3-4 ครั้ง (database open, record open, index open, lock open) และเฉลี่ย ไม่เกิน 30 วินาทีก็ต้องมี I/O อีกรอบ เพื่อ write ซึ่งแพงกว่า read มากเนื่องจากต้องมี concurrency control, journalizing, log ยิ่งพวก 2-phase commitment (เขียน changed image ก่อน -> ลบ record เดิม -> เปลี่ยน changed image เป็น record ใหม่) จะใช้ I/O ถึง 2 เท่า เฉลี่ย 30 วินาที มี I/O ไม่น้อยกว่า 15 ครั้ง ยิ่งพวก banking หรือ online service เวลาการจัดการ record จะน้อยกว่า 10 วินาทีอีก
ถ้าประมาณว่าเฉลี่ย 15 วินาที มี I/O 15 หน 1 หน/วินาที ถ้ามีเครื่องแค่ 1,000 เครื่อง ที่เข้าจัดการ database อันนั้น ลองจินตนาการว่าอะไรจะเกิดขึ้น เพราะจากตัวอย่างนั้นแค่ 1 database, 1 job (ที่ซ้ำซาก เหมือนกัน) เท่านั้น และยังไม่นับ overhead ที่เกิดจากการ verify parity ของตัว RAID controller เองด้วย cache จะมีความสำคัญตรงนี้ คือ ถ้าสามารถ hold ข้อมูลไว้ได้ ทำ block I/O ได้, queuing I/O ดีๆ ให้อ่านเขียนโดยมี HDD head movement น้อยที่สุด เปิดยาวทีเดียวเพื่ออ่าน/เขียนจาก track 1 -> last track แบบone-way โดยไม่ต้องกระโดดไปๆ กลับๆ ประสิทธิภาพจะสูงอีกมาก

จะเห็นได้ว่า data transfer rate แทบไม่มีบทบาทเลย SCSI/2 สามารถส่งผ่านข้อมูลได้ 40 MB/sec แต่ฐานข้อมูลส่วนใหญ่ จะอ่านเขียน data ขนาด ไม่เกิน 2k กันแทบทั้งนั้น (ข้อมูล 1 record ไหน ขนาดที่ใหญ่ๆ จะไม่เกิน 2 กิโลไบต์ ถ้าไม่ใช่ image) พันเครื่องอ่าน-เขียนพร้อมๆกัน data stream แค่ 2-3 MB เท่านั้นการวัดประสิทธิภาพ I/O วัดว่ารองรับได้กี่ I/O per sec โดย RAID Controller ที่ดีนั้น ได้ถึง 6,000 I/O per sec และปัจจุบัน RAID Controller รุ่นประสิทธิภาพสูง ทำได้ถึง 10 kIOPS แต่มีราคาแพงมากกรณีที่ ค่า I/O ต่ำ ความเร็วในการทำงานของ RAID จะแปรผันตาม cache สำหรับ Parity ของข้อมูลนั้น ไม่ได้ถูกระบุสำหรับ RAID ทุกระดับ แต่จะมีเฉพาะบางระดับเท่านั้น Parity จะช่วยในเรื่องของการ “เผื่อเสีย” คือ ถ้าหากข้อมูลในดิสก์เสียหาย หรือเกิดทำลาย จะใช้ Parity ช่วยให้กู้ข้อมูลกลับมาได้

เทคนิค 
การสร้าง parity อาศัยความสามารถของโปรเซสเซอร์ ซึ่งจะเป็น โปรเซสเซอร์บน RAID Controller หรือโปรเซสเซอร์บนเซิร์ฟเวอร์ก็ตาม การทำงานของโปรเซสเซอร์ดังกล่าวจะได้ค่า ยิ่งถ้า parity นั้นเป็น CRC ยิ่งต้องการ CPU power มากขึ้น โดยการคำนวณกัน byte per byte ไม่ได้เอามาทั้ง file แล้ว generate 4 bytes และกรณีที่เป็น RAID-5 ยังต้องคอยหมุนให้ parity bit กระจายไปอยู่ตาม HDD ลูกต่างๆ ในอะเรย์อีก

ระดับของ RAID 
Data Striping คือการแบ่งข้อมูลออกเป็นส่วนๆ แล้วนำแต่ละส่วนไปเก็บใน harddisk แต่ละตัว การทำ striping นี้จะช่วยให้การอ่าน หรือเขียนข้อมูลใน disk array มีประสิทธิภาพมากขึ้น เพราะแต่ละไฟล์จะถูกแบ่งเป็นส่วนๆ กระจายไปเก็บในส่วนที่ต่างกันของ harddisk หลายตัว โดย harddisk เหล่านั้นทำงานไปด้วยกันแบบขนาน (parallel) จึงทำให้การเข้าถึงข้อมูลนั้นเร็วกว่า harddisk แบบตัวเดียวอย่างแน่นอน

Facebook Comments

LEAVE A REPLY

Please enter your comment!
Please enter your name here