Вопрос или проблема
У меня была ошибка ввода/вывода на разделе внешнего жесткого диска sdb4 (обычная точка монтирования – /run/media/yan/data).
Раздел не реагировал, к нему нельзя было получить доступ и он отказывался размонтироваться. Я не знал, что делать, кроме как отключить диск и снова подключить его. После этого у него возникла ошибка файловой системы, поэтому я запустил fsck:
sudo e2fsck /dev/sdb4 -y -v
Он запрашивал множество исправлений (тысячи), но так как данные на этом диске не критичны, я запустил его с флагом -y.
данные содержат файловую систему с ошибками, проверка принудительна.
Проход 1: Проверка индексных инодов, блоков и размеров
Проход 2: Проверка структуры каталогов
# Исправлены неверные номера инодов, неправильные типы файлов, очищены ссылки, удалены/неиспользуемые иноды
Проход 3: Проверка связности каталогов
# Соединены несоединенные иноды каталогов с /lost+found
Проход 4: Проверка счетчиков ссылок
# Исправлен счетчик ссылок инодов, соединили необAttached inode с /lost+found
Проход 5: Проверка сводной информации о группе
# Исправлены различия в битмапах блоков, неправильное количество блоков для группы
# Исправлены различия в битмапах инодов, неправильное количество каталогов для группы, неправильное количество свободных инодов для группы
данные: ***** ФАЙЛОВАЯ СИСТЕМА БЫЛА ИЗМЕНЕНА *****
72955 инодов использовано (0.14% из 51200000)
2390 несмежных файлов (3.3%)
17 несмежных каталогов (0.0%)
# инодов с блоками ind/dind/tind: 0/0/0
Гистограмма глубины экстента: 72264/636/1
186984621 блоков использовано (91.30%, из 204800000)
0 плохих блоков
34 больших файла
70447 обычных файлов
2453 каталога
0 файлов-символов
0 файлов-блоков
0 файлов fifo
4294966642 ссылок
46 символических ссылок (46 быстрых символических ссылок)
0 сокетов
------------
71063 файлов
Итак, если я правильно понимаю, fsck смог спасти 70 тысяч файлов, так как у меня было около 75-80 тысяч файлов на этом диске. Проблема в том, что только 20 тысяч файлов появляются в ‘/run/media/yan/data/lost+found’, и только 24 тысячи на всем разделе.
[yan@machine ~]$ find /run/media/yan/data/lost+found | wc -l
19786
[yan@machine ~]$ find /run/media/yan/data | wc -l
23691
Я снова запустил fsck, но он говорит, что раздел чист (и имеет 74 тысячи файлов?)
[yan@machine ~]$ sudo fsck /dev/sdb4
fsck from util-linux 2.28
e2fsck 1.42.13 (17-May-2015)
данные: чисты, 74200/51200000 файлов, 186685980/204800000 блоков[/cpp]
У меня также очень разные данные о дисковом пространстве в соответствии с df и du (я знаю, что должна быть разница, но здесь она кажется слишком большой, чтобы быть нормальной):
[yan@machine ~]$ df -h /run/media/yan/data
Файловая система Размер Использовано Доступно Использ. % Смонтировано на
/dev/sdb4 769G 700G 31G 96% /run/media/yan/data
[yan@machine ~]$ du -sh /run/media/yan/data
586G /run/media/yan/data
Я предполагаю, что есть еще восстановленные данные, к которым я не могу получить доступ.
Мои вопросы следующие:
1) Возможно ли, чтобы восстановленные файлы от fsck не помещались в lost+found? В таком случае, где они?
2) Есть ли способ вернуть эти недостающие файлы?
3) Если нет, как мне освободить это пространство?
ИЗМЕНЕНИЕ:
Я попробовал более новую версию e2fsck по рекомендации sourcejedi:
[yan@machine build]$ sudo ./e2fsck/e2fsck -f /dev/sdb4
e2fsck 1.43.3 (04-Sен-2016)
Проход 1: Проверка инодов, блоков и размеров
Индод 40501578 дерево экстентов (на уровне 2) могло бы быть уже. Исправить<y>? да
Проход 1E: Оптимизация деревьев экстентов
Проход 2: Проверка структуры каталога
Проход 3: Проверка связности каталогов
Проход 4: Проверка счетчиков ссылок
Проход 5: Проверка сводной информации о группе
данные: ***** ФАЙЛОВАЯ СИСТЕМА БЫЛА ИЗМЕНЕНА *****
данные: 74200/51200000 файлов (3.2% несмежных), 186685964/204800000 блоков
Это ничего не дало, lost+found по-прежнему имеет то же количество файлов и размер.
Я также замечаю, что количество ссылок весьма подозрительно (почти 2^32).
Вы можете попробовать более новую версию e2fsck и/или сообщить об ошибке. Это определенно ошибка.
Сканирование устройства/раздела с помощью photorec
может восстановить больше файлов, если формат поддерживается и они несмежные. Поскольку ваша файловая система довольно заполнена, многие файлы не несмежные. photorec
не восстанавливает имена файлов или каталоги. (например, если это mp3, вы можете использовать что-то вроде picard
, чтобы применить имена файлов из метаданных mp3, т.е. тегов ID3). Обратите внимание, что photorec
требует свободного места на другой файловой системе, чтобы восстановить все файлы.
Ответ или решение
После сбоя файловой системы и запуска утилиты fsck, вы столкнулись с проблемой, когда часть файлов была восстановлена, но не оказалась в папке lost+found. Давайте подробно рассмотрим вашу ситуацию и ответим на ваши вопросы.
Ответы на ваши вопросы:
1) Возможно ли, что восстановленные файлы fsck не были помещены в lost+found? Если да, то где они находятся?
Да, существует возможность, что некоторые восстановленные файлы не были помещены в папку lost+found. Утилита fsck выполняет восстановление файлов через несколько проходов, и на некоторых из них она может не обнаружить или не распознать данные как "ущербные" файлы, которые подлежат перемещению в lost+found. Кроме того, если файловая система была повреждена, для некоторых файлов может отсутствовать необходимая информация о местоположении, что также мешает их правильному восстановлению.
Итак, восстановленные файлы могут находиться в других директориях, но их сложно идентифицировать или они могут быть "потеряны" в структуре файловой системы. Для их нахождения можно использовать более детальные утилиты для анализа файловой системы.
2) Существуют ли способы вернуть отсутствующие файлы?
Если файлы не находятся в lost+found и не удалось их обнаружить с помощью fsck, можно попробовать использовать специализированные утилиты для восстановления данных, такие как photorec
или testdisk
. Эти программы могут просканировать устройство и попытаться восстановить файлы на основе их сигнатур.
Имейте в виду, что photorec
не восстанавливает оригинальные имена и пути к файлам; он сохраняет их в директориях, которые будут созданы в процессе восстановления. Чтобы восстановить метаданные файлов (например, названия в mp3), нужно использовать дополнительные инструменты.
3) Если файлы не вернуть, как можно освободить это место?
Если вам не удалось вернуть свои файлы, и вы хотите освободить место на диске, рекомендуется выполнить следующие шаги:
-
Очистите папку lost+found. Если у вас есть какие-либо файлы, которые вы не планируете использовать, их можно удалить.
-
Используйте dd или другие утилиты для стирания данных. Например, если вы уверены, что данные не нужны, вы можете выполнить полное форматирование раздела и перезапись его, чтобы освободить место.
-
Проверьте наличие скрытых/брошенных блоков. Возможно, на разделе остаются "незанятые" блоки данных. Проверьте использование дискового пространства с помощью
du
иdf
, чтобы обнаружить расхождения. -
Проведите еще одну проверку файловой системы. Используйте актуальную версию fsck, чтобы убедиться, что файловая система действительно чиста.
Заключение
Учитывая вашу проблему, важно помнить, что восстановление данных с поврежденных устройств всегда является сложным процессом. Чаще всего результат зависит от степени повреждения файловой системы и того, как утилиты дали возможность восстановить данные. Опытные пользователи рекомендуют регулярно создавать резервные копии важных данных, чтобы избежать подобных ситуаций в будущем.