ศูนย์เทคโนโลยีสารสนเทศ
Information Technology Center

กรมสรรพสามิต | Excise Department HARDWARE

HARDWARE 

RAID เทคโนโลยีสูงสุดของการป้องกันความเสียหายของข้อมูลและความเร็วในฮาร์ดดิสก์ 
 
คำว่า RAID หรือ Redundant Array of Inexpensive Disks หรือการนำเอาฮาร์ดดิสก์หลายๆตัวมาเชื่อต่อกันผ่านตัว Controller เพื่อจุดประสงค์ในการเพิ่มความจุ หรือความเร็วในการอ่าน/เขียนข้อมูล หลายๆคนที่ทำงานเกี่ยวกับด้าน File Sever, Database Server หรือ Video, Image Editing คงจะรู้จักเป็นอย่างดี แต่สำหรับหลายๆคนที่ไม่ได้สัมผัสกับงานเหล่านี้ โดยตรง อาจจะเป็นการยากเมื่อถูกถามให้อธิบายความแตกต่างระหว่างของ RAID แต่ละชนิด ไล่ตั้งแต่ RAID 0,1,2,3,4,5,6,7, 10 และ 53 บทความนี้จะทำให้ท่านที่ไม่เคยรู้เรื่อง RAID เลยหรือรู้มาบ้างแต่ยังไม่ลึกซึ้งได้เข้าใจถึงการทำงาน, การนำไปใช้งาน และข้อดีข้อเสียของ RAID แต่ละชนิดกัน

ทำไมถึงต้องมี RAID ?

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

RAID 0 : Striped Disk Array without Fault Tolerance

hardware1.gif
 รูปที่ 1

 RAID ชนิดแรกที่จะพูดถึงก็คือ RAID 0 หรือ Striped Disk Array คำว่า "Stripe" มีความหมายว่าลายยาวบนผืนผ้า ซึ่งใช้ เปรียบเทียบการเก็บข้อมูลของ RAID 0 ลองดูรูปที่1 ประกอบ ข้อ มูลที่เข้ามาจะถูกแตกออกที่ RAID Controller และถูกเขียนลง ฮาร์ดดิสก์ที่นำมาต่อในลักษณะ "ขนาน" นี้ก็จะเกิดขึ้นเช่นเดียวกัน ในกรณีของการอ่านข้อมูลด้วย ดังนั้นจากรูปที่ 1 การอ่านและการ เขียนข้อมูลของ RAID 0 ที่มีการนำเอาฮาร์ดดิสก์ 3 ตัวมาต่อเชื่อม กันก็จะมีความเร็วเป็น 3 เท่าของการใช้ฮาร์ดดิสก์เพียงตัวเดียว อย่างไรก็ตาม แม้ความเร็วในการอ่านและเขียนจะเพิ่มขึ้น แต่ RAID 0 ก็ยังมีข้อเสียอยู่ตรงที่ไม่มี Full Tolerance หรือ กระบวนการตรวจสอบความผิดพลาดของข้อมูล ลองพิจารณา รูปที่ 1 ใหม่อีกครั้ง ถ้าฮาร์ดดิสก์ตัวใดตัวหนึ่งมีอาการเสียเกิดขึ้น นั่นหมายความว่าข้อมูลทั้งหมดก็จะใช้ไม่ได้ตามไปด้วย ดังนั้น RAID 0 จึงเหมาะสำหรับระบบที่ไม่ใหญ่นัก และให้ความสำคัญ กับเรื่องความเร็วของการส่งผ่านข้อมูลจำนวนมาก และไม่ค่อยให้ ความสำคัญของความผิดพลาดของข้อมูลมากเท่าไหร่ เพราะถ้า ข้อมูลเกิดผิดพลาดก็สามารถแก้ไขได้ทันที และสามารถทำการ แบ๊คอัพได้ทุกครั้งหลังทำงานเสร็จแล้ว

 RAID 1 : Disk Mirroring

hardware2.gif
 รูปที่ 2 

RAID 1 มีลักษณะโครงสร้างภายในตามชื่อของมัน ก็คือ จะมีฮาร์ดดิสก์ 2 ตัวที่เก็บข้อมูลเหมือนกันทุกประการ ( 100% Data Redundancy) เราจึงถือได้ว่าฮาร์ดดิสก์ ตัวหนึ่งเสมือนเป็น "เงา" ของอีกตัวได้ และในยามที่ข้อมูลในฮาร์ดดิสก์ตัวใดตัวหนึ่งเกิดความผิดพลาดขึ้นข้อมูลของฮาร์ดดิกส์อีกตัวก็จะถูกก๊อปปี้ทับข้อ มูลที่ผิดพลาดนั้นแทนดังนั้นระบบนี้จึงถือได้ว่าเป็นระบบที่มีประสิทธิภาพในการทำการตรวจ จับและแก้ไขเหตุเสีย (Error Checking/Correction)lสูง ที่สุด เพราะข้อมูลจะเสมือนมีการแบ๊คอัพไว้ตลอดเวลา ...และด้วยการที่มันต้องแบ๊คอัพอยู่ตลอดเวลานี่เองที่ทำให้RAID1มีประสิทธิภาพในการเขียนข้อมูลช้ากว่าฮาร์ด ดิกส์ตัวเดียวโดดๆเสียอีกอย่างไรก็ตามข้อเสียอันนี้ก็ถูกชดเชยด้วยประสิทธิภาพในการอ่านที่เพิ่มมากขึ้นกว่าฮาร์ด ดิกส์ตัวเดียว2เท่าทำให้เราสามารถนำRAID1ไปใช้งานที่คำนึงถึงความเร็วในการอ่านมากกว่าความเร็วในการ เขียนข้อมูลงานประเภทที่ว่าก็ได้แก่งานWebServerหรือFTPServerระดับกลางหรือจะนำไปใช้กับงานที่ต้อง การความแน่นอนของข้อมูล สูงๆเช่นงานด้านการเงิน การบัญชี งานจำพวกนี้ไม่ได้ต้องการส่ง ผ่านข้อมูลที่รวดเร็วเหมือนงานใน RAID 0 แต่ต้องการความ แน่นอนของข้อมูลมากกว่า มีข้อควรระวังข้อหนึ่งเกี่ยวกับการใช้ RAID 1 ก็คือถ้าเราใช้ ซอฟท์แวร์อย่าง Windows NT/2000 เป็นตัวควบคุมการ ทำงาน RAID 1 หรือใช้ RAID Controller ที่ไม่รองรับคุณ สมบัติ Mirroring แล้ว จะทำให้ไปหน่วงการทำงานของซีพียูและทำให้ประสิทธิภาพการทำงานลดลงอย่างมาก ดังนั้นควร จะใช้ฮาร์ดแวร์ RAID Controller เป็นตัวควบคุมการทำงาน จะดีกว่า

RAID 2 : Hamming Code ECC 

RAID 2 เป็น RAID ชนิดแรกที่มีการใช้เทคโนโลยีในการตรวจจับความผิดพลาดของข้อมูล โดยอาศัยการเข้ารหัสแบบHammingCodeECC(ErrorChecking/Correction)ก่อนที่จะพูดถึงวิธีการเข้า รหัสแบบ Hamming Code เราไปดูการตรวจจับความผิดพลาดของข้อมูลโดยการใช้บิต Parity กันก่อน ข้อมูลที่ถูกส่งเข้ามาเก็บในฮาร์ดดิสก์ แต่ละตัวสำหรับ RAID 2 นั้น จะมีลักษณะเป็นขบวนบิตเลขฐานสอง ซึ่งแน่นอน ในระหว่างการส่งผ่านข้อมูล โอกาสที่ข้อมูลที่เป็นขบวนบิตนี้จะผิดพลาดที่บิตใดบิตหนึ่งย่อมเกิดขึ้นได้ จึงได้มีการคิดวิธีเติมบิต Parity เข้าไปที่ท้ายขบวนบิตข้อมูล(1 Word) โดยบิตที่เติมเข้าไปนี้จะเป็น "0" หรือ "1" ก็ขึ้นกับว่าเราจะใช้การตรวจจับเป็น แบบ Even Parity หรือ Odd Parity ลองดูตัวอย่างต่อไปนี้ สมมติขบวนบิตที่เข้ามาเป็นดังนี้ 1 0 0 1 0 0 1 ถ้าใช้ วิธี Even Parity ในการตรวจจับความผิดพลาด บิต Parity ที่จะถูกเติมเข้าไปต่อจากขบวนบิตข้อมูลจะต้อง ทำให้ผลรวมแบบเลขฐานสองของทุกบิต (รวมบิตที่เพิ่มเข้าไปด้วย) มีค่าเท่ากับ "0" (วิธีจำง่ายๆ 0 + 0 = 1, 1 + 1 = 0, 0 + 1 และ 1 + 0 = 1) จากตัวอย่างผลรวมของขบวนบิตข้อมูล (ยังไม่รวมบิต Parity ) มีค่าเป็น 1+0+0+1+0+0+1 = 1 เพราะฉะนั้นบิต Parity ที่ถูกเติมเข้าไปก็คือ "1" เพื่อทำให้ผลรวมของทุกบิตทั้งหมด จะกลายเป็น 1 0 0 1 0 0 1 1

hardware3.gif
 รูปที่ 3

 ส่วนในกรณีของ Odd Parity บิต Parity ที่จะถูกเติมเข้าไปจะต้องเข้าไปทำให้ผลรวมของทุกบิต (รวมบิต Parity ด้วย) มีค่าเป็น "1" และเมื่อปลายทางได้รับข้อมูลที่ผ่านการเติมบิต Parity มาแล้วก็จะสามารถตรวจสอบได้ว่าข้อมูลที่ได้รับมาผิดพลาด หรือไม่ ยกตัวอย่างสมมติว่าเกิดผิดพลาดขึ้นที่บิตที่ 3 ทำให้ข้อมูลที่ผ่านการทำ Even Parity มาแล้วผิดพลาดเป็น 1 0 1 1 0 0 1 1 ทางฝั่งรับจะรู้ได้ทันทีว่าข้อมูลนี้ผิดพลาด โดยดูจากผลบวกของทุกบิต 1+0+1+1+0+0+1+1 = 1 ซึ่งขัดกับการทำ Even Parity ที่ผลรวมของทุกบิตจะต้องเป็น "0" ทางฝั่งรับก็อาจจะส่งสัญญาณตอบกลับไปที่ฝั่งส่ง ให้ทำการส่งข้อมูลมาใหม่อีกครั้ง

hardware4.gif
รูปที่ 4 

สำหรับวิธีเติมบิต Parity ที่ได้พูดไปข้างต้นนี้ ยังมีข้อเสียอยู่ตรงที่ถ้าเกิดบิตข้อมูลเกิดการผิดพลาด พร้อมกัน 2 บิต ทางฝั่งรับจะไม่สามารถตรวจจับความ ผิดพลาดได้เลยอย่างเช่นสมมติว่าบิตที่ 2 และ 3 เกิด การผิดพลาดเป็น 1 1 1 1 0 0 1 1 ผลรวมของบิตทั้ง หมดก็ยังเป็น "0" อยู่ดี แม้จะเกิดความผิดพลาดขึ้น และข้อเสียอีกประการก็คือวิธีเติมบิต Parity นี้ ทำได้ เฉพาะตรวจจับความผิดพลาดได้เท่านั้น ..แต่ไม่สามารถระบุได้ว่าบิตใดเกิดความผิดพลาดขึ้น จึงทำการแก้ไขข้อมูลให้ถูกต้องไม่ได้ ด้วยเหตุนี้จึงต้องมีการคิดค้นวิธีที่จะ เข้ามาแก้ปัญหาเหล่านี้ วิธีที่ว่าก็คือ วิธีการเข้ารหัสข้อมูล ซึ่งมีอยู่หลายวิธีด้วยกัน แต่ที่นำมาใช้ใน RAID 2 จะเป็นวิธีการเข้ารหัส แบบ Hamming Code หลักการของการเข้ารหัสก็คือ ขบวนบิตข้อมูลจำนวน k บิต จะถูกเข้ารหัสให้กลายเป็นคำรหัส (Code Word) ที่มีความยาว n บิต โดยจะมีการเติมบิตที่ใช้ในการตรวจสอบ (Check Bits) n - k บิตต่อท้ายบิตข้อมูล โดยบิตที่ใช้ในการตรวจสอบนี้จะมีความสัมพันธ์กับบิตข้อมูลด้วยส่วนจะสัมพันธ์ในรูปแบบไหนก็ขึ้นอยู่กับว่าใช้ การเข้ารหัสแบบใด ในส่วนของการเข้ารหัสแบบ Hamming Code นี้จะอาศัยการสร้างบิตตรวจสอบจากวิธีการดังนี้ในการเข้ารหัสแบบ Hamming Code จะใช้ขบวนบิตข่าวสาร 4 บิต และจะมีการเติมบิตที่ใช้ในการตรวจสอบเข้าไป 3 บิต รวมเป็น 7 บิต สมมติให้ s1 - s4 แทนขบวนบิตข้อมูล และ t5-t7 แทนบิตตรวจสอบ ดังนั้นขบวนบิตทั้งหมดหลังจากการทำการ เข้ารหัสแล้วจะเป็นดังนี้ s1-s2-s3-s4-t5-t6-t7 บิต t5-t7 หาได้จากวิธีในรูปที่ 3

hardware5.gif

หลักการหาก็คือว่าทั้ง t5, t6 และt7 จะต้องมีค่าที่ทำให้ผลรวมของบิตในแต่ละวงกลมเป็น Even("0") อย่างตัวอย่างใน รูปที่ 3-b ถ้า s = 1 0 0 0 บิต t5 ก็ต้องเป็นบิตที่ทำให้ผลรวมของ s1-s2-s3-t5 เป็น "0" ดังนั้น t5 จึงเป็นบิต "1" ก็ทำใน ลักษณะเดียวกัน ดังนั้นขบวนบิตหลังจากผ่านการเข้ารหัสก็จะเป็น 1 0 0 0 1 0 1 ตารางที่ 1 แสดงขบวนบิตข้อมูลที่เป็นไป ได้ทั้งหมดกับขบวนบิตหลังผ่านการเข้ารหัส สำหรับการเข้ารหัสโดยวิธี Hammimg Code นี้ จะได้เปรียบวิธีเติมบิต Parity ตรงที่ทางฝั่งรับสามารถระบุได้ว่าบิต ใดเกิดความผิดพลาดขึ้นจึงทำให้เราสามารถแก้ไขความผิดพลาดที่เกิดขึ้นได้ แต่มีข้อแม้ว่าข้อผิดพลาดนั้นต้องมีเพียงบิตเดียว และต้องไม่ใช่บิต s3 ลองพิจารณาดูรูปที่ 4 สมมติว่าใช้ขบวนบิตที่ผ่านการเข้ารหัสมาแล้วเหมือนตัวอย่างที่แล้วคือ 1 0 0 0 1 0 1 แล้วเกิดความผิดพลาดที่บิต s2 ทำให้ข้อมูลเปลี่ยนเป็น 1 0 1 0 1 0 1 หรือเขียนเป็นไดอะแกรมได้ตามรูปที่ 4a จะเห็นได้ ว่าจะมีเฉพาะวงกลมเส้นประเท่านั้นไม่เป็นไปตาม Even Parity ดังนั้นบิตที่เป็นไปได้ที่จะทำให้เกิดความผิดพลาดกับวงกลม ทั้งสองวงก็คือบิต s3 = 0 และ s2 = 1 แต่เราจะตัดการพิจารณาบิต s3 ออกไปเพราะบิต s3 อยู่ในอาณาเขตของวงกลมเส้น ทึบด้วย สาเหตุก็เนื่องมาจากว่าถ้าบิต s3 เกิดความผิดพลาด มันก็จะไปส่งผลกระทบต่อ Even Parity ของวงกลมเส้นทึบด้วย จึงเหลือบิตให้พิจารณาเพียงบิตเดียวคือ s2 เพราะฉะนั้นทางฝั่งรับก็จะรู้ได้ทันทีว่าบิต s2 เป็นบิตผิดพลาด ก็จะมีการแก้ไขเกิด ขึ้นโดยการกลับบิตจาก "1" เป็น "0" ส่วนรูปที่ 4b บิตที่ผิดพลาดจะเป็นบิต t5 ซึ่งเป็นการตรวจสอบที่เพิ่มเข้าไป จากรูปจะเห็น ได้ว่า ถ้าบิตตรวจสอบเกิดความผิดพลาด ทางฝั่งรับจะรู้ได้ทันทีว่าเป็นบิตไหน เพราะวงกลมเส้นประจะเกิดขึ้นแค่วงเดียว และ บิต s1, s2 และ s3 ก็อยู่ในอาณาเขตของวงกลมทึบด้วย ดังนั้นจึงมีเพียงบิตเดียวที่อยู่ในวงกลมเส้นประล้วนๆนั้นคือบิต t5 ในรูปที่ 4c จะเป็นไดอะแกรมแสดงจุดบอดของวิธี Hamming Code เพราะถ้าบิตตรงกลางวงกลม บิต s3 เกิดผิดพลาดขึ้น ทางฝั่งรับจะไม่มีทางรู้ได้เลยว่าบิตใดผิดพลาด เพราะวงกลมทั้งสามวงเป็นเส้นประหมด โดยทางฝั่งรับจะตีความว่าข้อมูล ที่ได้รับเกิดการผิดพลาด แต่จะไม่มีการแก้ไขใดๆ เกิดขึ้นต้องให้ทางฝั่งส่ง ทำการส่งข้อมูลมาใหม่เท่านั้น

hardware6.gif

ทางฝั่งรับข้อมูลจะมีตารางข้อมูลแบบตารางที่ 1 เอาไว้เพื่อถอดรหัสเอาข้อมูลออกมา เช่นเดียวกับทางฝั่งส่ง ใน RAID 2 นั้น ฮาร์ดดิสก์แต่ละตัวจะเก็บข้อมูลที่เข้ามาทีละบิตๆ ดูรูปที่ 5 A0-A3 จะแทนข้อมูล 1 word โดยทั้ง 4 บิตนี้จะผ่านการเข้ารหัสแบบ Hamming Code โดยการเติมบิตตรวจสอบ ECC/Ax, ECC/Ay และ ECC/Az เข้าไป ทำให้ RAID 2 มีความสามารถ ในการแก้ไขความผิดพลาดได้ แต่ข้อเสียที่เราเห็นได้อย่างชัดเจนของ RAID 2 ก็คือการที่มันต้องใช้ฮาร์ดดิสก์ เพื่อเก็บบิตตรวจ สอบเกือบๆเท่ากับจำนวนฮาร์ดดิสก์ที่ใช้เก็บข้อมูล เพราะยิ่งขนาด word ของข้อมูลเล็กเท่าไหร่สัดส่วนระหว่างฮาร์ดดิสก์ทั้งสอง ชนิดก็ยิ่งเกือบจะเท่าๆกัน ดูจากรูปที่ 5 นั่นก็หมายความว่า เราต้องเสียค่าใช้จ่ายอีกประมาณเกือบเท่าตัวในการเก็บบิตตรวจสอบ ซึ่งเป็นเรื่องที่ค่อนข้างสิ้นเปลืองทีเดียว

RAID 3 : Pararell Transfer with Parity

สำหรับ RAID 3 นั้นตามโครงสร้างจะมีลักษณะการต่อฮาร์ดดิสก์เป็นแบบ Stripe เช่นเดียวกับ RAID 0 โดยข้อมูลที่เข้ามาแต่ละครั้งจะถูกแยกเก็บไว้ที่ฮาร์ดดิสก์แต่ละตัวส่วนแต่ละตัวจะเก็บข้อมูลกี่บิตหรือกี่ไบต์ก็ขึ้นอย ู่ที่การกำหนด(ขอเรียกข้อ มูลที่เก็บอยู่ใน A0, A1, A2, … ตามรูปที่ 6 ว่าเป็น 1 word) จากรูปที่ 6 ข้อมูลที่เข้ามาก็จะถูกแบ่งย่อยเพื่อเก็บไว้ที่ A0, A1, A2, A3, B0, … จนกว่าจะเก็บข้อมูลได้หมด ลักษณะการต่อฮาร์ดดิสก์ตามรูปที่ 6 เป็นการต่อที่เรียกว่า 4+1 คือมีฮาร์ดดิสก์ที่ไว้ เก็บข้อมูล 4 ตัว และเก็บ Parity ที่ได้จากการคำนวณทางคณิตศาสตร์ของข้อมูลในแถวๆนั้น (ดูตามรูปที่ 6 A Parity จะเป็น Parity ของข้อมูล A0-A3) อีก 1 ตัวการคำนวณหา Parity นั้นจะอาศัยวิธีการทางคณิตศาสตร์ง่ายๆ คือการนำเอาลอจิก XOR เข้ามาช่วย โดยเงื่อนไขของการ ทำ XOR เป็นดังที่แสดงในตารางที่ 2

hardware7.gif
 ตารางที่2

สาเหตุที่นำลอจิก XOR มาใช้ก็เนื่องมาจากคุณสมบัติที่ว่า ถ้านำข้อมูล word A และ B มา XOR กันได้ผลลัพธ์ตัวหนึ่ง แล้วเกิดเหตุการณ์ที่ word A หรือ B อันใดอันหนึ่งเกิดสูญหายไป เราสามารถสร้าง word ที่หายไปอันนั้นให้กลับมาเหมือนเดิมได้ โดยการ XOR ผลลัพธ์กับ word ที่ยังเหลืออยู่ดังตัวอย่างต่อไปนี้ สมมติให้ข้อมูล word A คือ 0 1 1 0 และ word B คือ 1 1 0 0 ทั้งสอง word เมื่อนำมา XOR กันจะได้ผลลัพธ์ 1010 สมมติให้ word A เกิดการสูญหาย เราสามารถสร้าง Word A กลับมาอีกครั้งได้โดยนำผลลัพธ์มา XOR กับ word B จะได้ 0110 ซึ่งก็คือ word A นั่นเอง จากเหตุผลข้างต้นจึงมีการนำลอจิก XOR มาสร้าง Parity ขึ้นมาโดย A Parity = A0 XOR A1 XOR A2 XOR A3 (ในส่วนของแถว B, C และ D ก็เป็นในทำนองเดียวกัน)และถ้าข้อมูลจากฮาร์ดดิสก์ตัวใดเกิดสูญหาย เราก็สามารถสร้าง word ข้อมูลนั้นขึ้นมาใหม่ได้ด้วยการนำ A Parity มา XOR กับ word ข้อมูลที่ยังเหลืออยู่ สมมติ word ข้อมูลเป็นดังนี้ A0= 1010, A1= 0011, A2 = 0001 และ A3 = 1000 ดังนั้น A Parity จะมีค่าเท่ากับ 0000 และสมมติให้ข้อมูล A2 เกิดสูญหายอันเนื่องมาจากฮาร์ดดิสก์ตัวที่ 3 เกิดปัญหาเราจะสร้างข้อมูล A2 กลับคืนมาได้โดยนำ A Parity 0000 XOR กับ word ข้อมูลที่ยังเหลืออยู่ซึ่งก็คือ A0, A1 และ A3 จะได้ผลลัพธ์คือ 0001 ซึ่ง ก็คือ word A2 นั่นเอง

hardware8.gif

 รูปที่ 6

แม้ว่า RAID 3 จะมีข้อดีในการอ่านและเขียนข้อมูลได้อย่างรวดเร็ว เพราะมีลักษณะการต่อฮาร์ดดิสก์เป็นแบบ Stripe และ ใช้ฮาร์ดดิสก์ในการเก็บ Parity เพียงแค่ตัวเดียวเท่านั้น แต่ถ้านำ RAID 3 ไปใช้กับงานที่ข้อมูลที่มีการผ่านเข้าออกเป็นจำนวนเล็ก น้อยในแต่ละครั้ง แต่ลักษณะการเขียนข้อมูลมีการกระจายไปทั่วทั้งฮาร์ดดิสก์ จะส่งผลให้เกิดเวลาคอขวดขึ้นที่ฮาร์ดดิสก์ที่เก็บ Parity เพราะไม่ว่าข้อมูลจะไปปรากฏอยู่ในกลุ่มของ word ข้อมูลแถวไหน RAID 3 ก็จะมีการสร้าง Parity ขึ้นมาตลอด ซึ่งแม้ ว่าข้อมูลเราจะมีขนาดเล็ก แต่ RAID 3 ก็จำเป็นต้องเสียเวลาไปสร้าง Parity ขึ้นมาตลอด ซึ่งแม้ว่าข้อมูลเราจะมีขนาดเล็ก แต่ RAID 3 ก็จำเป็นต้องเสียเวลาไปสร้าง Parity ขึ้นในทุกๆแถวที่ข้อมูลนั้นไปอยู่ ยิ่งข้อมูลกระจายไปอยู่แถวต่างๆมากขึ้น จำนวน Parity ก็จะมากขึ้นตามและในแต่ละครั้งของการที่จะเขียนข้อมูลใหม่ลงไป RAID 3 จำเป็นจะต้องรอให้ Parity ถูกเขียนให้เสร็จ ก่อนที่ข้อมูล word ต่อไปจะถูกเขียน (เป็นลักษณะของการทำงานแบบ Synchronous) ยกตัวอย่าง ตามรูปที่ 6 ถ้าเราต้องการ เขียนข้อมูลลงที่ word A0 ฮาร์ดดิสก์ที่ต้องใช้ในการเขียนจะมีอยู่ 2 ตัวคือฮาร์ดดิสก์ตัวที่ 1 และฮาร์ดดิสก์ตัวที่ 5 จะเห็นได้ว่า ก่อนที่ word B2 จะถูกเขียนมันจะต้องรอจนกว่าฮาร์ดดิสก์ตัวที่ 5 จัดการ Parity ของ word A1 ให้เสร็จก่อน เวลาที่เกิดนี้แหละ ที่เป็นเวลาคอขวด ยิ่งมีการกระจายการเขียนข้อมูลไปหลายๆแถวเมื่อใด ก็ยิ่งต้องเสียเวลารอมากขึ้นเท่านั้น ฉะนั้นงานที่เหมาะจะเอา RAID 3 ไปใช้งานก็ควรจะเป็นงานที่ต้องการการอ่านข้อมูลจำนวนมากในเวลารวดเร็ว เพราะการอ่านจะไม่ไปยุ่งกับส่วนของ Parity ถ้าข้อมูลไม่สูญหาย เช่นงานด้านการผลิตหรือตัดต่อ Video

 RAID 4 : Independent Data Disks with Shared Parity Disk

หลักการทำงานของ RAID 4 จะเหมือนกับ RAID 3 แทบทุกประการจะต่างกันก็ตรงที่ แต่ละ Word ข้อมูลใน RAID 3 นั้น จะมีขนาดกี่บิตหรือกี่ไบต์ก็อยู่กับการกำหนด แต่ใน RAID 4 Word ข้อมูล จะเก็บในรูป Block ข้อมูล (1 Sector) แทน เพราะ ฮาร์ดดิสก์ส่วนใหญ่จะอ่านข้อมูลแต่ละครั้งจะอยู่ในรูปของ Block โดยขนาดของ Block จะมีตั้งแต่ 512 Byte ถึง 8 KB ขึ้นกับ ระบบปฏิบัติการที่ใช้ รูปที่ 7 แสดงการทำงานของ RAID 4 ในการเปลี่ยนมาใช้การเก็บข้อมูลเป็นBlockนี้จะช่วยให้จำนวนครั้ง ในการเก็บข้อมูลและกระบวนการเปรียบเทียบ XOR น้อยลง ซึ่งจะส่งผลให้เวลาในการกู้หรือเก็บข้อมูลสั้นลงตามไปด้วย อย่างไร ก็ตามเวลาคอขวดอย่างที่เกิดใน RAID 3 ก็ยังคงมีอยู่เช่นเดิม

hardware9.gif

 รูปที่ 7

 RAID 5 : Independent Data Disk with Distributed Parity Blocks

RAID 5 จะมีการเก็บข้อมูลเป็น Block เช่นเดียวกับใน RAID 4 ข้อเสียที่สำคัญที่สุดของ RAID 3 และ 4 ก็คือ เรื่องเวลา คอขวดที่เกิด เนื่องจากการเขียนส่วน Parity ดังที่ได้ยกตัวอย่างไปแล้ว สำหรับ RAID 5 จะมีการแก้ไขปัญหานี้โดยการ นำเอา ส่วนของ Parity Block ไปกระจายอยู่ในฮาร์ดดิสก์แต่ละตัว ไม่แยกมาเก็บโดดๆเหมือนใน RAID 3 การกระทำเช่นนี้จะลดเวลา คอขวดได้อย่างไร จะขอเปรียบเทียบกับตัวอย่างที่ได้ยกไปในหัวข้อ RAID 3 นั่นคือการเขียนข้อมูลที่ Word A0 และ B1 ใน กรณีของ RAID 5 การเขียนข้อมูลลง Word A0 จะใช้ฮาร์ดดิสก์ 2 ตัวคือ ตัวที่ 1 และ 5 ส่วน Word B1 จะใช้ตัวที่ 2 และ 4 จะเห็นได้ว่าเราไม่ต้องไปเสียเวลารอให้ RAID 5 ทำส่วนของ Parity ให้เสร็จก่อนเหมือนอย่าง RAID 3 แล้ว เพราะเราสามารถ เขียนทั้ง Word A0 และ B1 ไปได้พร้อมๆกันเลย นี่จึงเป็นที่มาของการกระจายส่วนของ Parity Block ให้อยู่ในทุกๆฮาร์ดดิสก์