У меня есть несколько систем с ext3 lv /
которые работают нормально до тех пор, пока не будет fsck'd - тогда они будут безвозвратно повреждены.
Какие у меня есть надежды на ремонт этих систем и, по отдельности, что пошло не так?
Это все старые системы, которые начинались как блоки 2.6 centos-ish с несколькими отдельными логическими томами ext3: /
, /var
, и /unused
. Они были перенесены на современный Linux с ядром 3.4 путем установки на /unused
раздел, а затем загрузитесь в новую установку. Однажды запустив старый /
и /var
мы lvremove'd, и новый корень был переименован и lvextend'ed, чтобы поглотить пространство. Из того, что мне удалось собрать, новый корень был resize2fsбуду жить после lvextend. (Это может быть корнем проблемы.)
Все они работают нормально до тех пор, пока fsck не будет принудительно запущен, после чего fsck сильно пожалуется и сделает систему не загружаемой (паника). Множество ошибок, например:
Inode 12345 has INDEX_FL flag set but is not a directory
Inode 67890, i_blocks is 1307617, should be 0.
Inode 34567, i_size is 5616670468207675, should be 0.
... and on and on, followed by lots of multiply claimed inodes, sometimes with ...
Error storing directory block information (inode=76543, block=0, num=98765432): Memory allocation failed
Для контекста, исходные разделы были созданы в CentOS e2fsprogs-1.39-20, resize2fs'находится под 1.42.9-4, а текущая система от CentOS старше (не спрашивайте) 1.41.12-12.
Чтобы прямо ответить на ваши вопросы:
Q: What hope do I have of repairing these systems?
A: Quite good since the fs is readable, but I'd plan on abandoning the current hard drive(s).
Q: Separately, what went wrong?
A: Unless you can definitively diagnose a hardware error (likely), you'll probably never know. You don't mention if you've looked for low-level I/O errors in the system log.
Поскольку файловые системы работают до fsck, я бы расширил VG новым физическим томом (фактическим новым надежным жестким диском), определил новый LV на новом PV, скопировал и удалил старый диск (ы), или хотя бы запустить диагностику производителя, стереть и переформатировать.