LINUX.ORG.RU

Загрузка системы, fsck

 ,


0

1

В старом SSD Плексторе PX-64M5S появились бэды (стабильно обнаруживается несколько бэдов). OS - Debian 11 stable. Во время загрузки, предлагается проверить диск с помощью fsck: https://i.ibb.co/fHnNXNS/P-20240614-110356-HDR.jpg

Проверкa fsck на последнем из пунктов тормозится на час, после чего я проверку прервал:

root@komp:/home/~# sudo fsck -y /dev/sda2
fsck from util-linux 2.36.1
e2fsck 1.46.2 (28-Feb-2021)
222 contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Inode 523398 extent tree (at level 1) could be narrower.  Optimize? yes

Inode 531653 extent tree (at level 1) could be narrower.  Optimize? yes

Inode 532267 extent tree (at level 2) could be narrower.  Optimize? yes

Inode 546467 extent tree (at level 2) could be narrower.  Optimize? yes

Error reading block 2098650 (Ошибка ввода/вывода) while getting next inode from scan.  Ignore error? yes

Force rewrite? yes

Посоветуйте, пожалуйста, как попробовать загрузить эту систему.


Не надо его запускать, этими попытками ты только уменьшаешь шанс того, что с него удастся спасти данные.

Загружайся с другого диска, с этого снимай образ (программа ddrescue). Дальше образ клонируй (чтоб был оригинал который ты не трогаешь и был второй файл-клон) и на клоне запускаешь fsck, затем можешь пытаться прочитать оттуда ценные данные, а диск после этого уничтожить (в мусорку нельзя - оттуда могут вытащить и украсть данные которые ещё уцелели).

firkax ★★★★★
()
Ответ на: комментарий от firkax

Загружайся с другого диска, с этого снимай образ (программа ddrescue).

Лучше с LiveCD сделать dd if=диск of=disc.iso conv=noerror && sync && sleep 5 && sync, затем подключаешь другой диск и делаешь dd if=disc.iso of=другой_диск conv=noerror && sync && sleep 5 && sync

anonymous
()
Ответ на: комментарий от anonymous

На другой диск делать dd не надо, надо делать образу fsck а потом смонтировать его (образ) и забирать с него файлы.

dd /dev/zero не заменяет уничтожение, особенно если ссд уже сдох и запись плохо работает или не работает.

firkax ★★★★★
()
Ответ на: комментарий от firkax

только там ещё про другой диск пишут - это уже не надо

Это было как данные со старого диска на новый перенести. Ещё можно и даже лучше сделать mkdir -p /mnt/iso && mount -o loop disc.iso /mnt/iso, затем копировать файлы из директории /mnt/iso, затем сделать umount /mnt/iso.

anonymous
()
Ответ на: комментарий от Lesjar

Объясни, зачем тебе грузить именно её, и тогда может быть будет решение. Я причин к этому не вижу, лучше установить новую на новый диск и скопировать в новоустановленную данные с образа.

firkax ★★★★★
()
Ответ на: комментарий от Lesjar

Спасибо, но что делать после клонирования чтобы именно загрузить эту систему?

Лучше не грузить. Достань нужные файлы и скинь их куда-нибудь. Потом на новый диск установишь систему.

anonymous
()
Ответ на: комментарий от firkax

firkax, anonymous, пользоваться битой системой я не собираюсь, а загрузить её хочу чтобы достать сессию сохранённую приложением Firefox Tab session manager. Насколько мне известно, Tab session manager не хранит свои сессии в файле, который легко скопировать из незагружаемой системы в другую. Плюс, некоторые настройки системы хочу скопировать. Ничего важного.

Lesjar
() автор топика
Ответ на: комментарий от einhander

Как я понял, для Firefox и Linux локация такая:

[root directory]\storage\default\moz-extension+++3637e901–44a0–4847-ac09–3cfcf8af67b1\idb\1782160246ssensosi.sqlite

Где [root directory] - папка профиля в Firefox (указана в about:profiles)

https://medium.com/@strang3quark/migrating-tab-session-manager-data-to-a-new-...

Однако, не факт, что старая версия Tab session manager, которая стоит в битой системе будет совместима с какой-то другой версией. Вообще, с восстановлением сессий в Tab session manager у пользователей давно были проблемы и много вопросов осталось без ответов. Трудно сказать, насколько легко восстановить сессии из этого файла, если возможно.

Lesjar
() автор топика
Ответ на: комментарий от Dimez

sync && sleep 5 && sync

Это очистка всех кэшей и буферов, чтобы точно знать, что ФС можно отмонтировать, а диск – доставать.

sleep 5 && sync, чтобы точно быть увереным, что всё очистилось.

anonymous
()
Ответ на: комментарий от anonymous

Переформулирую: при отпускании терминала dd данные уже на устройстве, дополнительно делать манипуляции с дисковым кэшем не надо.

man dd | grep sync – зачем нужны эти опции?

В мане указано, для чего :)

Dimez ★★★★★
()
Ответ на: комментарий от Dimez

man dd | grep sync – зачем нужны эти опции?

В мане указано, для чего :)

при отпускании терминала dd данные уже на устройстве

fdatasync - физически записать данные выходного файла перед завершением

fsync - аналогично, но еще и писать метаданные

dsync - использовать синхронизированный ввод-вывод для данных

sync - аналогично, но и для метаданных

anonymous
()
Ответ на: комментарий от anonymous

fsync - аналогично, но еще и писать метаданные

Прекращаем срач!!! Пишем через dd с параметром conv=fsync, на всякий случай для спокойства потом делаем sync, а для полного - sync && sleep 5 && sync.

anonymous
()
Ответ на: комментарий от Dimez

только что проверил, записал образ через dd и сразу выдернул флешку без sync — загрузилось нормально.
Но ChatGPT говорит, что sync всё же рекомендуется делать после этого.

teod0r ★★★★★
()
Ответ на: комментарий от anonymous

sync && sleep 5 && sync

второй точно лишний, одного достаточно. а вот hdparm -F /dev/sdX нужен (для хардов с кэшем записи).

teod0r ★★★★★
()
Последнее исправление: teod0r (всего исправлений: 1)
Ответ на: комментарий от anonymous

Зачем?

на случай, если питание харда выдернуть раньше, чем успеет сброситься кэш.

это только для IDE

с чего ты взял?

для SATA нужен hdparm -Y /dev/sdX

-Y вообще про другое. это парковка головок. её делать необязательно, оно само паркуется.

teod0r ★★★★★
()
Ответ на: комментарий от anonymous

Для полного спокойствия обычно следуют официальной инструкции.

As a simple rescue method, call dd as shown in the following example: the operand ‘conv=noerror,sync’ is used to continue after read errors and to pad out bad reads with NULs, while ‘iflag=fullblock’ caters for short reads (which traditionally never occur on flash or similar devices):

Хотя бы читаемые данные в IMG-файле будут на своих местах. А, если только ″conv=noerror″, то при ошибке чтения в выходной файл будет записано 0 байт, последующие данные будут сдвинуты, ФС не восстановить.

mky ★★★★★
()
Ответ на: комментарий от teod0r

ChatGPT говорит делать sync после записи в файл на ФС, чтобы её можно было отмонитровать? Исходный вопрос ведь был про команду:

dd if=диск of=disc.iso conv=noerror && sync && sleep 5 && sync
которая пишет в файл на смонированой ФС.

Давайте ещё добавим парочку

blockdev --flushbufs

mky ★★★★★
()
Ответ на: комментарий от mky

ChatGPT говорит делать sync после записи в файл на ФС, чтобы её можно было отмонитровать?

я его спрашивал: «нужно ли делать sync после записи образа на блочное устройство с помощью dd?»

blockdev --flushbufs

это то же самое, что и hdparm -F?

teod0r ★★★★★
()
Ответ на: комментарий от teod0r

Сложно сказать. blockdev просто вызывает ioctl BLKFLSBUF, и драйвер в ядре отправляет нужную команду накопителю, или ничего не отправляет. А hdparm сам отправялет команды накопителю, но, отпять же через ядро/драйвер...

mky ★★★★★
()