mdadm - Видаліть диск із RAID0


11

Отже, я хотів би знати, чи можна зробити наступне за допомогою mdadm:

  1. Я починаю з конфігурації RAID0 на 2 дисках: sdaі sdb.
  2. Я хотів би додати ще один диск до масиву sdcта перемістити всі дані з sdbнього.
  3. Відключити sdb.

Зараз я бачу тільки один варіант - я зупинити масив, скопіювати sdbв sdcс ddабо будь-яким іншим інструментом блоку-копіюванням і запуском назад масиву.

Я щось сумую? Чи можливо це зробити за допомогою mdadm?


Ви можете зробити sdb до тимчасового дзеркала, а потім синхронізувати SDC з ним у фоновому режимі - це зменшило необхідний час простою, хоча я не робив цього як початківець на вашому місці.
петерх

Я точно не початківець :) Чи можете ви розповісти більше про тимчасове дзеркало? Це функція mdadm?
маніяк

Ні, це проста функція рейду. Я подумав, що тимчасовий масив raid1, який міг би отримати місце sdb у вашому масиві raid1. Поки ви синхронізуєте sdb до sdc, ви можете також використовувати його як частину масиву raid0.
peterh

Отже, я вас правильно розумію? 1. Зупинка масиву. 2. Створіть ще один масив RAID1 за допомогою sbd та sdc. 3. І як я можу запитати mdadm так запустити мій RAID0 з md1 замість sdb?
маніяк

Не досліджував багато, але, звичайно, здається, що ви повинні мати можливість вирости з RAID0 -> RAID5. Потім зменшіться до RAID0.
Зоредаче

Відповіді:


17

Перш за все: тим, хто все ще вірить у "RAID0 немає гарячих запасних". Це може бути запасний посібник, зроблений людьми, які розуміють рівні RAID та mdadm. mdadm - це програмний RAID, тому він може зробити багато цікавого.

Кредити Zoredache за ідею!

Отже, ситуація:

  • у вас є масив RAID0 з двох дисків
  • ви хочете замінити один з них без простою масиву

Якщо час простою прийнятний, ви завжди можете просто зробити блок-копію диска з dd і знову зібрати масив, mdadm зробить добре.

Рішення: використовувати RAID4 як проміжний розчин

RAID0 -> RAID4 -> RAID0

Отже, якщо ви не пам'ятаєте RAID4, це просто. Він має блок паритету, але на відміну від RAID5, він не розподіляється по масиву, а знаходиться на одному диску. Це справа, це важливо, і це є причиною, що RAID5 не працюватиме.

Що вам знадобиться: ще два диски такого ж розміру, як диск, який ви хочете замінити.

Навколишнє середовище:

  • Ubuntu 14.04 Thrusty Thar
  • mdadm - v3.2.5 - 18 травня 2012 року
  • / dev / sdb - почніть з нього, замінить його
  • / dev / sdc - почніть з цього
  • / dev / sdd - буде використовуватися тимчасово
  • / dev / sde - використовуватиметься замість sdb

Кінцевий посібник з mdadm з гарячим запасом RAID0;)

sudo mdadm -C /dev/md0 -l 0 -n 2 /dev/sd[bc]

md0 : active raid0 sdc[1] sdb[0]
      2096128 blocks super 1.2 512k chunks

Ми створили масив raid0, це виглядає солодко.

sudo md5sum /dev/md0

b422ba644a3c83cdf28adfa94cb658f3  /dev/md0

Це наш контрольний пункт - якщо навіть один біт буде відрізнятися в результаті /dev/md0- ми не змогли.

sudo mdadm /dev/md0 --grow --level=4

md0 : active raid4 sdc[1] sdb[0]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]

Отже, ми виросли наш масив до RAID4. Диск парності ми ще не додали, тому зробимо це. Зростання буде миттєвим - немає чого перераховувати чи перерахувати.

sudo mdadm /dev/md0 -a /dev/sdd

md0 : active raid4 sdd[3] sdc[1] sdb[0]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
      [===>.................]  recovery = 19.7% (207784/1048064) finish=0.2min speed=51946K/sec

Ми додали sddяк диск парності. Це важливо пам’ятати - порядок дисків у першому ряду не синхронізований із малюнком у другому ряду! [UU_]

sdd відображається першим, але насправді він останній, і містить не дані, а паритет.

sudo mdadm /dev/md0 -f /dev/sdb

md0 : active raid4 sdd[3] sdc[1] sdb[0](F)
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]

Ми зробили наш диск sdb несправним, щоб видалити його наступними кроками.

sudo mdadm --detail /dev/md0

State : clean, degraded

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       32        1      active sync   /dev/sdc
       3       8       48        2      active sync   /dev/sdd

       0       8       16        -      faulty spare   /dev/sdb

Деталі показують нам видалення першого диска, і тут ми можемо побачити справжній порядок дисків у масиві. Важливо відстежувати диск з паритетом, ми не повинні залишати його в масиві, повертаючись до RAID0.

sudo mdadm /dev/md0 -r /dev/sdb

md0 : active raid4 sdd[3] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]

sdb повністю видалений, може бути відібраний.

sudo mdadm /dev/md0 -a /dev/sde

md0 : active raid4 sde[4] sdd[3] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]
      [==>..................]  recovery = 14.8% (156648/1048064) finish=0.2min speed=52216K/sec

Ми додали заміну для нашого диска sdb. І ось ми ідемо: тепер дані sdb відновлюються за допомогою парності. Sweeeeet

md0 : active raid4 sde[4] sdd[3] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/3] [UUU]

Зроблено. Зараз ми повністю безпечні - всі дані з sdb відновлюються, і тепер нам потрібно видалити sdd (пам'ятайте, він має паритет).

sudo mdadm /dev/md0 -f /dev/sdd

md0 : active raid4 sde[4] sdd[3](F) sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]

Зроблено sdd несправним.

sudo mdadm /dev/md0 -r /dev/sdd

md0 : active raid4 sde[4] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]

Видалено sdd з нашого масиву. Ми готові знову стати RAID0.

sudo mdadm /dev/md0 --grow --level=0 --backup-file=backup

md0 : active raid4 sde[4] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
      [=>...................]  reshape =  7.0% (73728/1048064) finish=1.5min speed=10532K/sec

Аааааа і нахил!

md0 : active raid0 sde[4] sdc[1]
      2096128 blocks super 1.2 512k chunks

Зроблено. Давайте розглянемо контрольну суму md5.

sudo md5sum /dev/md0

b422ba644a3c83cdf28adfa94cb658f3  /dev/md0

Є ще запитання? Таким чином RAID0 може мати гарячу запасну частину. Це називається "користувач";)


1

Наскільки мені відомо, щойно ви встановили RAID0, ви не можете змінити один з дисків. Ви можете взяти резервну копію та переключити диски та відновити резервну копію. Я б просто RAID5 ті 3 диска у вас є. Таким чином, у майбутньому ви можете скинути диск і все-таки відновити його.


Ну, я знаю, як зробити те, про що я говорю з RAID5 - я можу додати новий масив до масиву (як запасний), а потім позначити диск, який мені подобається, перемістити як несправний та вийняти його з масиву, витираючи суперблок згодом. Але мене цікавить однакова операція з RAID0 :)
маніяк

@maniaque Це називається RAID 0, оскільки нуль - це кількість RAID, яку ви отримуєте. Абсолютно нічого важливого ніколи не слід розміщувати на RAID 0.
Майкл Хемптон

@MichaelHampton Я думаю, ви маєте на увазі надмірність не RAID, але ваше твердження на 100% вірно.
joeg1ff

@MichaelHampton Будь ласка, дивіться мою відповідь нижче :)
маніяк

0

RAID 0 не забезпечує надмірності.

Тож він не підтримує заміну гарячого диска.


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