ประการแรก: สำหรับผู้ที่ยังเชื่อใน "RAID0 ไม่มีความร้อนแรง" มันอาจมีอะไหล่สำรองทำโดยคนที่เข้าใจระดับ RAID และ mdadm mdadm เป็นซอฟต์แวร์ RAID ดังนั้นจึงสามารถทำสิ่งที่น่าสนใจมากมาย
ให้เครดิตกับZoredacheสำหรับความคิด!
ดังนั้นสถานการณ์:
- คุณมีอาร์เรย์ RAID0 ของดิสก์สองตัว
- คุณต้องการแทนที่หนึ่งในนั้นโดยไม่ต้องหยุดทำงานอาร์เรย์
หากการหยุดทำงานเป็นที่ยอมรับคุณสามารถสร้างสำเนาบล็อกของดิสก์ด้วย dd และประกอบอาร์เรย์ใหม่อีกครั้ง mdadm จะทำสิ่งที่ตกลง
โซลูชัน: ใช้ RAID4 เป็นโซลูชันระดับกลาง
RAID0 -> RAID4 -> RAID0
ดังนั้นหากคุณจำไม่ได้ว่า RAID4 เป็นเรื่องง่าย มีบล็อกแบบพาริตี แต่ไม่เหมือนกับ RAID5 ซึ่งไม่ได้มีการกระจายข้ามอาร์เรย์ แต่อยู่ในดิสก์เดียว นั่นคือประเด็นนี่เป็นสิ่งสำคัญและนี่คือเหตุผลที่ RAID5 ไม่ทำงาน
สิ่งที่คุณต้องการ: ดิสก์อีกสองแผ่นที่มีขนาดเท่ากันกับดิสก์ที่คุณต้องการแทนที่
สิ่งแวดล้อม:
- Ubuntu 14.04 Thrusty Thar
- mdadm - v3.2.5 - 18 พฤษภาคม 2555
- / dev / sdb - เริ่มต้นด้วยจะแทนที่มัน
- / dev / sdc - เริ่มต้นด้วย
- / dev / sdd - จะถูกใช้ชั่วคราว
- / dev / sde - จะถูกใช้แทน sdb
คู่มือ mdadm แบบร้อนอะไหล่ RAID0 ที่ดีที่สุด;)
sudo mdadm -C /dev/md0 -l 0 -n 2 /dev/sd[bc]
md0 : active raid0 sdc[1] sdb[0]
2096128 blocks super 1.2 512k chunks
เราได้สร้างอาร์เรย์ raid0 มันดูหวาน
sudo md5sum /dev/md0
b422ba644a3c83cdf28adfa94cb658f3 /dev/md0
นี่คือจุดตรวจสอบของเรา - ถ้าแม้หนึ่งบิตจะแตกต่างกันในผลลัพธ์/dev/md0
- เราล้มเหลว
sudo mdadm /dev/md0 --grow --level=4
md0 : active raid4 sdc[1] sdb[0]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
ดังนั้นเราจึงเพิ่มอาร์เรย์ของเราเป็น RAID4 เรายังไม่ได้เพิ่มดิสก์พาริตี้ดังนั้นลองทำดู การเติบโตจะเกิดขึ้นทันที - ไม่มีสิ่งใดที่จะคำนวณหรือคำนวณใหม่
sudo mdadm /dev/md0 -a /dev/sdd
md0 : active raid4 sdd[3] sdc[1] sdb[0]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
[===>.................] recovery = 19.7% (207784/1048064) finish=0.2min speed=51946K/sec
เราได้เพิ่มsdd
เป็นดิสก์พาริตี้ สิ่งนี้เป็นสิ่งสำคัญที่ต้องจำ - ลำดับของดิสก์ในแถวแรกนั้นไม่ได้ซิงค์กับรูปภาพในแถวที่สอง! [UU_]
sdd
จะปรากฏขึ้นก่อน แต่ในความเป็นจริงมันเป็นไฟล์ล่าสุดและไม่ได้เก็บข้อมูล แต่เป็นพาริตี
sudo mdadm /dev/md0 -f /dev/sdb
md0 : active raid4 sdd[3] sdc[1] sdb[0](F)
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]
เราสร้างดิสก์ sdb ของเราผิดพลาดเพื่อลบออกในขั้นตอนถัดไป
sudo mdadm --detail /dev/md0
State : clean, degraded
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 32 1 active sync /dev/sdc
3 8 48 2 active sync /dev/sdd
0 8 16 - faulty spare /dev/sdb
รายละเอียดแสดงให้เราเห็นถึงการลบดิสก์แผ่นแรกและที่นี่เราสามารถเห็นลำดับที่แท้จริงของดิสก์ในอาร์เรย์ เป็นสิ่งสำคัญในการติดตามดิสก์ด้วยพาริตี้เราไม่ควรทิ้งไว้ในอาร์เรย์เมื่อกลับไปที่ RAID0
sudo mdadm /dev/md0 -r /dev/sdb
md0 : active raid4 sdd[3] sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]
sdb
จะถูกลบออกอย่างสมบูรณ์สามารถนำไป
sudo mdadm /dev/md0 -a /dev/sde
md0 : active raid4 sde[4] sdd[3] sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]
[==>..................] recovery = 14.8% (156648/1048064) finish=0.2min speed=52216K/sec
เราได้เพิ่มการแทนที่ดิสก์ sdb ของเรา และที่นี่เราไป: ตอนนี้ข้อมูลของsdbจะถูกกู้คืนโดยใช้ความเท่าเทียมกัน Sweeeeet
md0 : active raid4 sde[4] sdd[3] sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/3] [UUU]
เสร็จสิ้น ตอนนี้เรามีความปลอดภัยอย่างสมบูรณ์ - กู้คืนข้อมูลทั้งหมดจาก sdb และตอนนี้เราต้องลบ sdd (จำไว้ว่ามันมีความเท่าเทียมกัน)
sudo mdadm /dev/md0 -f /dev/sdd
md0 : active raid4 sde[4] sdd[3](F) sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
ทำผิดพลาด sdd
sudo mdadm /dev/md0 -r /dev/sdd
md0 : active raid4 sde[4] sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
ลบ sdd ออกจากอาร์เรย์ของเรา เราพร้อมที่จะเป็น RAID0 อีกครั้ง
sudo mdadm /dev/md0 --grow --level=0 --backup-file=backup
md0 : active raid4 sde[4] sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
[=>...................] reshape = 7.0% (73728/1048064) finish=1.5min speed=10532K/sec
Aaaaaaand bang!
md0 : active raid0 sde[4] sdc[1]
2096128 blocks super 1.2 512k chunks
เสร็จสิ้น ลองดูที่การตรวจสอบ md5
sudo md5sum /dev/md0
b422ba644a3c83cdf28adfa94cb658f3 /dev/md0
มีคำถามอื่นอีกไหม? ดังนั้น RAID0 อาจมีอะไหล่สำรอง มันเรียกว่า "ผู้ใช้";)