วันนี้มาพูดถึงเรื่องเทคโนโลยีหนึ่งที่ใช้กับ Hard Disk กัน ยาวหน่อยครับ เพราะพยายามหาข้อมูลจาก web ต่างๆ ให้ครบถ้วน (ครบในปี 2554 แต่อนาคตก็ไม่ทราบว่าจะมีอะไรใหม่เพิ่มขึ้นนะครับ เทคโนโลยีก้าวไปไม่หยุดครับ)
สมัยก่อนนั้นอุปกรณ์ Computer มีราคาแพงมากและแต่ละชิ้นก็ไม่ได้มีขนาดความจุ (Capacity)
ที่มากมายมหาศาลเท่าทุกวันนี้ เคยมีรุ่นพี่เค้าเล่าให้ฟังว่า สมัยก่อน (น่าจะซักปี 2520) ราคา RAM ตีซะ เม็ก (MB) ละพันบาท คิดดูมี RAM ซัก 16MB ก็ โค-ตะ-ระ เท่แล้ว แต่เดี๋ยวนี้ (2554) RAM 4GBไม่ถึงพันบาท ไม่ต้องพูดถึง Hard Disk ที่เมื่อก่อนนี้ มี Hard Disk ก้อนละ 500 MB ก็เท่มากแล้ว ใครมี Hard Disk ก้อนละ 2GB อันนี้ต้องเป็นองค์กรใหญ่ระดับประเทศ แต่เดี๋ยวนี้เหรอ CD 1 แผ่นยังมีความจุ 700MB, DVD ยังมีความจุ 4.7GB แล้วเลย (นี่ยังไม่พูดถึง Blueray นะเนี่ย)
ฉะนั้น เมื่ออุปกรณ์แพง ก็ต้องหาวิธีว่าจะทำยังไงให้ใช้อุปกรณ์ได้คุ้มค่าที่สุดโดยได้เนื้อที่ความจุมากที่สุด ทีมนักวิจัยในมหาวิทยาลัยแคลิฟอร์เนีย วิทยาเขตเบิร์กเลย์ (University of California at Berkeley) เป็นทีมแรกๆ ที่ได้ทำการวิจัยเกี่ยวกับเรื่องนี้ (ในปีค.ศ.1987 หรือปีพ.ศ. 2530) โดยใช้แนวคิดว่าจะเอาพื้นที่ของ Hard Disk หลายๆ ก้อน มาต่อกัน (หรือที่เรียกว่า Array) เพื่อให้พื้นที่เพิ่มขึ้นและยังเพิ่มความเร็วในการอ่าน-เขียน ข้อมูลลง Disk และยังสามารถป้องกันในกรณีมี Hard Disk เสียได้อีกด้วย จึงเป็นที่มาของแนวคิด Redundant Array of Inexpensive Disks, RAID นี่คือที่มาเริ่มแรกของคำว่า RAID แต่ปัจจุบันได้มีการเปลี่ยนจากคำว่า Inexpensive เป็น Independent แทน (คงเพราะว่า Inexpensive มันดูอนาถาไปมั้งครับ, ผู้เฒ่าเต่า) ตัว I ใน RAID ก็เลยเรียกได้ 2 แบบ ไม่มีอันไหนผิด
ในยุคเริ่มแรกของ RAID นั้นก็ยังถือว่าแพงเกินไปสำหรับผู้ใช้งานทั่วไป จึงมีใช้ในระดับองค์กรเท่านั้น ส่วนใน พ.ศ. นี้(2554) ก็ได้มีผู้ผลิต Mainboard สำหรับ PC ใส่ความสามารถพิเศษด้าน RAID ลงใน Mainboard บางรุ่นของตัวเองแล้ว สำหรับผู้ใช้ที่เรียกได้ว่าเป็น Power user คือผู้ใช้ที่ต้องการความเร็ว ประสิทธิภาพ และการป้องกันข้อมูลเสียหายเนื่องจาก Disk เสีย ก็มองว่าข้อมูลที่มีอยู่มีมูลค่ามากกว่า Disk ที่ต้องเพิ่มขึ้นมา ก็ถือว่าคุ้มค่ามากที่เดียว
เกริ่นออกทะเลมานาน ก็มาเข้าเรื่องกันดีกว่า ก่อนอื่นก็ต้องมารู้จักคำศัพท์ที่จะใช้กันก่อนเพื่อจะได้เข้าใจตรงกัน
- Array : ความหมายในที่นี้หมายถึงชุดของ Disk ที่เอามาใช้ใน RAID ซึ่งจะมีการจัดการในรูปแบบเดียวกัน (แต่ถ้ามองกันในแนวคณิตศาสตร์ ก็คือ Array ได้เหมือนกันแต่ที่มอง disk แทนตัวเลข) แนวคิดเรื่อง Array นี้ใช้เป็นโครงสร้างพื้นฐานของ RAID ลองนึิกภาพของ Array ในคณิตศาสตร์นะครับ Array มีมิติ Array ที่ใช้ใน RAID ก็มีมิติเหมือนกัน แล้วแต่ว่าจะใช้ RAID ประเภทไหน
- RAID level : เป็น level ของ RAID ที่จะสร้าง โดยแต่ละ level จะมีลักษณะการทำงาน การจัดเก็บข้อมูล การป้องกันข้อมูลเสียหาย เหมือนกันบ้าง ต่างกันบ้าง แล้วแต่ level เดี๋ยวค่อยมาดูกัน
- Physical Drive : ก็คือ disk เป็นก้อนๆ ที่เราจะใช้ในการสร้าง RAID นี่ล่ะครับ
- Physical Array : อันนี้เป็น Hardware ที่ใช้จัดเก็บ disk ที่เราจะสร้าง RAID ไม่ต้องคิดมากครับ มองง่ายๆ ในเครื่อง PC ของเรา มีช่องใส่ disk ที่เรียงๆ กัน ก็เป็น Array แล้ว แค่มี controller มาเสียบอีกทีก็เป็น Physical Array แล้ว หรืออีกแบบคือเป็น Array แบบแพงๆ ก็เป็นแบบในรูปครับ คือเป็น Hardware สำหรับใส่ disk โดยเฉพาะ
Physical Array |
- Logical Disk : ก็คือ Physical Drive หรือ Physical Array ที่ผ่านการทำ RAID แล้ว ก็จะเป็นลักษณะเสมือนเป็น disk ก้อนหนึ่ง แต่ในนั้นประกอบด้วย disk อีกหลายๆ ก้อน เลยเรียก logical บางครั้งก็เรียก Logical Volume แล้วแต่ยี่ห้อของ RAID Controller
- Logical Array : คล้ายๆ Logical Disk แต่ใช้กับการทำ RAID ที่มีลักษณะซับซ้อนมากๆ คือมีการแบ่ง Physical Array ไปใส่ให้กับ Logical Array หนึ่ง หรือรวมเอา Physical Array หลายๆ ตัวเข้ามาเป็น Logical Array เดียว
- Mirror : ในด้านการทำ RAID ไม่ได้หมายถึงกระจกเป็นแผ่นๆ นะครับ แต่หมายถึงการป้องกันความเสียหายของข้อมูลเนื่องจาก disk เสียวิธีหนึ่ง คือ ให้ disk 2 ชุด มีข้อมูลเหมือนกันทุกประการหากมีก้อนใดก้อนหนึ่งเสีย ระบบยังทำงานต่อไปได้
- Duplex : มีความคล้ายกับ Mirror มากคือ ให้ disk 2 ชุดมีข้อมูลเหมือนกัน แต่เพิ่มตรงที่ให้มี controller 2 ตัวด้วยครับ ป้องกันเรื่อง controller เสียด้วยครับ การทำ duplex นี้มักทำใน software RAID หรือ Hardware RAID แบบ external ดูรูปเทียบกับ Mirror แล้วจะเข้าใจครับ
- Stripe : เป็นวิธีการจัดการกับข้อมูลโดย Controller จะแบ่งข้อมูลออกเป็นชุดๆ (ก็เลยเรียก striping แปลว่าเป็นแถบๆ) แล้วแบ่งไปเขียนลง Disk หลายๆ ก้อน พร้อมกันเพื่อเพิ่มความเร็วในการอ่านและเขียน
- Parity : เป็นวิธีการป้องกันข้อมูลจากการที่ disk เสียวิธีหนึ่ง โดยจะนำข้อมูลมาคำนวณออกมาเป็นค่าค่าหนึ่ง ด้วยวิธีการทางตรรกศาสตร์ (ก็คือการ exclusive OR, XOR) เก็บไว้ เรียกว่า parity หากมีความเสียหายเกิดขึ้นกับ disk โดยยังอยู่ในขอบเขตที่กำหนดของ RAID level นั้น เช่น RAID 5 disk เสียได้ 1 ก้อน จะสามารถกู้ข้อมูลกลับมาได้ แต่ถ้าเกินก็ไม่สามารถกู้คืนได้
- RAID Controller : เป็นตัวจัดการว่าจะให้ชุด RAID อ่านหรือเขียนข้อมูลอย่างไรสามารถเป็นได้ทั้ง Hardware และ Software
- Hardware RAID : เป็นอุปกรณ์สำหรับจัดการกับ RAID โดยเฉพาะ ไม่ว่าจะเป็น จัดการเรื่องการแบ่งข้อมูลที่จะเขียนลง RAID การอ่านข้อมูลกลับ การกู้คืนข้อมูลในกรณีมี disk เสีย ฯลฯ Hardware RAID แบ่งได้คร่าวๆคือ
- แบบที่ฝังลงใน Mainboard หรือเป็น Card ที่เสียบเข้ากับ PCI บนเครื่องเหมาะกับการทำ RAID ที่ไม่ซับซ้อน และมี disk ไม่มาก
- แบบ External Hardware RAID ที่ดีมากๆ จะมีลักษณะคล้ายๆ คอมพิวเตอร์เครื่องหนึ่งเลยทีเดียว แต่ทำหน้าที่เฉพาะจัดการเรื่อง RAID ที่ซับซ้อนมากๆ ได้ อย่างรวดเร็วและมีประสิทธิภาพ ซึ่งราคาก็จะแพงตามความสามารถไปด้วย
- Software RAID : เป็น software ที่พัฒนาขึ้นเพื่อจัดการกับเรื่อง RAID โดยเฉพาะ อาจแถมมากับ OS เลยก็ได้ เช่น Windows server, UNIX, Linux มีข้อดีคือราคาถูกกว่า Hardware RAID ง่ายในการจัดการกว่า เพียงแค่ติดตั้ง software ในเครื่อง server ที่ต้องการทำ RAID (หรือถ้ามากับ OS แล้วก็ไม่ต้องติดตั้ง)ก็สามารถจัดการ RAID ได้แล้ว แต่ก็มีข้อเสียคือ เกิดคอขวดเมื่อเครื่องที่ลง software RAID มี I/O น้อย และ RAID บาง level ยังกินทรัพยากรของ CPU มากอีกด้วย ดังนั้นหากระบบที่เราจะทำ RAID ต้องการ performance มาก ต้องพิจารณาเรื่องการใช้ software RAID ให้ดี
กว่าจะได้คำศัพท์ที่ต้องใช้ครบ เล่นเอาเกือบแย่ คำศัพท์ที่ใช้ใน RAID ยังมีอีกเยอะครับ แต่เราเอาแค่พอให้อ่านแล้วเข้าใจก็พอครับ ทีนี้มาดูว่า RAID แบ่งเป็นกี่ประเภทบ้างนะครับ ใน Wikipedia แบ่ง RAID ออกเป็น 2 ประเภทครับ คือ
1 Standard level คือ RAID level ที่เป็น open standard ไม่มีบริษัทใดเป็นเจ้าของ
1.1 Single level
1.2 Multiple level หรือ Nested level
2 Non-Standard level คือ RAID level ที่มีลิขสิทธิ์คิดค้นโดยบริษัทใดบริษัทหนึ่ง
มาดูกันที่ Standard level กันก่อนเลยครับ
1 Standard Level
1.1 Single Level : ก็คือ RAID ที่สร้างขึ้น level เดียว ไม่มีการไปรวมกับ RAID level อื่น (สังเกตจากเลขท้ายคำว่า RAID จะเป็นเลขตัวเดียว)
RAID 0
เป็นการนำพื้นที่ของ Hard Disk ตั้งแต่ 2 ก้อนขึ้นไปมาต่อกันเป็น Array ขนาดของพื้นที่หลังทำ RAID 0 แล้วจะมีขนาดเท่ากับพื้นที่ของ Disk ทุกก้อนรวมกัน ข้อมูลที่จะเขียนลง Disk จะถูกแบ่งออกเป็นชิ้นๆ แต่ละชิ้นจะมีขนาดที่แน่นอนตามขนาดของ "stripe size" ที่กำหนดไว้ (default
คือ 16 kb) แล้วเขียนลง Hard Disk แต่ละก้อนที่ใช้ทำ RAID 0 (จึงเรียกว่า Stripe) แต่วิธีการนี้ไม่มีการป้องกันข้อมูลเสียหายเนื่องจาก Disk เสีย ถ้ามี Disk ก้อนใดเสีย ข้อมูลก็จะเสียหายทั้งหมด จำนวน Disk ที่น้อยที่สุดที่สามารถสร้าง RAID 0 ได้ คือ 2 ก้อน
แต่มีการกล่าวกันว่าถ้าใช้ Disk 2 ก้อนก็จะมีความเสี่ยงที่ข้อมูลจะเสียหายเนื่องจาก Disk เสียเพิ่มเป็น 2 เท่า เมื่อเทียบกับ Disk ก้อนเดียวและยิ่งมีจำนวนก้อนที่มากขึ้นก็ยิ่งมีความเสี่ยงมากขึ้นด้วย
จากรูปจะเห็นว่า RAID 0 ที่อยู่ในรูปใช้ Disk ทั้งหมด 4 ก้อนเมื่อมีข้อมูลเข้ามาที่ RAID 0 ข้อมูลจะถูกแบ่งออกเป็นชิ้นๆ ตามที่กำหนดไว้ในค่า "stripe size" แล้วนำแต่ละชิ้นไปเขียนลงใน Disk ที่ตำแหน่ง Block เดียวกันของ Disk แต่ละก้อนที่ใช้สร้าง RAID 0 คือ เขียนชิ้น A ลงใน Block ที่ 1 ของ Disk ก้อนที่ 1 เขียนชิ้น B ลงใน Block ที่ 1 ของ Disk ก้อนที่ 2 เขียนชิ้น C ลงใน Block ที่ 1 ของ Disk ก้อนที่ 3 เขียนชิ้น D ลงใน Block ที่ 1 ของ Disk ก้อนที่ 4 เขียนชิ้น E ลงใน Block ที่ 2 ของ Disk ก้อนที่ 1 เขียนชิ้น F ลงใน Block ที่ 2 ของ Disk ก้อนที่ 2 ทำเช่นนี้สลับกันไปเรื่อยๆ จนกว่าจะครบทุกชิ้น โดยการเขียนนี้ จะเกิดขึ้นพร้อมกันทุกก้อน ความเร็วจึงเพิ่มขึ้นเป็น 4 เท่าของ Disk ก้อนเดียว
ข้อดี
1 การอ่านและเขียนข้อมูลมีความเร็วมากขึ้น (Bandwidth หรือ I/O เพิ่มขึ้น) ตามจำนวน Disk ที่นำมาสร้าง RAID 0
2 ได้พื้นที่เพิ่มขึ้นใกล้เคียงกับพื้นที่รวมของ Disk ทุกก้อนที่นำมาสร้าง RAID 0
ข้อด้อย
1 ไม่มีการป้องกันข้อมูลกรณี Disk เสีย เมื่อมี Disk ก้อนใดก้อนหนึ่งใน RAID 0 เสีย ข้อมูลทั้งหมดใน RAID0 จะเสียหายด้วย
2 ยิ่งมี Disk มากก็ยิ่งเพิ่มความเสี่ยงที่ข้อมูลจะเสียหายเนื่องจาก Disk เสีย
RAID 1
RAID level นี้เรียกได้อีกอย่างว่า Mirroring ต้องใช้ Disk 2 ก้อน ที่มีขนาดเท่ากัน ลักษณะการทำงานคล้ายการ copy ทุกสิ่งทุกอย่างของ Disk ก้อนหนึ่งไปยังอีกก้อนหนึ่ง อาจจะใช้ Hardware RAID หรือ Software RAID ก็ได้ เนื้อที่ที่ได้หลังจากทำ RAID 1 แล้วจะเหลือพื้นที่ของ disk แค่ก้อนเดียว เมื่อเทียบกับ RAID 0 ที่สร้างจาก disk 2 ก้อน ก็จะลดพื้นที่ลงครึ่งหนึ่งเลยทีเดียว แต่เมื่อมี disk ก้อนใดก้อนหนึ่งเสีย ก็จะมีการอ่านหรือเขียนบน disk ก้อนที่ไม่เสียหายและใช้ก้อนนั้นทำงานแทน เมื่อเราเปลี่ยน disk ที่เสียออกเอาก้อนใหม่มาใส่ ถ้าเป็น Hardware RAID ก็จะทำการ Duplicate ข้อมูลจากก้อนที่ทำงานอยู่มาใส่ก้อนใหม่ให้อัตโนมัติ ถ้าเป็น Software RAID เราก็ไปใช้คำสั่งให้ทำการ Duplicate ข้อมูล RAID 1 ก็จะกลับมาสมบูรณ์ เหมือนเดิม RAID level นี้ เหมาะกับงานที่ไม่ต้องการ performance และพื้นที่เพิ่มจากการทำ RAID แต่ต้องการป้องกันความเสียหายของข้อมูลเนื่องจาก Disk เสีย
ข้อดี
1 มีการป้องกันความเสียหายที่เกิดขึ้นกับข้อมูลเนื่องจาก disk เสีย
ข้อด้อย
1 พื้นที่ที่ใช้ในการเก็บข้อมูลหลังทำ RAID แล้วลดลง ครึ่งหนึ่ง (จาก disk 2 ก้อน ทำ RAID แล้วเหลือพื้นที่ก้อนเดียว)
2 ไม่เพิ่ม performance จากการทำ RAID (I/O หรือ Bandwidth เท่าเดิม)
RAID 2
เรียกอีกอย่าง(ให้ยากๆ) ว่า Bit-level striping with Hamming code (ECC, Error Correcting Code) การทำงานของ RAID 2 นี้จะมีการแบ่งข้อมูลออกเป็นชิ้นๆ ในระดับ bit (เลยทีเดียว) แล้วมีการคำนวณค่า redundant bit โดยใช้วิธี Hamming code ก่อนเขียนข้อมูลทีละ bit แยกกันลง ส่วนที่เป็น data disk (จากในรูปจะเห็นเป็นส่วนที่เป็นสีม่วง) และเขียนค่า redundant bit ที่คำนวณได้ลงในส่วนที่เรียกว่า ECC disk (ในรูปส่วนที่เป็นสีแดง) และเมื่อมีการอ่านข้อมูล ก็จะมีการอ่านส่วน ECC ขึ้นมาคำนวณกลับด้วยว่าข้อมูลที่อ่านขึ้นมาไม่มี error ใดๆ แต่ถ้ามี error เกิดขึ้น 1 bit ECC ก็ยังสามารถแก้กลับได้โดยอัตโนมัติ แต่ปัจจุบันผู้ผลิตได้มีการรวมวิธี ECC นี้ไว้ภายใน Hard Disk เรียบร้อยแล้ว
เนื่องจากความยุ่งยากในการทำงานและต้องใช้ Disk จำนวนมากในการสร้าง RAID ทำให้ความนิยมของ RAID level นี้ลดลงจนไม่มีผู้ใดใช้แล้ว และยังมีข้อเสียที่ว่า เมื่อ ECC Diskเสีย ก็จะไม่สามารถอ่านหรือเขียนข้อมูลได้อีก เนื่องจากไม่สามารถตรวจสอบได้ว่า มี error bit หรือไม่
ข้อดี
1 มีการคำนวณ ECC เพื่อป้องกันความผิดพลาดของข้อมูลในระดับ bit และสามารถแก้ไขข้อผิดพลาดได้เมื่อมีข้อผิดพลาด 1 bit
ข้อด้อย
1 มีความยุ่งยากในการทำงานเนื่องจากต้องคำนวณข้อมูลออกมาเป็น ECC ก่อนจึงเป็นคอขวดในการเขียนและอ่าน
2 ต้องใช้ Disk จำนวนมากในการสร้าง RAID level นี้ เช่น ถ้าต้องการพื้นที่ Disk 10 ก้อน ต้องเพิ่ม ECC disk 4 ก้อน รวมเป็น 14 ก้อน หรือถ้าต้องการพื้นที่ Disk 32 ก้อน ต้องเพิ่ม ECC disk 7 ก้อน รวมเป็น 39 ก้อน
RAID 3
เรียกอีกอย่างว่า Byte-level striping with dedicated parity การทำงานของ RAID 3 จะแบ่ง (stripe) ข้อมูลออกเป็นส่วนๆ ในระดับ byte และจัดเป็นกลุ่มๆ กลุ่มละไม่เกิน 1024 byte ตามจำนวน disk ที่นำมาสร้าง RAID 3 แล้วเขียนลงใน disk จากนั้นจะมีการคำนวณค่า parity ของข้อมูลชุดนั้น ใส่ลงใน disk อีก 1 ก้อนเพื่อทำเป็น parity disk เมื่อมี disk ก้อนใดก้อนหนึ่งเสียก็จะสามารถกู้คืนมาได้ แม้ก้อนนั้นจะเป็น parity disk ก็ตาม จึงไม่เกิด single point of failure เนื่องจาก parity disk แต่ RAID 3 ทั้งชุด จะมีdiskเสียในขณะใดขณะหนึ่งได้แค่ก้อนเดียว ถ้าเกินก็ไม่สามารถกู้ข้อมูลคืนมาได้
แต่เนื่องจาก RAID 3 มีการเก็บ parity ไว้ใน disk แค่ก้อนเดียวจึงกลายเป็นคอขวดเพราะทุกครั้งที่มีการเขียนข้อมูล parity จะเขียนลงใน parity disk แค่ก้อนเดียว ถ้ามีการเขียนมากๆ
ก็จะทำให้ประสิทธิภาพลดลง RAID 3 ต้องใช้ disk ในการสร้างต้องเป็น disk ที่มีขนาดเท่ากันอย่างน้อย 3 ก้อน และจำเป็นต้องใช้ Hardware RAID ในการสร้าง พื้นที่ที่ได้หลังจากสร้าง RAID แล้วจะหายไป 1 ก้อน เนื่องจากเอาไปทำ parity disk เช่น ใช้ disk 5 ก้อน ก้อนละ 60GB จะได้พื้นที่ใช้งานเป็น 60GB (5 - 1) = 240GB (อีก 60GB เป็นก้อน parity disk)
ข้อดี
1 มีการป้องกันความเสียหายเนื่องจาก disk เสีย (มีการคำนวณ parity ไปเก็บใน parity disk)
2 ได้ใช้พื้นที่ของ disk รวมเป็น array หลังจากการทำ RAID
ข้อด้อย
1 เกิดคอขวดขณะมีการเขียนข้อมูลเนื่องจากเขียน parity ลง parity disk ก้อนเดียว
2 เสียพื้นที่ disk เพื่อสร้าง parity disk, จำนวน disk ยิ่งน้อยยิ่งมีอัตราส่วนการเสียพื้นที่มาก
RAID 4
เรียกอีกอย่างว่า Block-level striping with dedicated parity มีลักษณะคล้าย RAID 3 แล้วพัฒนาในด้านลักษณะการหั่น(stripe) ข้อมูล โดย RAID 4 จะหั่นข้อมูลในระดับ block เพื่อเพิ่ม performance และ data disk แต่ละก้อนทำงานเป็นอิสระต่อกัน (independent) ช่วยเพิ่มความเร็วในการเขียนมากขึ้น แต่ยังคงมีการคำนวณ parity และเก็บไว้ใน parity disk ก้อนเดียวอยู่ ด้าน performance เมื่อเทียบกับ RAID 3 แล้วถือว่ามี performance ดีกว่า แต่ก็ยังติดเรื่องคอขวดของการเขียน parity และเช่นกัน ถ้ามี disk เสีย 1 ก้อนแม้จะเป็น parity disk RAID 4 ก็ยังคงสามารถกู้ข้อมูลกลับคืนมาได้
จำนวน disk ที่ใช้สร้าง RAID 4 ต้องใช้ disk ที่มีขนาดเท่ากัน อย่างน้อย 3 ก้อน และพื้นที่ก็จะหายไป 1 ก้อนเนื่องจากนำไปใช้เป็น parity disk และจำเป็นต้องใช้ Hardware RAID ในการสร้าง
ข้อดี
1 มีการป้องกันความเสียหายเนื่องจาก disk เสีย (มีการคำนวณ parity ไปเก็บใน parity disk) เช่นเดียวกับ RAID 3
2 ได้ใช้พื้นที่ของ disk รวมเป็น array หลังจากการทำ RAID
3 มีการเขียนข้อมูลแบบ Block ทำให้เพิ่มความเร็วในการเขียน
ข้อด้อย
1 ยังคงเกิดคอขวดขณะมีการเขียนข้อมูลเนื่องจากเขียน parity ลง parity disk ก้อนเดียว
2 เสียพื้นที่ disk เพื่อสร้าง parity disk,จำนวน disk ยิ่งน้อยยิ่งมีอัตราส่วนการเสียพื้นที่มาก
RAID 5
เป็น RAID ที่ได้รับความนิยมมากในบรรดา RAID ทั้งหลาย เรียกอีกอย่างว่า block-level striping with distributed parity เป็นการปรับปรุงเรื่องคอขวดของ RAID 4 โดยกระจาย parity ไปไว้ใน disk ทุกก้อนแทนการเอาไว้ใน parity disk แค่ก้อนเดียว
จำนวน disk ที่ใช้สร้าง RAID 5 ต้องใช้ disk ที่มีขนาดเท่ากัน อย่างน้อย 3 ก้อน และพื้นที่ก็จะหายไป 1 ก้อนเสมอ (ไม่ว่าจะใช้กี่ก้อนก็เสียพื้นที่ 1 ก้อนเสมอ) เนื่องจากใช้เป็น parity สามารถใช้ Hardware RAID หรือ Software RAID ในการสร้างได้ แต่ Software RAID จะต้องใช้ CPU ในการคำนวณมาก ทำให้มีผลกับ performance โดยรวมของระบบ Software RAID จึงไม่เหมาะกับระบบที่ต้องมีการอ่านและเขียนกันตลอดเวลา เช่น Database ส่วน Hardware RAID ในปัจจุบัน พัฒนาขึ้นมากจนสามารถรองรับระบบที่ต้องมีการอ่านและเขียนแบบ Database ได้ดีมากแล้ว และยิ่งถ้าเป็น SAN หรือ external storage ก็ยิ่งสามารถรองรับได้ดี (แต่ราคามันไม่รองรับกับกระเป๋าเราเท่าไหร่ครับ)
สิ่งที่ต้องคำนึงถึงอีกอย่างของ RAID 5 คือ มี parity เพียงชุดเดียว แม้จะกระจายไปใน disk ทุกก้อนก็ตาม RAID 5 จะสามารถกู้ข้อมูลคืนมาได้เมื่อมี disk เสียในขณะใดขณะหนึ่งแค่ก้อนเดียว ถ้าเกินก็ไม่สามารถกู้คืนได้ และยิ่งถ้ามีจำนวน disk ที่ใช้สร้าง RAID 5 มาก ก็ยิ่งเพิ่มโอกาสที่จะทำให้ disk เสียมากกว่า 1 ก้อนได้มาก ลองคิดดูว่ามี disk เสีย 1 ก้อน แล้วเราเปลี่ยน disk ก้อนใหม่ใส่ ขณะกำลัง rebuid ข้อมูลกลับไปใส่ใน disk ก้อนใหม่ ปรากฎว่ามี disk อีกก้อนเสีย ข้อมูลก็จะเสียหายจนไม่สามารถกู้คืนมาได้ เพราะ ก้อนใหม่ก็ยัง rebuild ไม่เสร็จ ก้อน ที่เก็บ data + parity ยังมาเสียอีก ทำให้คำนวณ data + parity กลับไปใส่ให้ก้อนใหม่ไม่ได้
จากรูปแสดงให้เห็น file ขนาดต่างๆ ที่เก็บลงใน disk แบบ RAID 5 ที่ใช้ disk จำนวน 4 ก้อน และใช้ stripe size ขนาด 16KB
สีแดง : เป็น file ขนาด 4KB
สีน้ำเงิน : เป็น file ขนาด 20KB
สีเขียว : เป็น file ขนาด 100KB
สีชมพู : เป็น file ขนาด 500KB
สีเทา : เป็นส่วนของ parity
1 มีการป้องกันความเสียหายเนื่องจาก disk เสีย โดยมีการคำนวณ parity และกระจายเก็บใน disk ทุกก้อนใน RAID
2 ได้ใช้พื้นที่ของ disk รวมเป็น array หลังจากการทำ RAID
3 มีการเขียนข้อมูลแบบ Block ทำให้เพิ่มความเร็วในการเขียน
ข้อด้อย
1 เนื่องจากยังคงมีการคำนวณ parity จึงต้องใช้ความสามารถของ Hardware หรือ Software RAID มาก
2 เสียพื้นที่ disk เพื่อสร้าง parity, จำนวน disk ยิ่งน้อยยิ่งมีอัตราส่วนการเสียพื้นที่มาก
RAID 6
พัฒนาจาก RAID 5 โดยเพิ่ม parity อีก 1 ชุด จึงเรียกอีกอย่างว่า block-level striping with double distributed parity การทำงานคล้าย RAID 5 แต่เพิ่ม parity ขึ้นมาอีก 1 ชุด (รวมเป็น 2 ชุด) โดยใช้วิธีคำนวณต่างกันไป และมอง parity ชุดแรกเสมือนเป็นข้อมูล เก็บกระจายไปใน disk ทุกก้อนที่ใช้สร้าง RAID วัตถุประสงค์ของ RAID 6 ก็เพื่อเพิ่มการป้องกัน disk เสียให้มากขึ้น คือ RAID 6 สามารถรองรับ disk เสียได้พร้อมกัน 2 ก้อน โดยยังสามารถกู้ข้อมูลคืนมาได้ แต่ก็ต้องแลกด้วย performance ที่ลดลงอย่างเห็นได้ชัด เพราะต้องคำนวณ parity ถึง 2 ชุด แต่ถ้ามีจำนวน disk เพิ่มขึ้นจะช่วยให้ performance เพิ่มขึ้นเล็กน้อย
จำนวน disk ที่ใช้สร้าง RAID 6 ต้องใช้ disk ที่มีขนาดเท่ากัน อย่างน้อย 4 ก้อน และพื้นที่ก็จะหายไป 2 ก้อนเสมอ (ไม่ว่าจะใช้กี่ก้อนก็เสียพื้นที่ 2 ก้อนเสมอ) เนื่องจากใช้เป็น parity 2 ชุด ต้องใช้ Hardware RAID รุ่นใหม่ๆ ในการสร้าง ส่วน Software RAID จะต้องใช้ CPU ในการคำนวณมาก ทำให้มีผลกับ performance โดยรวมของระบบจึงไม่นิยมใช้ หรือข้ามไปใช้ SAN หรือ external storage ก็จะทำให้ performance ดีขึ้นได้บ้าง
ด้วยเหตุที่ต้องสูญเสียพื้นที่ disk และ ต้องใช้ Hardware RAID ที่มีประสิทธิภาพสูงมาก จึงมีการหันไปใช้วิธีลูกผสม แทนการใช้ RAID 6 เช่น RAID 1+0 เป็นต้น
สีแดง : เป็น file ขนาด 4KB
สีน้ำเงิน : เป็น file ขนาด 20KB
สีเขียว : เป็น file ขนาด 100KB
สีชมพู : เป็น file ขนาด 500KB
สีเทา : เป็นส่วนของ parity จะเห็นว่ามี parity 2 ชุด
ข้อดี
1 เพิ่มการป้องกันข้อมูลเนื่องจาก disk เสียหายโดยสร้างเป็น parity 2 ชุด
ข้อด้อย
1 ต้องใช้ความสามารถของ Hardware RAID อย่างมากในการคำนวณ parity ทั้งสองชุด performance จึงลดลงอย่างเห็นได้ชัด
2 เสียพื้นที่สำหรับเป็น parity จำนวนมาก ทำให้ต้นทุนสูง จำนวน disk ยิ่งน้อยยิ่งมีอัตราส่วนการเสียพื้นที่มาก
Standard RAID ก็มีประมาณนี้ครับ เดี๋ยวค่อยมาว่าต่อเรื่อง Nested RAID และ Non-Standard RAID
ที่มา :
http://www.pcguide.com/ref/hdd/perf/raid/levels/single.htm
http://en.wikipedia.org/wiki/RAID
http://www.overclockzone.com/spin9/raid/index.html
http://www.ensthai.com/tip_trick/page/overall_raid.php
http://www.nextproject.net/contents/default.aspx?00030
http://en.wikipedia.org/wiki/Standard_RAID_levels
Good article. I am following part 2 and 3
ตอบลบ