
можно ли запустить восстановление xfs, повторно отредактировав файл fstab?
/dev/mapper/vg-linux_root / xfs defaults 0 0
UUID=7de1dc5c-b605-4a6f-bdf1-f1e869f6ffb9 /boot xfs defaults 0 0
/dev/mapper/vg-linux_var /var xfs defaults 0 0
/dev/mapper/vg-linux_swap swap swap defaults 0 0
Я не уверен, но если заменить последнюю цифру с 0 на 1, это правильно?
решение1
Нет, простое редактирование /etc/fstab не может привести к выполнению xfs_repair.
Для других типов файловых систем это сработает. Но XFS здесь особенная.
Изменение 6-го поля на /etc/fstab
ненулевое значение в файловой системе XFS приведет к запуску системы fsck.xfs
, на странице руководства которой указано:
NAME
fsck.xfs - do nothing, successfully
[...]
However, the system administrator can force fsck.xfs to run xfs_re‐
pair(8) at boot time by creating a /forcefsck file or booting the sys‐
tem with "fsck.mode=force" on the kernel command line.
Поэтому обычно fsck.xfs
вообще ничего не делают.
Если вы действительно хотите xfs_repair
запустить систему при загрузке, необходимо соблюсти два условия:
а) Шестое поле /etc/fstab
должно быть ненулевым для рассматриваемой файловой системы XFS, чтобы она fsck.xfs
была выполнена.
b) Либо /forcefsck
файл должен существовать в корневой файловой системе (или, возможно, в initramfs, если вы планируете проверить корневую файловую систему), либо командная строка ядра должна иметь fsck.mode=force
опцию загрузки. Это приведет fsck.xfs
к запуску xfs_repair
вместо того, чтобы ничего не делать.
Что же такого особенного в xfs_repair?
Файловая система XFS и xfs_repair
инструмент предполагают, что базовый диск находится в хорошем состоянии или, по крайней мере, способен прозрачно заменять плохие блоки встроенными запасными блоками (как это делают все современные диски). Если современный диск имеет постоянные плохие блоки, видимые операционной системе, это обычно означает, что встроенный механизм запасных блоков уже перегружен количеством плохих блоков, и диск, вероятно, в любом случае вскоре полностью выйдет из строя.
На странице руководства xfs_repair
написано:
Disk Errors
xfs_repair aborts on most disk I/O errors. Therefore, if you are trying
to repair a filesystem that was damaged due to a disk drive failure,
steps should be taken to ensure that all blocks in the filesystem are
readable and writable before attempting to use xfs_repair to repair the
filesystem. A possible method is using dd(8) to copy the data onto a
good disk.
xfs_repair
Поэтому в обычных обстоятельствах вам, вероятно, не следует настраивать автоматический запуск.
Если в файловой системе XFS есть ошибки, вам всегда следует сначала оценить состояние базового диска: это smartctl -a /dev/<disk device>
может быть полезно, например, использовать dd
для чтения всего содержимого раздела/LV /dev/null
и убедиться, что команда может быть выполнена без ошибок.
Если диск выходит из строя, сначала следует скопировать содержимое раздела/LV на новый, безошибочный диск (возможно, с помощью dd
или ddrescue
), и только затем попытаться запустить xfs_repair
файловую систему на безошибочном диске.
Автоматический запуск xfs_repair
во время загрузки может быть подходящим обходным путем, если вы знаете, что что-то вызывает ошибки на уровне файловой системы, даже если ваши диски в хорошем состоянии. Но это всего лишь обходной путь, а не исправление: вам следует выяснить, что вызывает ошибки файловой системы, и устранить основную причину. (Возможно, ошибка драйвера файловой системы, требующая обновления пакета ядра для исправления?)
решение2
Если файлы на нем /dev/sda
имеют ошибки, то вам нужно запустить fsck
его. Помните, что он на самом деле не восстановит сам диск, а только файлы. Если на диске действительно есть ошибки и он выходит из строя, то лучше заменить диск и восстановить данные из резервной копии, потому что если все станет достаточно плохо, вы, возможно, потеряете данные, особенно если диск вообще умрет.