mdadm - ลบดิสก์ออกจาก RAID0


11

ดังนั้นฉันอยากรู้ว่าเป็นไปได้ที่จะทำสิ่งต่อไปนี้กับ mdadm:

  1. ผมเริ่มต้นด้วยการกำหนดค่า RAID0 เมื่อวันที่ 2 ดิสก์: และsdasdb
  2. ฉันต้องการเพิ่มอีกหนึ่งดิสก์ในอาร์เรย์sdcและย้ายข้อมูลทั้งหมดsdbไปไว้ในนั้น
  3. sdbปลด

ตอนนี้ฉันเห็นตัวเลือกเดียวเท่านั้น - ฉันหยุดอาร์เรย์คัดลอกsdbไปที่sdcด้วยddหรือเครื่องมือคัดลอกบล็อกอื่น ๆ และเริ่มต้นอาร์เรย์กลับ

ฉันพลาดอะไรไปหรือเปล่า? เป็นไปได้ที่จะทำเช่นนี้กับ mdadm?


คุณสามารถทำให้ sdb เป็นมิเรอร์ชั่วคราวแล้วซิงค์ sdc กับมันในพื้นหลัง - นี่เป็นการลดเวลาที่จำเป็นในการหยุดทำงานแม้ว่าฉันจะไม่ได้ทำสิ่งนี้ในฐานะมือใหม่
peterh - Reinstate Monica

ฉันไม่ใช่มือใหม่แน่นอน :) คุณช่วยบอกฉันเพิ่มเติมเกี่ยวกับกระจกชั่วคราวได้ไหม มันคือคุณสมบัติ mdadm?
maniaque

ไม่มันเป็นคุณสมบัติการโจมตีที่เรียบง่าย ฉันคิดว่าอาร์เรย์ raid1 ชั่วคราวซึ่งอาจเป็นสถานที่ของ sdb ในอาร์เรย์ raid1 ของคุณ ในขณะที่คุณกำลังซิงค์ sdb กับ sdc คุณสามารถใช้เป็นส่วนหนึ่งของอาร์เรย์ raid0 ของคุณได้
peterh - Reinstate Monica

ดังนั้นฉันเข้าใจคุณใช่ไหม 1. หยุดอาร์เรย์ 2. สร้างอาร์เรย์ RAID1 เพิ่มอีกหนึ่งรายการด้วย sbd และ sdc 3. และฉันจะถาม mdadm ได้อย่างไรเริ่มต้น RAID0 ด้วย md1 แทนที่จะเป็น sdb
maniaque

ยังไม่ได้ทำการวิจัยมากนัก แต่ดูเหมือนว่าคุณควรจะเติบโตจาก RAID0 -> RAID5 จากนั้นย่อขนาดกลับสู่ RAID0
Zoredache

คำตอบ:


17

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


1

เท่าที่ฉันรู้เมื่อคุณตั้งค่า RAID0 คุณไม่สามารถเปลี่ยนหนึ่งในดิสก์ คุณสามารถสำรองข้อมูลและสลับดิสก์และกู้คืนข้อมูลสำรอง ฉันแค่ต้องการ RAID5 3 แผ่นที่คุณมี ด้วยวิธีนี้ในอนาคตคุณสามารถวางดิสก์และสร้างใหม่ได้


ฉันรู้วิธีการทำสิ่งที่ฉันพูดถึงด้วย RAID5 - ฉันสามารถเพิ่มดิสก์ใหม่ลงในอาร์เรย์ (อะไหล่) จากนั้นทำเครื่องหมายดิสก์ที่ฉันต้องการย้ายออกเป็นความผิดพลาดและลบมันออกจากอาร์เรย์เช็ด superblock หลังจากนั้น แต่ฉันสนใจที่จะทำงานแบบเดียวกันกับ RAID0 :)
maniaque

@ maniaque เรียกว่า RAID 0 เพราะศูนย์คือจำนวน RAID ที่คุณได้รับ ไม่มีอะไรสำคัญเลยที่จะถูกวางไว้บน RAID 0
Michael Hampton

@MichaelHampton ฉันคิดว่าคุณหมายถึงความซ้ำซ้อนไม่ใช่ RAID แต่ข้อความของคุณถูกต้อง 100%
joeg1ff

@MichaelHampton โปรดดูคำตอบของฉันด้านล่าง :)
maniaque

0

RAID 0 ไม่ได้ให้ความซ้ำซ้อน

ดังนั้นจึงไม่รองรับการเปลี่ยนฮาร์ดไดรฟ์


1
กรุณาดูด้านล่าง ไม่มีอะไรที่เป็นไปไม่ได้เมื่อคุณเข้าใจระดับ RAID;)
maniaque
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.