Швидке налаштування mdadm RAID з порожніми накопичувачами?


9

Я відтворюю деякі диски RAID5 як RAID6 з mdadm. Немає даних про накопичувачі, які мене цікавлять.

Налаштування RAID потребує певного часу, щоб налаштувати фігуру - я приймаю, що коли є дані, які потрібно закреслити і прорахувати паритет, однак з цими накопичувачами вони порожні - або, принаймні, я хочу, щоб вони вважалися порожніми.

Отже, чи є спосіб пропустити розрахунок паритету і сказати mdadm, щоб він просто встановив суперблоки і було зроблено, інакше, на що саме витрачається весь цей час, коли немає даних для переміщення?

md3 : active raid6 sdf3[5] sde3[4] sdd3[3] sdc7[2] sdb3[1] sda3[0]
      1953114112 blocks super 1.2 level 6, 512k chunk, algorithm 2 [6/6] [UUUUUU]
      [>....................]  resync =  1.3% (6790144/488278528) finish=409.3min speed=19604K/sec

Зауважте, що я не говорю про те, --assume-cleanде ви перебудовуєте масив із раніше існуючого набору дисків, що містять масив RAID, який, на вашу думку, є правильним. Я говорю про масив, який слід вважати порожнім, а не вважати правильно смугастим.

Тож скажемо заради цього питання, що пристрої були попередньо заповнені нулями.

Відповіді:


8

Ви можете використовувати, --assume-cleanале якщо ви не використовуєте raid5 (не raid6), а диски фактично переповнені нулями, при першому запуску перевірки паритету з’являться помилки, які потрібно буде виправити, тому не варто цього робити. Вам не потрібно чекати завершення пересинхронізації, перш ніж ви зможете почати використовувати масив; вона буде чубати на задньому плані, поки це не буде зроблено.


Дякую psusi - це не стосується питання.
Пол

2
@Paul, гмм .. так, це так. Немає такого поняття, як "порожнє" є лише в синхронізації, або не в синхронізації.
psusi

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

2
@ Паул, знову ж таки, немає такого поняття, як "порожній". Як правило, так, неважливо, що паритет на смугах, які ніколи не були написані, є неправильним, саме тому ви можете піти з -назачистити, навіть якщо диски не заповнені нулями, але неправильний паритет буде виявляються та виправляються, коли mdadm перевіряє паритет.
psusi

2
@Paul, значення "порожній" недостатньо визначено. Більшість людей використовують це, щоб означати, що вони не розміщували на пристрої жодних файлів або файлової системи, і не знають і не цікавлять те, що він наразі містить. Якщо ви знаєте, що диски наповнені нулями, то --assume-clean - це те, що ви хочете. Для цього знадобиться ваше слово, що всі диски нульові і не перераховують паритет, і, як ви вже згадуєте, парний нуль буде правильним для дисків даних усіх нулів, принаймні для raid5 (не для raid6).
psusi

2

Ви не можете цього зробити з програмним або апаратним RAID. Всі контрольні суми потрібно записати на диски, що вимагає часу. Ви можете це зробити пізніше, але тоді частини диска, на які не записано, доведеться це зробити, перш ніж ви зможете ними скористатися.

Це в основному тому, що система RAID та файлові системи нічого не знають одна про одну. ZFS має обмеження для цього, але там частини RAID глибоко інтегровані з файловою системою. Отже, підсистема RAID насправді знає, які частини дисків використовуються для зберігання даних і які можна використовувати пізніше, а потім записувати до них контрольні суми.

Ви можете додати швидкість пропускної здатності до програмного RAID або почати використовувати RAID до того, як всі контрольні суми будуть написані, і дозволити програмному RAID вирішити це для вас пізніше. Відьма - це те, що написав @psusi.


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

6
Там же завжди дані присутні. Це може бути не важливим чи значущим, але кожен сектор завжди має значення. (Нульове значення також!) Реалізація RAID не знає, які сектори містять важливі дані, тому вона повинна ставитися до них усіх як до важливих та обчислювати їх паритет.
Wyzard
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.