Вызовите проверку fsck после перезагрузки с единственной командой

Это - попытка подвести итог от сессии поиска и устранения неисправностей чата.

Установка оказывается физическим диском-> mdraid raid1-> LVM. Таким образом, существует несколько слоев для работы через. Старая установка была (из-за неудачных предшествующих усилий по восстановлению) не доступна.

Однако NAS gui использовался для создания другого объема на другом диске, и к счастью GUI создал новый объем точно тот же путь. Таким образом, было возможно обнаружить установку от нового диска:

  • mdadm -E new-disk если смещение к запуску данных, под mdraid слоем (2 048 секторов).
  • dmsetup table если блок запуска логического тома (относительно запуска физического тома) (1 152 сектора)
  • Существует магическое число (0x53ef) в третьем секторе ext4 объема. Используя dd и xxd, мы проверили, что магическое число присутствует при том смещении на диске, из которого мы пытаемся восстановить данные.

Вооруженный сектором запуска ext4 файловой системы, можно использовать циклическое устройство только для чтения для восстановления данных:

# losetup /dev/loop0 -o $((512*(1152+2048))) -r /dev/sda1
# mount -text4 -o ro /dev/loop0 /mnt

И затем скопируйте его прочь.

3
28.12.2013, 15:45
2 ответа

systemd's shutdown -F эквивалентный systemctl poweroff. Я не выяснил отношение с fsck. Однако AFAIK, Вы не можете вызвать fsck, использующий systemd, потому что fsck выполняется, прежде чем systemd запускается.

1
27.01.2020, 21:28
  • 1
    Если Вы добавите флаг-F для завершения работу команды, то это вызовет fsck выполнение после перезагрузки: unixhelp.ed.ac.uk/CGI/man-cgi? завершение работы –  diffycat 28.12.2013, 16:37
  • 2
    Это просто передает fsck.mode=force ядру. С systemd я предполагаю, что Вы не можете AFAIK. –  edmz 28.12.2013, 16:47
  • 3
    systemd является init, т.е. самой первой выполненной программой, таким образом, fsck обязательно происходит после того, как systemd выполняется. большое спасибо –  psusi 01.01.2015, 06:56

Когда я хочу принудительно запустить fsck, я просто использую следующую команду:

# tune2fs -C 50 /dev/sda2

Она просто устанавливает счетчик монтирования на 50, но я также установил:

# tune2fs -l
...
Mount count:              18
Maximum mount count:      20

Итак, как вы можете видеть, когда я установил 50 в mount подсчитать, ядро ​​считает, что следует проверить раздел.

Это решение работает всегда, независимо от того, что вы используете sysvinit / systemd или что-то еще.

1
27.01.2020, 21:28

Теги

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