
У меня есть внешний жесткий диск, зашифрованный через LUKS. Он содержит файловую систему ext4.
Я только что получил ошибку от rsync для файла, который находится на этом диске:
rsync: readlink_stat("/home/some/dir/items.json") failed: Structure needs cleaning (117)
Если я попытаюсь удалить файл, то получу ту же ошибку:
rm /home/some/dir/items.json
rm: cannot remove ‘//home/some/dir/items.json’: Structure needs cleaning
Кто-нибудь знает, что можно сделать, чтобы удалить файл и исправить связанные с ним проблемы с диском/фс (если таковые имеются)?
решение1
Это явно указывает на повреждение файловой системы. Вам следует размонтировать диск, сделать резервную копию на уровне секторов, а затем запустить e2fsck, чтобы посмотреть, что происходит. Если есть серьезные повреждения, вы можете быть довольны тем, что сделали резервную копию на уровне секторов, прежде чем позволить e2fsck вмешиваться в данные.
решение2
Если кому-то поможет, у меня была похожая проблема (резервные копии rsync/rsnapshot, на затронутом файле). Я разместил свою проблему/решение здесь:
https://ubuntuforums.org/showthread.php?t=2348768&p=13627299#post13627299
КРАТКОЕ СОДЕРЖАНИЕ:
Ошибка резервного копирования rsnapshot (rsync) в системе Arch Linux x86_64; поврежденный, глубоко вложенный файл вызывал эту ошибку, которая также отображалась при попытке удалить этот файл:
sudo rm -fR hourly.5/
rm: cannot remove 'hourly.5/snapshot_root/mnt/Vancouver/temp/temp - old/temp - 09 (Dec 07, 2014 - Sep 02, 2015)/a_OLD-gmail/[email protected]/[Gmail]/LINUX/rsync, rsnapshot; Other backups/19.bak': Structure needs cleaning
Вот в чем проблема:
cd mnt/Vancouver/temp/temp\ -\ old/temp\ -\ 09\ \(Dec\ 07\,\ 2014\ -\ Sep\ 02\,\ 2015\)/a_OLD-gmail/[email protected]/\[Gmail\]/LINUX/rsync\,\ rsnapshot\;\ Other\ backups/
ls -l
ls: cannot access '19.bak': Structure needs cleaning
total 0
-????????? ? ? ? ? ? 19.bak ## << THAT IS THE PROBLEM!!
[ Смотрите также: https://www.reddit.com/r/linuxquestions/comments/4b47r2/has_anyone_ever_gotten_structure_needs_cleaning/ ]
Мой резервный диск — /dev/sda1.
sudo umount /dev/sda1
sudo fsck.ext4 /dev/sda1 ## << accepted suggested fixes
- Редактировать (2023-02): предупредительное замечание: вы не можете работать
fsck
на NAS - сетевых (RAID) жестких дисках - обычно продаются в Интернете (Amazon; ...), и которые выглядят как обычные HDD; ремонт дисков NAS требует специального программного обеспечения. Если вы применяетеfsck
к NAS HDD, вы, скорее всего, повредите его.
Перезагрузил: все вроде нормально. Зашел в резервные копии, удалил проблемный файл:
/mnt/Backups/rsnapshot_backups/hourly.5/snapshot_root/mnt/Vancouver/temp/temp - old/temp - 09 (Dec 07, 2014 - Sep 02, 2015)/a_OLD-gmail/[email protected]/[Gmail]/LINUX/rsync, rsnapshot; Other backups/19.bak
ЧТО НУЖНО?!
[Обновление: да; это сработало: мои резервные копии снова работают нормально! :-) ]
решение3
Файловые системы иногда не в порядке и нуждаются в очистке. Это можно сделатьfsckкоманда. Но помните, что fsck следует запускать только для размонтированных разделов, чтобы избежать риска повреждения файлов.
Если ваша файловая система ext4, попробуйте выполнить следующую команду:
fsck -AR -t ext4 -y
решение4
Я получил то же самое сообщение об ошибке от rsync и то же самое сообщение об ошибке от rm, когда я попытался удалить файл. Поскольку файловая система была корневой, не было возможности использовать fsck. Но когда я просто перезагрузил систему, файл исчез, и резервное копирование прошло успешно. Я понятия не имею, почему это сработало, но, по крайней мере, это простое решение, и стоит сначала попробовать перезагрузиться.