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

19

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

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

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

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

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

Майкл Кохне
источник

Ответы:

22

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

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

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

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

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

brendonofficial
источник
Итак, -L - последнее средство, и это ОТЛИЧНЫЕ инструкции о том, как увидеть, насколько плохим будет, если мы будем использовать -L. Какие еще варианты у меня есть, кроме использования -L?
Майкл Кохне
1
@MichaelKohne Восстановление из резервной копии, конечно. Вы не должны приближаться к этому уровню ада, если у вас нет резервных копий.
Майкл Хэмптон
1
@MichaelHampton - Хорошо, достаточно справедливо. Но я не думаю, что Я когда-либо терял файловую систему, подобную этой, из-за ошибок ext4 при сбое питания - xfs менее устойчив? Или мне просто не повезло на этот раз?
Майкл Кохне
@MichaelKohne Я думаю, тебе просто не повезло. XFS довольно надежная файловая система.
Майкл Хэмптон
3
мы привыкли просто делать это из initrd. какой замечательный "прогресс" мы сделали.
Флориан Хейгл
1

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

Повреждение метаданных в xfs ...

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

/ dev / mapper / root / sysroot

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

xfs_repair / dev / mapper / root

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

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

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

С уважением

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

davidleosam
источник