1

У меня был массив 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

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

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


Другим вариантом является размонтирование файловой системы и временное монтирование ее с -o init_itable=0 , что заставляет lazy init работать более активно, но производительность снижается. Значение по умолчанию - 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 ТБ на одном диске.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .