У меня есть вопрос, касающийся неисправимых ошибок в файловой системе BTRFS. В частности, я недавно запустил BTRFS Scrub после того, как у меня возникла проблема с одной из моих флешек RAM, и, похоже, обнаружены 4 неисправимые ошибки. Это вывод:
scrub status for <UUID>
scrub started at Thu Dec 25 15:19:22 2014 and was aborted after 89882 seconds
total bytes scrubbed: 1.87TiB with 4 errors
error details: csum=4
corrected errors: 0, uncorrectable errors: 4, unverified errors: 0
К счастью, у меня есть все резервные копии в третичной резервной копии, поэтому я не особенно обеспокоен потерей файлов (я хорошо осведомлен о проблемах, связанных с экспериментальным состоянием BTRFS, у меня есть несколько резервных копий для обеспечения безопасности моих данных, и я решил продолжайте использовать его, поэтому, пожалуйста, нет: «Решение; не используйте сообщения BTRFS»).
Я хотел бы знать, однако, как определить, какие файлы связаны с неисправимыми ошибками? Я хочу найти их, удалить их и заменить их резервными копиями.
Если у кого-то есть информация о том, как это сделать, я хотел бы услышать от вас.
Заранее спасибо.
источник
sort | uniq
чтобы избавиться от дубликатов, например так:dmesg | grep "checksum error at" | cut -d\ -f24- | sed 's/.$//' | sort | uniq
Да, сопоставление INODE или Block Number с именем файла может быть затруднено. Если вы действительно заинтересованы, вы можете попробовать что-то вроде этого и посмотреть, какие файловые файлы копировать ... в конце концов, если файл плохой, он должен выдать ошибку во время копирования. Я ранее использовал этот тип техники.
источник
cp -v
, вы также можете следить за прогрессом:find / -type f -exec cp -v {} /dev/null \; 2> corrupted-files.txt
. Однако/proc/kcore
файл может быть огромным (у меня было 128 ТБ), поэтому операция копирования, скорее всего, зависнет. Поскольку/proc
каталог содержит специальные магические файлы, нам не нужно проверять их. Исключить/proc
каталог:sudo find / -type f -and -not -path /proc -exec cp -v {} /dev/null \; 2> corrupted-files.txt
dmesg
предоставит вам подробную информацию о файлах, связанных с ошибками контрольной суммы. Сообщения обычно выглядят так: «BTRFS: ошибка контрольной суммы в логическом [...] в dev [...], секторе [...], корневом [...], inode [...], смещении [ ...], длина [...], ссылки [...] (путь: [...]) "; последняя часть информации - это абсолютный путь к поврежденному файлу.источник
Я пришел сюда в поисках «неисправимой ошибки» из BTRFS. Вышеупомянутый grep не работал для меня; Я должен был использовать вместо этого:
Обратите внимание, как путь относительно начала подобъема - нет указания, в каком подобъеме он находится. К счастью, для меня это не было проблемой.
источник
somepath/somefile.txt
? Похоже, вы набираете его как отдельную команду - или это результат введенной вами команды? Если все это должна быть одна командная строка, пожалуйста, не разбивайте командные строки на части для отображения - просто поместите это в ответ как одну длинную строку. Но что это? Предоставляете ли вы два входаsort
(канал и файл)? Илиsomepath/somefile.txt
это выходной файл? (Не очень полезно указывать выходные файлы, если только они не являются промежуточными файлами, которые вы используете снова. Люди знают, как обрабатывать результаты; например, по конвейеру.)