Назад | Перейти на главную страницу

Правильный способ борьбы с поврежденными файловыми системами XFS

Недавно у меня была повреждена файловая система XFS из-за сбоя питания. (Система CentOS 7). Система не загружалась должным образом.

Я загрузился с аварийного компакт-диска и попробовал xfs_repair, он сказал мне смонтировать раздел для работы с журналом.

Я смонтировал перегородку и сделал ls чтобы убедиться, что да, похоже, он там есть. Размонтировал раздел и попробовал xfs_repair снова и получил то же сообщение.

Что мне делать в этой ситуации? Что-то не так с моим аварийным компакт-диском (аварийный компакт-диск, версия 4.7.1)? Есть ли другая процедура, которую мне следовало использовать?

В итоге я просто восстановил систему из резервных копий (в данном случае это было быстро и легко), но я хотел бы знать, что делать в будущем.

Если вы пытаетесь бежать xfs_repair, получив сообщение об ошибке, предлагающее смонтировать файловую систему для воспроизведения журнала, и после монтирования все еще получая то же сообщение об ошибке, вам может потребоваться выполнить принудительное восстановление (с помощью -L флаг с xfs_repair). Этот вариант следует использовать в крайнем случае.

Например, я буду использовать случай, когда у меня был поврежденный корневой раздел в моей установке CentOS 7. При попытке смонтировать раздел я постоянно получал следующее сообщение об ошибке:

mount: mount / dev / mapper / centos-root on / mnt / centos-root failed: структура нуждается в очистке

К сожалению, принудительный ремонт потребует обнуления (уничтожения) журнала перед попыткой ремонта. При использовании этого метода существует вероятность получить больше поврежденных данных, чем предполагалось изначально; однако мы можем использовать соответствующие инструменты xfs, чтобы увидеть, какой ущерб может быть причинен, прежде чем вносить какие-либо постоянные изменения.

С помощью xfs_metadump и xfs_mdrestore, вы можете создать образ метаданных затронутого раздела и выполнить принудительное восстановление образа, а не самого раздела. Преимущества этого заключаются в возможности увидеть повреждения, вызванные принудительным ремонтом, перед его выполнением на перегородке.

Для этого вам понадобится USB или внешний жесткий диск приличного размера. Начните с установки USB-накопителя - мой USB-накопитель находился в /dev/sdb1, ваш может называться по-другому.

mkdir -p /mnt/usb
mount /dev/sdb1 /mnt/usb

После установки запустите xfs_metadump чтобы создать копию метаданных раздела на USB - опять же, ваш затронутый раздел может быть другим. В этом случае у меня был поврежденный корневой раздел, расположенный в /dev/mapper/centos-root:

xfs_metadump /dev/mapper/centos-root /mnt/usb/centos-root.metadump

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

xfs_mdrestore /mnt/usb/centos-root.metadump /mnt/usb/centos-root.img

Я обнаружил, что в режиме спасения xfs_mdrestore недоступен, и вместо этого вам нужно будет перейти в режим восстановления живого компакт-диска CentOS.

Наконец, мы можем выполнить ремонт изображения:

xfs_repair -L /mnt/usb/centos-root.img

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

Чтобы запустить восстановление раздела, просто запустите:

xfs_repair -L /dev/mapper/centos-root

Не забудьте проверить и другие разделы на предмет повреждений. После ремонта перезагрузите систему, и вы сможете успешно загрузиться.

Помните, что -L flag следует использовать в крайнем случае, когда нет других возможных вариантов ремонта.

Я обнаружил, что эти онлайн-статьи помогли:

У меня была эта ошибка, когда centos 7 плохо останавливалась внутри виртуальной машины kvm:

повреждение метаданных обнаружено в xfs ...

когда я использую журнал с «journalctl -xe», я обнаружил ошибку при установке:

/ dev / mapper / корень / системный корень

Я решаю это с помощью:

xfs_repair / dev / mapper / корень

Затем система завершит семь этапов, а затем перезагрузится, используя

./неисправность

И тогда виртуальная машина centos 7 работает хорошо…

С уважением

Примечание: возможно, у вас / dev / mapper / root другое имя, просмотрите журнал ошибок с помощью journalctl -xe, чтобы найти имя вашего плохо смонтированного устройства