Потрібно знайти, які накопичувачі відображаються в масиві RAID-10


9

У мене домашній медіа-сервер працює на openSUSE 12.2. Я використовую вісім накопичувачів 2 ТБ в конфігурації RAID-10. Я навмисно купив два різні типи накопичувачів: чотири Seagate Barracuda Green і чотири Western Digital Red. Моя мета - налаштувати RAID таким чином, що кожна дзеркальна пара в масиві буде складатися з різних дисків (тобто одного накопичувача Seagate та одного диска WD). YaST2 Partvisor, на жаль, не дав мені цього рівня вибору в структурі масиву, тому зараз я намагаюся з’ясувати, як виглядає структура за замовчуванням 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, чому це?
poige

Це дуже цікаве питання, і міркування настільки добре зрозумілі. Вам не потрібно міняти дроти, оскільки просто вказати диск, коли (повторно) створювати RAID набагато простіше.
poige

@poige Це в будь-якому випадку в домашніх умовах . Я намагався дати зрозуміти, що незважаючи на це, я вважаю це питання достатньо дослідженим.
Андрій Б

Якби я бурхливо міркував, то я б здогадався, що ви можете подивитися на RaidDeviceколону. Це може бути таким же простим, як (0,1), (2,3), (4,5), (6,7). Це би змусило мене припустити, що вам потрібно зробити RaidDevice лінійкою, як WD / Sea / WD / Sea / тощо ... Але я не впевнений у цьому на 100%.
Зоредаче

Відповіді:


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

Зверніть увагу на позначення 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) при одному зсуві Мегабайт від запуску диска (пропуск = 1 М). Не пропускайте = 0, оскільки початок диска містить різну інформацію. Дані зазвичай починаються через 1 Мб.


dd if=/dev/$disk skip=1M bs=1M count=1не працювало для мене. dd (coreutils) 8.23від Debian 8 (Jessie) не підтримує skipпристрій. Натомість я використовував skip=1там, де 1відносно bs. Можливо, друкарська помилка?
Даніель Бьомер

FYI Якщо ви бачите суму 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 рейд-1 масиви з 2 ТБ місця на кожному,

2. Давайте їх зібрати!

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

--run параметри корисні, оскільки деякі компоненти активні в іншому масиві

3. Адаптуйте файл mdadm.conf

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

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


Ні, він говорить про особистість mdadm raid10 linux. Я вважаю, що ваша відповідь не застосовується (хоча, справедливо кажучи, це дає ОП альтернативу, щоб досягти того, що йому потрібно зробити)
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  -

(якщо ви не отримаєте жодних збігів, можливо, вам доведеться збільшити пропуск = , так як ви не пропускаєте через суперблоки RAID; і якщо ви отримаєте той же md5sum для більш ніж 2 дисків, можливо, вам доведеться збільшити кількість = як ви Ви, ймовірно, читаєте та m5summing нулі - щоб запобігти тому, щоб ви спочатку ставили деякі дані на рейд, інакше вони можуть бути заповнені нулями)

Що стосується обмінних проводів навколо, то вам не потрібно цього робити - mdadm повинен створювати рейд із пристроями, зазначеними в командному рядку в mdadm --create , тому ви просто вкажете диски в іншому порядку в командному рядку.


0

Запустіть "mdadm - пристрій перевірки" на кожному компонентному пристрої (тобто / dev / sda1, / dev / sdb1 тощо). Інформація там повинна допомогти вам визначити, які компоненти є дзеркалом один одного.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.