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

7158
Community

У меня есть домашний медиа-сервер, работающий на 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?

Заранее спасибо.


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

8
Домашние медиа-серверы не по теме для ServerFault. Тем не менее, вы явно приложили некоторые усилия для этого, и я собираюсь пометить его для перехода на [unix.SE] (http://unix.stackexchange.com/). Andrew B 11 лет назад 1
@AndrewB, почему это? poige 11 лет назад 0
Это очень интересный вопрос, и причины этого так хорошо понятны. Вам не нужно менять провода, поскольку просто указать диск при (повторном) создании RAID намного проще. poige 11 лет назад 0
@poige Это подпадает под [* что-либо в домашних условиях *] (http://serverfault.com/faq#questions). Я пытался прояснить, что, несмотря на это, я считаю вопрос адекватно исследованным. Andrew B 11 лет назад 0
Если бы я спекулировал дико, я бы предположил, что вы могли бы взглянуть на столбец RaidDevice. Это может быть так же просто, как (0,1), (2,3), (4,5), (6,7). Это заставило бы меня предположить, что вам нужно сделать так, чтобы RaidDevice выстраивался в линию как WD / Sea / WD / Sea / и т.д. ... Но я не уверен на 100% в этом. Zoredache 11 лет назад 0
Содержание раздела [Raid10] (http://linux.die.net/man/4/md) предполагает, что блоки «произвольно» разбросаны, что означает, что ни один диск не является точной копией другого диска. Возможно, я неправильно понял. Чтобы получить точный контроль над «отраженными» данными, я думаю, вам нужно вручную создать четыре тома raid1, каждый из которых состоит из пары wd / seagate, а затем разделить эти четыре тома в raid0. Но это неоптимально, потому что полная потеря может быть вызвана только двумя дисками. Ярослав Рахматуллин 11 лет назад 0

5 ответов на вопрос

5
parasietje

Последние версии 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может потерпеть неудачу вместе без потери данных. Вполне возможно, что эти данные недоступны во время перестройки массива.

1
Pascal

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

ПРИМЕЧАНИЕ: БУДЬТЕ ОСТОРОЖНЫ, ЕСЛИ У ВАС ЕЩЕ БОЛЬШЕ 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 / $ skip = 1M bs = 1M count = 1` у меня не сработало. `dd (coreutils) 8.23` из Debian 8 (Jessie) не поддерживает` skip` с юнитом. Вместо этого я использовал `skip = 1`, где` 1` относительно `bs`. Возможно опечатка? Daniel Böhmer 8 лет назад 0
К вашему сведению Если вы видите сумму MD5 `d41d8cd98f00b204e9800998ecf8427e`, ваш вызов` dd` не выполняется. Это хеш пустой строки :-) Daniel Böhmer 8 лет назад 0
0
maxxvw

I think you are talking about a real raid 10 array (1+0 striped mirroring)

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

1. Create your 4 raid1 arrays:

mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/ mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/ mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/ mdadm --create /dev/md3 --level=1 --raid-devices=2 /dev/ 

At this time you have 4 raid 1 arrays with 2TB space on each,

2. Let's assemble them!

mdadm --create /dev/md4 --run --level=0 --raid-devices=4 /dev/md 

--run options is usefull because some components are active in another array

3. Adapt your mdadm.conf file

You may need (depending of your configuration) to adapt this file to reflect changes about our new array (/dev/md4).

4. Enjoy.. Your new DIY raid10 array!

Нет, он говорит о личности Linux mdadm raid10. Я считаю, что ваш ответ не применим (хотя, если честно, он дает ОП альтернативу для достижения того, что ему нужно сделать) GnP 9 лет назад 0
Производительность и поддерживаемые функции также различаются. Joachim Wagner 5 лет назад 0
0
Matija Nalis

Вы всегда можете проверить, какие зеркала, грубо сравнивая данные, например:

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

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

0
wurtel

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

Похожие вопросы