Нужно найти, какие диски зеркалируются в массиве RAID-10


8

У меня есть домашний медиа-сервер, работающий на openSUSE 12.2. Я использую восемь дисков по 2 ТБ в конфигурации 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 .
Андрей Б

@AndrewB, почему это?
Пой

Это очень интересный вопрос, и причины этого так хорошо понятны. Вам не нужно менять провода, так как просто указать диск при (повторном) создании RAID намного проще.
Пой

@poige Это подпадает под что-либо в домашних условиях . Я пытался прояснить, что, несмотря на это, я считаю вопрос адекватно исследованным.
Андрей Б

Если бы я спекулировал дико, я бы предположил, что вы могли бы взглянуть на RaidDeviceколонку. Это может быть так же просто, как (0,1), (2,3), (4,5), (6,7). Это заставило бы меня предположить, что вам нужно сделать так, чтобы RaidDevice выстраивался в линию как WD / Sea / WD / Sea / и т.д. ... Но я не уверен на 100% в этом.
Зоредаче

Ответы:


5

Последние версии 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

Обратите внимание на обозначение set-Aили set-B. В приведенном выше случае, sddи sdbможет потерпеть неудачу вместе без потери данных. Возможно, эти данные недоступны во время перестройки массива.


2

У меня была та же проблема, и после того, как я погуглил некоторое время, я не нашел надежного ответа. После некоторых размышлений я подумал, что зеркала имеют одинаковые данные, и мы могли бы сравнить их.

ПРИМЕЧАНИЕ: БУДЬТЕ ОСТОРОЖНЫ, ЕСЛИ У ВАС ЕЩЕ БОЛЬШЕ 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, потому что начало диска содержит различную информацию. Данные обычно начинаются после 1 МБ.


dd if=/dev/$disk skip=1M bs=1M count=1не работает для меня dd (coreutils) 8.23из Debian 8 (Джесси) не поддерживает skipс модулем. Вместо этого я использовал skip=1где 1относительно bs. Возможно опечатка?
Даниэль Бёмер

К вашему сведению, если вы видите сумму MD5, d41d8cd98f00b204e9800998ecf8427eваш ddзвонок не будет выполнен. Это хеш пустой строки :-)
Даниэль Бёмер

0

Я думаю, что вы говорите о реальном массиве рейдов 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. Создайте 4 массива raid1:

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 с 2 ТБ места на каждом,

2. Давайте их соберем!

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

--run options полезен , потому что некоторые компоненты активны в другом массиве

3. Адаптируйте ваш файл mdadm.conf

Возможно, вам потребуется (в зависимости от вашей конфигурации) адаптировать этот файл для отражения изменений в нашем новом массиве (/ dev / md4).

4. Наслаждайтесь .. Ваш новый DIY массив raid10!


Нет, он говорит о личности Linux mdadm raid10. Я считаю, что ваш ответ не применим (хотя, если честно, он дает ОП альтернативу для достижения того, что ему нужно делать)
GnP

Производительность и поддерживаемые функции также различаются.
Иоахим Вагнер

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 = , так как вы не пропускаете superblocksl RAID; и если вы получаете одну и ту же md5sum для более чем 2 дисков, вам может потребоваться увеличить count = , так как Вероятно, вы читаете и суммируете нули m5 - чтобы не допустить, чтобы вы сначала поместили некоторые данные в рейд, иначе они могут быть полны нулей)

Что касается замены проводов, вам не нужно этого делать - mdadm должен создать raid с устройствами, как указано в командной строке в mdadm --create , так что вы просто указали бы диски в другом порядке в командной строке.


0

Запустите «mdadm - examine device» на каждом компонентном устройстве (т. Е. / Dev / sda1, / dev / sdb1 и т. Д.). Полученная там информация должна помочь вам определить, какие компоненты являются зеркалом друг друга.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.