Ошибка e2fsck в большой файловой системе с ошибкой: сбой выделения памяти
Я пытаюсь использовать e2fsck для большого raid-массива, размером 2 ТБ и использующего GPT для разделения (из-за размера).
В системе установлено только 1 ГБ оперативной памяти, и в настоящее время я не могу добавить больше.
Проблема в том, что вскоре после запуска fsck на устройстве я получаю сообщение об ошибке:
Error storing directory block information (inode=115343515, block=0, num=108120142): Memory allocation failed
e2fsck: aborted
После небольшого онлайн-поиска и исследований я наткнулся на эту запись ниже:
Недостаточно памяти для запуска fsck на больших файловых системах
Я последовал совету после просмотра страницы MAN для e2fsck.conf
и в основном создал файл /etc/e2fsck.conf, который выглядит следующим образом:
[scratch_files]
directory = /var/cache/e2fsck
и снова попробовал fsck, убедившись, что создал /var/cache/e2fsck
directry. После повторного запуска fsck и просмотра доступной памяти, использования процессора и размера каталога /var/cashe/e2fsck
... я могу сказать, что это определенно очень помогло... но все равно в конечном итоге не удалось выдать ту же ошибку. В основном это помогло замедлить потребление памяти, но не свело на нет все это вместе.
Поэтому я попытался поиграть с флагами сложения для e2fsck.conf
использование файла:
dirinfo = false
или же
dirinfo = true
а также
icount = false
или же
icount = true
ни один из которых, казалось, не имел большого эффекта, поскольку та же самая ошибка происходит через короткое время.
Я что-то пропустил? Я согласен с тем, что fsck занимает много времени... Но мне нужно, чтобы он завершился, а не вывел ошибку.
3 ответа
Если вы можете добавить пространство подкачки в систему. Fsck займет безумно много времени, но в конечном итоге он завершится. В следующий раз нарежьте вашу файловую систему на более мелкие части.
- Вы добавили эти флаги в раздел [scratch_files]? Кроме того, попробуйте использовать "numdirs_threshold " для контроля, когда он начинает использовать рабочие файлы.
- Иногда утилиты e2fs слишком устарели в установленной системе (например, Centos4). Вы можете загрузить образ восстановления с более новой версией утилит ядра и файловой системы. Настройте e2fsck.conf и позвольте e2fsck использовать его.
НТН.
Является ли массив внутренним или внешним хранилищем? Если это внешнее / подключенное хранилище, попробуйте подключить его в другую коробку с большим объемом оперативной памяти для fsck
, Поочередно разделите ваши настройки и разбейте их на более мелкие куски. Вы можете смонтировать несколько разделов в одной "резервной" иерархии файловой системы. Вашим клиентам и программному обеспечению для резервного копирования не нужно знать, что они касаются нескольких или отдельных файловых систем.
Если это хранилище не получается fsck
В процессе загрузки убедитесь, что вы отключили все приложения, которые могут потреблять вашу драгоценную память до fsck
выполнен.