Perlu menemukan drive mana yang dicerminkan dalam array RAID-10

8

Saya memiliki server media rumah yang berjalan di openSUSE 12.2. Saya menggunakan delapan drive 2TB dalam konfigurasi RAID-10. Saya sengaja membeli dua jenis drive: empat Seagate Barracuda Green dan empat Western Digital Red. Tujuan saya adalah untuk mengkonfigurasi RAID sehingga setiap pasangan cermin dalam array akan terdiri dari drive yang berbeda (yaitu, satu drive Seagate dan satu drive WD). YaST2 Partitioner sayangnya tidak memberi saya tingkat pilihan ini dalam struktur array, jadi sekarang saya mencoba mencari tahu seperti apa struktur RAID10 default.

Saya tahu yang berikut ini:

  • sdc, sdd, sde, dan sdf adalah semua drive WD
  • sdg, sdh, sdi, dan sdj adalah semua drive Seagate

Saya memilih tata letak 'n2' default saat membuat RAID. Dugaan saya berdasarkan info dari dua sumber ini adalah bahwa drive yang berdekatan dicerminkan (yaitu, sdc == sdd, sde == sdf, dll), tapi saya ingin tahu pasti:

Berikut ini adalah output dari '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

Dan di sini adalah isi dari / 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>

Jadi pertanyaan saya adalah:

  1. Bagaimana cara mengetahui drive mana yang merupakan mirror satu sama lain?
  2. Apakah ada cara untuk mengubah ini, atau haruskah saya menukar kabel sekitar (karena itu akan menukar huruf drive) dan kemudian membangun kembali RAID?

Terima kasih sebelumnya.


Catatan tangensial, bagi siapa pun yang ingin tahu alasan saya untuk melakukan ini adalah: Drive dengan model dan batch yang sama, dioperasikan di bawah beban penggunaan yang serupa, waktu kerja, dan suhu memiliki sedikit variasi sistematis, dan perbedaan waktu kegagalan antara drive akan didorong terutama dengan variasi acak dalam proses pembuatan. Ini meningkatkan risiko beberapa drive sekarat sekaligus. Dengan membeli drive tidak hanya dari batch yang berbeda tetapi juga produsen yang sama sekali berbeda, saya memperkenalkan variasi sistematis ke dalam array saya, sehingga mempengaruhi drive mana yang akan gagal pada waktu yang sama.

Komunitas
sumber
1
Server media rumah di luar topik untuk ServerFault. Yang mengatakan, Anda jelas menaruh beberapa upaya ke ini dan aku akan bendera untuk migrasi ke unix.SE .
Andrew B
@AndrewB, mengapa begitu?
poige
Ini pertanyaan yang sangat menarik dan alasan di baliknya sangat dipahami. Anda tidak perlu mengubah kabel karena hanya untuk menentukan disk ketika (kembali) membuat RAID jauh lebih sederhana.
poige
@poige Ini termasuk dalam pengaturan rumah . Saya mencoba memperjelas bahwa saya mempertimbangkan pertanyaan yang diteliti dengan cukup meskipun ini.
Andrew B
Jika saya berspekulasi liar, maka saya kira Anda bisa melihat RaidDevicekolomnya. Mungkin sesederhana (0,1), (2,3), (4,5), (6,7). Itu akan membuat saya berasumsi bahwa Anda perlu membuat RaidDevice berbaris seperti WD / Sea / WD / Sea / dll ... Tapi saya tidak 100% yakin tentang itu.
Zoredache

Jawaban:

5

Versi terbaru mdadmmenunjukkan ini tepat di dalam detail array. Contoh darimdadm 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

Perhatikan denotasinya set-Aatau set-B. Dalam kasus di atas, sdddan sdbbisa gagal bersama tanpa kehilangan data. Mungkin saja data ini tidak tersedia saat array sedang dibangun kembali.

parasietje
sumber
2

Saya memiliki masalah yang sama dan setelah googling beberapa saat saya tidak menemukan jawaban yang dapat diandalkan. Setelah memberikan beberapa pemikiran, saya pikir cermin memiliki data yang sama sehingga kami dapat membandingkan beberapa bagian darinya.

CATATAN: HATI-HATI, JIKA ANDA MEMILIKI LEBIH DARI 2 DRIVA DENGAN CHECKSUM YANG SAMA ANDA MUNGKIN PERBANDINGAN KECEPATAN KOSONG, PILIH LAINNYA OFFSET (lewati opsi).

Dengan beberapa perintah ini, Anda dapat mengetahuinya:

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

Ini akan menampilkan sesuatu seperti:

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

Sekarang kita tahu bahwa sda / sdb adalah satu mirror dan sdc / sdd yang lain. Masing-masing harus tetap tinggal untuk menghindari kehilangan data.

Perintah "dd" membaca satu kali (hitungan = 1) satu Megabyte (bs = 1M) pada satu offset Megabyte dari mulai disk (lewati = 1M). Jangan lewati = 0, karena awal disk berisi informasi yang berbeda. Data biasanya dimulai setelah 1MB.

Pascal
sumber
dd if=/dev/$disk skip=1M bs=1M count=1tidak bekerja untuk saya. dd (coreutils) 8.23dari Debian 8 (Jessie) tidak mendukung skipdengan unit. Sebagai gantinya saya menggunakan di skip=1mana 1relatif bs. Mungkin salah ketik?
Daniel Böhmer
FYI Jika Anda melihat jumlah MD5 panggilan d41d8cd98f00b204e9800998ecf8427eAnda ddgagal. Itu adalah hash dari string kosong :-)
Daniel Böhmer
0

Saya pikir Anda berbicara tentang serangan 10 array nyata (1 + 0 mirroring bergaris)

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

1. Buat 4 array raid1 Anda:

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}

Pada saat ini Anda memiliki 4 serangan 1 array dengan ruang 2TB pada masing-masing,

2. Mari kita kumpulkan mereka!

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

Opsi - run berguna karena beberapa komponen aktif di array lain

3. Adaptasi file mdadm.conf Anda

Anda mungkin perlu (tergantung dari konfigurasi Anda) untuk mengadaptasi file ini untuk mencerminkan perubahan tentang array baru kami (/ dev / md4).

4. Nikmati .. Array DIY raid10 baru Anda!

maxxvw
sumber
Tidak, dia berbicara tentang kepribadian mdadm raid10 linux. Saya percaya jawaban Anda tidak berlaku (walaupun, untuk bersikap adil, itu memang memberi OP alternatif untuk mencapai apa yang perlu dia lakukan)
GnP
Kinerja dan fitur yang didukung juga berbeda.
Joachim Wagner
0

Anda selalu dapat memverifikasi mana mirror dengan cara mentah membandingkan data, misalnya:

# 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  -

(jika Anda tidak mendapatkan kecocokan, Anda mungkin perlu meningkatkan lewati = , karena Anda tidak melewatkan RAID superblocksl; dan jika Anda mendapatkan md5sum yang sama untuk lebih dari 2 disk, Anda mungkin perlu meningkatkan jumlah = , karena Anda Mungkin membaca dan memangkas angka nol - untuk mencegah Anda harus meletakkan beberapa data pada serangan itu terlebih dahulu, jika tidak mereka mungkin penuh dengan nol)

Adapun kabel swapping sekitar, Anda tidak perlu melakukan itu - mdadm harus membuat raid dengan perangkat seperti yang ditentukan pada baris perintah di mdadm - buat , jadi Anda hanya akan menentukan drive dalam urutan yang berbeda pada baris perintah.

Matija Nalis
sumber
0

Jalankan "mdadm --examine device" pada setiap perangkat komponen (yaitu / dev / sda1, / dev / sdb1, dll.). Informasi di sana akan membantu Anda menentukan komponen mana yang merupakan cermin masing-masing.

Wurtel
sumber