RAID5 не запускается после роста (ext4lazyinit)

344
LukeLR

У меня был массив RAID5, состоящий из дисков 3x5TB, собранных с использованием mdadm. Кроме того, я создал LUKS/dmcryptслой шифрования и отформатировал зашифрованное устройство с помощью ext4. Я хочу, чтобы диски вращались в случае бездействия.

Все работало нормально в течение нескольких месяцев, диски вращались после минуты бездействия. Теперь я добавил четвертый диск объемом 5 ТБ того же типа в массив sudo mdadm --add /dev/md0 /dev/sdb1, затем увеличил массив на этот диск ( mdadm --grow /dev/md0 --raid-devices=4) и, наконец, увеличил файловую систему с помощью sudo fsck -f /dev/mapper/raid5и sudo resize2fs /dev/mapper/raid5.

Ошибок не было, и массив теперь на 5 ТБ больше. Но диски больше не крутятся. Машина работает круглосуточно, диски не используются, но, несмотря на ожидание в течение нескольких дней, диски по-прежнему работают все время.

iotopпоказывает частые случаи ext4lazyinit, которые появляются менее чем за секунду каждые несколько секунд. Я не заметил этого до того, как вырастил файловую систему. Так что, вероятно, это те задачи, которые поддерживают бодрствование дисков? Но как я могу заставить ext4lazyinitего выполнить свою задачу?

1

1 ответ на вопрос

1
Attie

ext4lazyinitделает именно то, что говорит - инициализирует остальную часть файловой системы ленивым образом. Это делает это, чтобы создать видимость быстрого создания файловой системы. Как вы заметили, он постарается как можно меньше повлиять на производительность вашей системы, а это означает, что для его завершения потребуется много времени.

Первый вариант - подождать - он в конце концов остановится, и ваши диски вернутся в режим ожидания.


Другой вариант - отключить файловую систему и временно смонтировать ее -o init_itable=0, заставив ленивый инициализировать быть более активным, но производительность пострадает. Значение по умолчанию - 10, поэтому, если производительность важна, попробуйте значения между ними. ( ссылка )

init_itable=n The lazy itable init code will wait n times the number of milliseconds it took to zero out the previous block group's inode table. This minimizes the impact on the system performance while file system's inode table is being initialized. 

Третий вариант - отключить инициализацию itable - хотя, на мой взгляд, это плохой вариант, особенно для файловой системы, которая находится в производстве и предположительно содержит важные данные (именно поэтому вы используете RAID, верно?)

Вы можете сделать это с помощью noinit_itableопции:

noinit_itable Do not initialize any uninitialized inode table blocks in the background. This feature may be used by installation CD's so that the install process can complete as quickly as possible; the inode table  initialization process would then be deferred until the next time the file system is unmounted. 

Редактировать: оценки по продолжительности.

Имейте в виду, что скорость записи дисков составляет ~ 110-120 МБ / с ... Вы работаете с массивом, поэтому в идеальном мире произойдет улучшение до ~ 330-360 МБ / с ( 110 * (n - 1)). Я также видел, как RAID5 работает намного медленнее (~ 40 МБ / с на 8 дисках с RAID-контроллером - это болезненно).

При предполагаемой скорости 110 МБ / с вы ожидаете около 12 часов полной инициализации объемом 5 ТБ на одном диске.

Как я уже сказал, массив большую часть времени простаивает, поэтому производительность не является проблемой. Но целостность данных, как вы уже догадались, Поэтому я попытался с init_itable = 0, что, по крайней мере, приводит к тому, что ext4lazyinit будет активен при 100% использовании диска в большинстве случаев. Так что я посмотрю, завершит ли он свою работу к завтрашнему дню. LukeLR 6 лет назад 0
Хорошие вещи - я обновил, чтобы включить оценку того, как долго вы можете ожидать, что это будет продолжаться. Attie 6 лет назад 1
Большое спасибо за оценки - это уже закончено! Диски просто закрутились и все снова стало тихо! Я так рад, что помог. Теперь я перемонтирую без `init_itable = 0` и посмотрю, так ли это. Я думаю, это было намного быстрее, чем ваши оценки, потому что файловая система используется на 60%. Хотя я получил гораздо более медленные скорости, около 4 МБ / с (вероятно, случайное чтение / запись?) LukeLR 6 лет назад 1