จำเป็นต้องค้นหาไดรฟ์ที่ทำมิรเรอร์ภายในอาเรย์ RAID-10


9

ฉันมีเซิร์ฟเวอร์สื่อภายในบ้านที่ทำงานบน openSUSE 12.2 ฉันใช้ไดรฟ์ 2TB สองตัวในการกำหนดค่า RAID-10 ฉันจงใจซื้อไดรฟ์สองประเภท: สี่ Seagate Barracuda Green และ Western Digital Red เป้าหมายของฉันคือการกำหนดค่า RAID เพื่อให้คู่มิรเรอร์ภายในอาร์เรย์จะประกอบด้วยไดรฟ์ที่แตกต่างกัน (เช่นไดรฟ์ Seagate หนึ่งไดรฟ์และหนึ่งไดรฟ์ WD) YaST2 Partitioner โชคไม่ดีที่ฉันไม่ได้เลือกระดับนี้ในโครงสร้างของอาร์เรย์ดังนั้นตอนนี้ฉันกำลังพยายามค้นหาว่าโครงสร้าง RAID10 เริ่มต้นเป็นอย่างไร

ฉันรู้สิ่งต่อไปนี้:

  • sdc, sdd, sde และ sdf เป็นไดรฟ์ WD ทั้งหมด
  • sdg, sdh, sdi และ sdj เป็นไดรฟ์ Seagate ทั้งหมด

ฉันเลือกเลย์เอาต์ 'n2' เริ่มต้นเมื่อสร้าง RAID ฉันเดาตามข้อมูลจากสองแหล่งนี้คือไดรฟ์ที่อยู่ติดกันถูกทำมิเรอร์ (เช่น sdc == sdd, sde == sdf, ฯลฯ ) แต่ฉันต้องการทราบอย่างแน่นอน:

นี่คือผลลัพธ์ของ 'mdadm --detail / dev / md0':

/dev/md0:
        Version : 1.0
  Creation Time : Sat Mar 16 12:55:11 2013
     Raid Level : raid10
     Array Size : 7814045696 (7452.05 GiB 8001.58 GB)
  Used Dev Size : 1953511424 (1863.01 GiB 2000.40 GB)
   Raid Devices : 8
  Total Devices : 8
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Sat Mar 16 13:09:37 2013
          State : active, resyncing
 Active Devices : 8
Working Devices : 8
 Failed Devices : 0
  Spare Devices : 0

         Layout : near=2
     Chunk Size : 2048K

  Resync Status : 1% complete

           Name : aldaris:0  (local to host aldaris)
           UUID : c6cc3943:97394500:b77d44cd:f02ed876
         Events : 149

    Number   Major   Minor   RaidDevice State
       0       8       33        0      active sync   /dev/sdc1
       1       8       49        1      active sync   /dev/sdd1
       2       8       65        2      active sync   /dev/sde1
       3       8       81        3      active sync   /dev/sdf1
       4       8       97        4      active sync   /dev/sdg1
       5       8      113        5      active sync   /dev/sdh1
       6       8      129        6      active sync   /dev/sdi1
       7       8      145        7      active sync   /dev/sdj1

และนี่คือเนื้อหาของ / proc / mdstat:

Personalities : [raid10] md0 : active raid10 sdj1[7] sdi1[6] sdh1[5] sdg1[4] sdf1[3] sde1[2] sdd1[1] sdc1[0]
      7814045696 blocks super 1.0 2048K chunks 2 near-copies [8/8] [UUUUUUUU]
      [>....................]  resync =  4.8% (375163456/7814045696) finish=1206.5min speed=102751K/sec
      bitmap: 57/59 pages [228KB], 65536KB chunk

unused devices: <none>

ดังนั้นคำถามของฉันคือ:

  1. ฉันจะบอกไดรฟ์ที่เป็นกระจกของกันและกันได้อย่างไร
  2. มีวิธีในการเปลี่ยนแปลงหรือไม่ฉันควรสลับสายไฟรอบ ๆ (เพราะจะสลับอักษรไดรฟ์) แล้วสร้าง RAID ใหม่หรือไม่

ขอบคุณล่วงหน้า.


สำหรับผู้ที่ต้องการทราบเหตุผลของฉันในการทำสิ่งนี้: ไดรฟ์ของรุ่นและแบทช์เดียวกันดำเนินการภายใต้โหลดการใช้งานที่คล้ายกันเวลาทำงานและอุณหภูมิมีการเปลี่ยนแปลงระบบเล็กน้อยและความแตกต่างในเวลาที่ความล้มเหลวระหว่างไดรฟ์ โดยการเปลี่ยนแปลงแบบสุ่มในกระบวนการผลิต สิ่งนี้จะเพิ่มความเสี่ยงของไดรฟ์หลายตัวที่กำลังจะตายในครั้งเดียว โดยการซื้อไดรฟ์ไม่เพียง แต่จากแบตช์ที่แตกต่างกัน แต่ผู้ผลิตที่แตกต่างกันโดยสิ้นเชิงฉันกำลังแนะนำการเปลี่ยนแปลงอย่างเป็นระบบในอาเรย์ของฉัน


1
เซิร์ฟเวอร์สื่อในบ้านไม่ใช่หัวข้อสำหรับ ServerFault ที่กล่าวว่าคุณอย่างชัดเจนใส่ความพยายามบางอย่างในนี้และฉันจะธงสำหรับการโยกย้ายไปยังunix.SE
Andrew B

@ AndrewB ทำไมเป็นเช่นนั้น
poige

มันเป็นคำถามที่น่าสนใจมากและการให้เหตุผลที่เข้าใจกันดี คุณไม่ต้องเปลี่ยนสายเนื่องจากเพียงระบุดิสก์เมื่อ (อีกครั้ง) การสร้าง RAID นั้นง่ายกว่ามาก
poige

@poige นี้ตกอยู่ภายใต้อะไรในการตั้งค่าบ้าน ฉันพยายามทำให้ชัดเจนว่าฉันพิจารณาคำถามที่ค้นคว้าอย่างเพียงพอแล้ว
Andrew B

ถ้าฉันจะคาดเดาอย่างดุเดือดฉันก็จะเดาว่าคุณสามารถดูRaidDeviceคอลัมน์ได้ อาจง่ายเหมือน (0,1), (2,3), (4,5), (6,7) นั่นจะทำให้ฉันคิดว่าคุณต้องสร้าง RaidDevice ให้เหมือน WD / Sea / WD / Sea / etc ... แต่ฉันไม่แน่ใจ 100%
Zoredache

คำตอบ:


6

รุ่นล่าสุดmdadmแสดงสิทธิ์นี้ในรายละเอียดของอาร์เรย์ ตัวอย่างจากmdadm v3.3 - 3rd September 2013

 $ mdadm --detail /dev/md1

/dev/md1:
        Version : 1.1
  Creation Time : Tue Aug 23 11:45:41 2016
     Raid Level : raid10
     Array Size : 3864803328 (3685.76 GiB 3957.56 GB)
  Used Dev Size : 1932401664 (1842.88 GiB 1978.78 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Fri Aug 26 09:39:28 2016
          State : active
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : near=2
     Chunk Size : 512K

           Name : px4-300r-THXOAP:1  (local to host px4-300r-THXOAP)
           UUID : 5ee06437:83dfdb64:808feaa2:5d57b1e6
         Events : 620

    Number   Major   Minor   RaidDevice State
       4       8       50        0      active sync set-A   /dev/sdd2
       1       8       34        1      active sync set-B   /dev/sdc2
       2       8       18        2      active sync set-A   /dev/sdb2
       3       8        2        3      active sync set-B   /dev/sda2

หมายเหตุ denotation หรือset-A set-Bในกรณีข้างต้นsddและsdbสามารถล้มเหลวพร้อมกันโดยไม่สูญเสียข้อมูล เป็นไปได้ว่าข้อมูลนี้ไม่สามารถใช้ได้ในขณะที่อาร์เรย์กำลังสร้างใหม่


2

ฉันมีปัญหาเดียวกันและหลังจาก googling ในขณะที่ฉันไม่พบคำตอบที่เชื่อถือได้ หลังจากให้ความคิดกับฉันฉันคิดว่ากระจกมีข้อมูลเหมือนกันและเราสามารถเปรียบเทียบบางส่วนของมันได้

หมายเหตุ: ระวังถ้าคุณมีมากกว่า 2 ไดรฟ์ที่มีรายการตรวจสอบเดียวกันคุณอาจเปรียบเทียบการว่างเปล่าเลือกเลือกออฟเซตอื่น (ข้ามตัวเลือก)

ด้วยคำสั่งบางอย่างนี้คุณสามารถค้นหาได้:

for disk in sda sdb sdc sdd
do
  echo -n "$disk = ";
  dd if=/dev/$disk skip=1M bs=1M count=1 2>/dev/null | md5sum;
done

สิ่งนี้จะแสดงผลเช่น:

sda = 7c4ef0f3e0143b35e044d5d65908a3a2  -
sdb = 7c4ef0f3e0143b35e044d5d65908a3a2  -
sdc = e02f7d61ad3791bd691da5b7516928a5  -
sdd = e02f7d61ad3791bd691da5b7516928a5  -

ตอนนี้เรารู้แล้วว่า sda / sdb เป็นหนึ่งในกระจกเงาและ sdc / sdd อีกอันหนึ่ง หนึ่งในนั้นต้องอยู่เพื่อหลีกเลี่ยงการสูญเสียข้อมูล

คำสั่ง "dd" กำลังอ่านหนึ่งครั้ง (count = 1) หนึ่งเมกะไบต์ (bs = 1M) ที่หนึ่งเมกะไบต์ออฟเซ็ตจากดิสก์เริ่มต้น (skip = 1M) อย่าข้าม = 0 เนื่องจากจุดเริ่มต้นของดิสก์มีข้อมูลแตกต่างกัน ข้อมูลมักจะเริ่มหลังจาก 1MB


dd if=/dev/$disk skip=1M bs=1M count=1ไม่ได้ผลสำหรับฉัน dd (coreutils) 8.23จาก Debian 8 (Jessie) ไม่รองรับskipหน่วย แต่ผมใช้skip=1ที่จะสัมพันธ์กับ1 bsอาจเป็นเพราะพิมพ์ผิด?
Daniel Böhmer

FYI หากคุณเห็น MD5 รวมการโทรd41d8cd98f00b204e9800998ecf8427eของคุณddล้มเหลว นั่นคือแฮชของสตริงว่าง :-)
Daniel Böhmer

0

ฉันคิดว่าคุณกำลังพูดถึงอาร์เรย์ RAID 10 ตัวจริง (1 + 0 ลายมิเรอร์)

sdc/sdg = md0 raid1 2TB |
sdd/sdh = md1 raid1 2TB |_  md4 raid0 8TB
sde/sdi = md2 raid1 2TB |
sdf/sdj = md3 raid1 2TB |

1. สร้างอาร์เรย์ RAID 4 รายการของคุณ:

mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/{sdc,sdg}
mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/{sdd,sdh}
mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/{sde,sdi}
mdadm --create /dev/md3 --level=1 --raid-devices=2 /dev/{sdf,sdj}

ในเวลานี้คุณมี 4 RAID 1 อาร์เรย์ที่มีพื้นที่ 2TB ในแต่ละ

2. มารวมกัน!

mdadm --create /dev/md4 --run --level=0 --raid-devices=4 /dev/md{0,1,2,3}

-ตัวเลือกการรันนั้นมีประโยชน์เพราะส่วนประกอบบางอย่างทำงานในอาเรย์อื่น

3. ปรับไฟล์ mdadm.conf ของคุณ

คุณอาจต้อง (ขึ้นอยู่กับการกำหนดค่าของคุณ) เพื่อปรับไฟล์นี้เพื่อสะท้อนการเปลี่ยนแปลงเกี่ยวกับอาร์เรย์ใหม่ของเรา (/ dev / md4)

4. เพลิดเพลินไปกับ .. DIY raid10 array ใหม่ของคุณ!


ไม่เขาพูดถึงบุคลิก mdadm raid10 ของ linux ฉันเชื่อว่าคำตอบของคุณใช้ไม่ได้ (แม้ว่าจะยุติธรรมมันให้ทางเลือกแก่ OP เพื่อให้บรรลุสิ่งที่เขาต้องการจะทำ)
GnP

ประสิทธิภาพและคุณสมบัติที่รองรับต่างกันเช่นกัน
Joachim Wagner

0

คุณสามารถตรวจสอบว่ามีมิรเรอร์ตัวใดด้วยการเปรียบเทียบข้อมูลตัวอย่างเช่น:

# dd if=/dev/sda1 bs=1M skip=10 count=50 2> /dev/null | md5sum -
7c01afa434fc74aeddc8ec0546e4c332  -
# dd if=/dev/sdb1 bs=1M skip=10 count=50 2> /dev/null | md5sum -
1f0f8166857710d555cb35db4a23891a  -
# dd if=/dev/sdg1 bs=1M skip=10 count=50 2> /dev/null | md5sum -
7c01afa434fc74aeddc8ec0546e4c332  -
# dd if=/dev/sdf1 bs=1M skip=10 count=50 2> /dev/null | md5sum -
1f0f8166857710d555cb35db4a23891a  -

(หากคุณไม่ได้รับการจับคู่ใด ๆ คุณอาจต้องเพิ่มskip =เนื่องจากคุณไม่ได้ข้าม RAID superblocksl และถ้าคุณได้รับ md5sum เดียวกันสำหรับดิสก์มากกว่า 2 แผ่นคุณอาจต้องเพิ่มcount =ตามที่คุณต้องการ อาจเป็นไปได้ที่จะอ่านและ m5summing ศูนย์ - เพื่อป้องกันไม่ให้คุณควรใส่ข้อมูลบางอย่างในการโจมตีครั้งแรกมิฉะนั้นพวกเขาอาจจะเต็มไปด้วยเลขศูนย์)

สำหรับสายการแลกเปลี่ยนรอบ ๆ คุณไม่จำเป็นต้องทำเช่นนั้น - mdadm ควรสร้างการโจมตีด้วยอุปกรณ์ตามที่ระบุในบรรทัดคำสั่งในmdadm - สร้างดังนั้นคุณจะระบุไดรฟ์ตามลำดับที่แตกต่างกันในบรรทัดคำสั่ง


0

เรียกใช้ "mdadm --examine device" บนอุปกรณ์แต่ละชิ้น (เช่น / dev / sda1, / dev / sdb1 เป็นต้น) ข้อมูลที่มีจะช่วยให้คุณกำหนดองค์ประกอบที่เป็นกระจกของกันและกัน

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