ประการแรก: สำหรับผู้ที่ยังเชื่อใน "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 อาจมีอะไหล่สำรอง มันเรียกว่า "ผู้ใช้";)