Нужно найти, какие диски зеркалируются в массиве RAID-10
У меня есть домашний медиа-сервер, работающий на 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 и т. Д.), Но я хочу знать наверняка:
- http://en.wikipedia.org/wiki/Non-standard_RAID_levels
- https://serverfault.com/questions/200725/mirrored-and-stripped-hd-drives-in-raid10
Вот вывод '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>
Итак, мои вопросы:
- Как мне узнать, какие диски являются зеркалами друг друга?
- Есть ли способ изменить это, или я должен просто поменять местами провода (так как это поменяет местами буквы дисков), а затем перестроить RAID?
Заранее спасибо.
Примечание, касающееся всех, кто хочет знать, почему я это делаю: приводы одной и той же модели и партии, работающие при одинаковых нагрузках, времени безотказной работы и температуре, имеют небольшие систематические колебания, и различия во времени до отказа между приводами будут в основном приводиться в действие. случайным изменением в процессе производства. Это увеличивает риск смерти нескольких дисков одновременно. Приобретая накопители не только у разных серий, но и у разных производителей, я вносил систематические изменения в свой массив, влияя на то, какие накопители выйдут из строя в аналогичное время.
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 ДРАЙВОВ С ОДНОЙ ТОЛЬКО ПРОВЕРКОЙ, ЧТО ВЫ СКОРО ВЫ сравниваете ПУСТОЙ ДИСКСПЕЙС, ВЫБЕРИТЕ ДРУГОЙ СДВИГ (опция пропуска).
С помощью нескольких команд вы можете понять это:
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/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, так что вы просто указали бы диски в другом порядке в командной строке.
Запустите "mdadm -examine device" на каждом компонентном устройстве (т. Е. / Dev/sda1, /dev/sdb1 и т. Д.). Полученная там информация должна помочь вам определить, какие компоненты являются зеркалом друг друга.
Я думаю, что вы говорите о реальном массиве рейдов 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 массив raid 10!