Быстрая настройка 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
источник
Спасибо psusi - это не решает вопрос.
Павел
2
@ Пол, хм .. да, это так. Нет такой вещи, как «пустой», есть только в синхронизации или не в синхронизации.
psusi
Это не касается вопроса, который я задаю. Xor блока нулей равен нулю. Так что, если бы я мог сказать mdadm, что пространство можно считать пустым, это может очень быстро создать четность. Четность должна быть правильно рассчитана только при записи в конкретный блок, и в этот момент не имеет значения, что он был «неправильным» ранее. Я мог бы даже фактически обнулить диск.
Пол
2
@ Пол, опять же, нет такой вещи, как «пустой». Обычно да, не имеет значения, что четность на полосах, которые никогда не записывались, неверна, поэтому вы можете избежать использования --assume-clean, даже если диски не заполнены нулями, но неправильная четность будет быть обнаруженным и исправленным, когда mdadm выполняет проверку на четность.
psusi
2
@Paul, значение «пустой» не очень хорошо определено. Большинство людей используют его для обозначения того, что они не помещают какие-либо файлы или файловую систему на устройство и не знают или не заботятся о том, что оно содержит в настоящее время. Если вы знаете, что все диски заполнены нулями, то --assume-clean - это то, что вам нужно. Вам понадобится слово, что все диски обнулены и не пересчитывают четность, и, как вы упомянули, нулевой контроль будет корректным для дисков с данными всех нулей, по крайней мере для raid5 (не для raid6).
psusi
2

Вы не можете сделать это с программным или аппаратным RAID. Все контрольные суммы должны быть записаны на дисках, что занимает много времени. Вы можете сделать это позже, но тогда части диска, на которые нет записи, должны будут это сделать, прежде чем сможете их использовать.

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

Вы можете добавить пропускную способность к программному RAID или начать использовать RAID до того, как все контрольные суммы будут записаны, и позволить программному RAID обработать это позже. Ведьма - это то, что написал @psusi.

Андерс
источник
Я понимаю, как работает RAID, я пытаюсь понять, что происходит с контрольными суммами на пустом диске. Контрольные суммы нужно вычислять каждый раз, когда что-то записывается на диск, поэтому вычисление их до того, как будут представлены какие-либо данные, не имеет особого смысла - «делать это позже» целесообразно, когда там ничего нет. В этом сценарии нет файловой системы.
Пол
6
Там всегда есть данные. Это может быть не важно или не значимо, но каждый сектор всегда имеет ценность. (Ноль - это тоже значение!) Реализация RAID не знает, в каких секторах содержатся важные данные, поэтому она должна рассматривать их как важные и вычислять их четность.
Вайзард