Как автоматически вызвать fsck диски после катастрофического отказа в 'systemd'?

При наличии попробовать dc:

echo "2 k 3.2 3 [1p] sa 

Обратите внимание, что вышеупомянутое будет также использовать 2 десятичной точности и произведет 1, если первое число (3.2 в вышеупомянутом примере) будет больше, чем второе число (3 выше). Но иначе ничего не произведет.

dc bcбрат, в документации GNU описал с теми же “словами” калькулятора произвольной точности. В некоторых дистрибутивах они поставляются в том же пакете, в других дистрибутивах они упаковываются отдельно.

18
07.09.2016, 15:15
2 ответа

Можно вызвать fsck во время начальной загрузки путем передачи fsck.mode=force (auto значение по умолчанию и skip может использоваться для пропуска проверки вообще) как параметр командной строки ядраsystemd v. 213, существует также второй параметр: fsck.repair - управлять как fsck буду иметь дело с грязными файловыми системами при начальной загрузке; возможные значения: preen зафиксировать, что может быть безопасно зафиксировано, yes ответить на да на все вопросы и no значение по умолчанию).


Отметьте это systemd-fsck не знает деталей об определенных файловых системах и просто выполняет средства проверки файловой системы, характерные для каждого типа файловой системы (/sbin/fsck.*).
Теперь, если Ваша файловая система xfs или btrfs это выполнится /sbin/fsck.xfs или /sbin/fsck.btrfs соответственно. Если это, кажется, не работает, возможно, необходимо проверить страницу руководства на fsck.xfs или fsck.btrfs соответственно и исследуйте содержание упомянутых файлов в /sbin.

20
27.01.2020, 19:46
  • 1
    Например, с Личинкой:править /etc/default/grub, затем добавьте fsck.mode=force к значению GRUB_CMDLINE_LINUX_DEFAULT. Затем выполненный update-grub и reboot. –  Yvan 06.09.2016, 11:38
  • 2
    не работает на xfs btw., но эй. это - будущее. –  Florian Heigl 14.10.2016, 02:14

Единственный способ проверить систему BTRFS — использовать ее собственный инструмент btrfs check, у вас должен быть размонтирован корневой том, поэтому единственный вариант — действительно загрузиться с livecd.

Любой совет, который в конечном итоге приводит к звонку fsck.btrfs, неверен, это просто заглушка, которая выводит сообщение и ничего не делает. Сюда входят ответы с параметрами командной строки ядра fsck.modeили файлами .forcefsck.

[root@nuc ~]# cat /usr/sbin/fsck.btrfs
#!/usr/bin/sh -f
AUTO=false
while getopts ":aApy" c
do
    case $c in
    a|A|p|y)    AUTO=true;;
    esac
done
shift $(($OPTIND - 1))
eval DEV=\${$#}
if [ ! -e $DEV ]; then
    echo "$0: $DEV does not exist"
    exit 8
fi
if ! $AUTO; then
    echo "If you wish to check the consistency of a BTRFS filesystem or"
    echo "repair a damaged filesystem, see btrfs(8) subcommand 'check'."
fi
exit 0

Однако, если вы просто не уверены, что все в порядке после отключения питания или чего-то подобного, btrfs checkможет выполнить проверку смонтированной файловой системы только для чтения:

[root@nuc ~]# btrfs check --readonly --force /dev/sda5
Opening filesystem to check...
WARNING: filesystem mounted, continuing because of --force
Checking filesystem on /dev/sda5
UUID: 8c44de9c-c91b-4ac4-857b-da191dc62274
[1/7] checking root items
[2/7] checking extents
[3/7] checking free space cache
[4/7] checking fs roots
[5/7] checking only csums items (without verifying data)
[6/7] checking root refs
[7/7] checking quota groups skipped (not enabled on this FS)
found 3628683264 bytes used, no error found
total csum bytes: 3093864
total tree bytes: 136937472
total fs tree bytes: 126074880
total extent tree bytes: 6455296
btree space waste bytes: 23047273
file data blocks allocated: 5676253184
 referenced 4705763328
0
28.02.2021, 12:51

Теги

Похожие вопросы