Что произойдет, если я удаляю lost + found

38

Когда вы создаете некоторые файловые системы Linux, такие как ext3, создается каталог lost + found. Согласно этому файлы будут размещены там, если файлы были повреждены в результате какого-либо сбоя системы.

Что произойдет, если этот каталог будет удален, и система выйдет из строя. Если папка удалена, могу ли я просто создать новый каталог с mkdir lost + found или есть атрибуты, которые можно установить только при создании файловой системы.

Zoredache
источник

Ответы:

35

fsck воссоздает каталог lost + found, если он отсутствует.

При запуске большинство дистрибутивов запускают fsck, если файловая система определена как не размонтированная без ошибок. Поскольку fsck создает каталог lost + found, если он отсутствует, он создает его и помещает все, что найдет, в этот каталог.

Дейв Чейни
источник
15

Если вы не можете или не хотите работать fsck, вы можете восстановить lost+foundкаталоги с помощью mklost+found:

mklost + found предварительно выделяет блоки диска в каталог lost + found, поэтому при запуске e2fsck (8) для восстановления файловой системы не требуется выделять блоки в файловой системе для хранения большого количества несвязанных файлов. Это гарантирует, что e2fsck не будет выделять блоки данных в файловой системе во время восстановления.

Эндрю
источник
На RHEL 6.4 fsckни e2fsckтам, где воссоздание этого для меня, независимо от того, был ли каталог смонтирован или нет. cd <root-dir-of-the-mount> && mklost+foundсделал это.
Луис Антолин Кано
7

Существующий ранее каталог lost + found с достаточно большим размером для размещения большого количества несвязанных файлов налагает на e2fsck меньшую нагрузку на создание каталога и его увеличение до нужного размера.

Он все еще будет пытаться сделать это, но перед лицом поврежденной файловой системы это может быть более рискованным.

Очень старые fsck для других файловых систем на других платформах не смогли создать / потерял + найдено, а также не смогли его увеличить. Это история для обоснования / lost + found. Но текущее обоснование состоит в том, чтобы просто облегчить работу e2fsck.

Карлито
источник
4
Дело не в том, что они не могли создать потерянный + найденный, а в том, что создавать файлы / каталоги в файловой системе, которая уже испорчена, - плохая идея. Вместо этого вы просто предварительно создаете каталог, который уже достаточно большой, чтобы в нем можно было хранить записи каталогов любых смешанных inode, которые вы найдете в испорченной файловой системе, когда пытаетесь ее очистить.
Крис
5

Если у вас нет lost+found, e2fsck(я не проверял код других fsckреализаций) предложит создать его для вас. Но вы также можете воссоздать его сами, если хотите. в этом каталоге нет ничего особенного (по крайней мере, от проверки кода).

Крис Шут-Янг
источник
2
fsck должен восстановить потерянный + найденный при необходимости, нет?
Дэвид Шмитт
2
Спасибо, я проверил код для e2fsck и действительно предлагает воссоздать его для вас. (Это не гарантирует успеха, хотя --- вот почему заранее созданный lost + found тоже полезен.) Аккуратно!
Крис Джестер-Янг
6
@ ChrisJester-Young - Ваш ответ неверный. lost+foundэто специальный каталог. Он имеет предварительно выделенные дисковые блоки, поэтому инструментам восстановления не нужно выделять блоки во время восстановления. Такие инструменты mklost+foundсуществуют специально, потому mkdirчто не создадут его должным образом. См. Linux.die.net/man/8/mklost+found
aggregate1166877
2

e2fsck будет воссоздавать потерянный + найденный, а также уничтожит любой файл с таким именем, чтобы убедиться, что он может создать его как каталог.

Обратите внимание, что многие старые файловые системы Unix требовали, чтобы lost + found был специально привязан к индексу номер 2, поэтому в большинстве случаев в случае потери каталога необходимо воссоздавать файловую систему. e2fsck просто выполняет поиск любого свободного inode, явно не нуждающегося в inode 2, что делает восстановление намного проще, чем в прежние времена.

Алекс Норт-Киз
источник
1

Вы можете создать этот каталог, просто используя mkdir. Он должен принадлежать пользователю root с группой root или wheel. Кроме этого в этом нет ничего особенного. В случае сбоя питания или неправильного выключения при загрузке системы автоматически запускается fsck. fsck пройдет через систему и попытается восстановить любые найденные поврежденные файлы. Любые файлы, которые встречаются, которые могут быть повреждены, будут перемещены туда.

Другой случай перемещения файлов - это когда fsck находит файл, родительский индекс которого отсутствует. Обычно это происходит, если блок поврежден на диске в определенном месте, где хранится индекс папки. Он переназначит их родительский индекс как папку lost + found.

Изменить: я не уверен, если последний случай будет воссоздать каталог. Я бы оставил это в покое, чтобы быть в безопасности. Я не могу придумать причину, чтобы удалить его. Ничего плохого не случится без этого.

TrueDuality
источник
1
Вы уверены, что это нормально только для создания mkdir?
Да, это так, распределение пространства не привязано к каталогу inode или даже к пути. Распределение зарезервированного пространства - это, более того, флаг в некоторой памяти, который требует привилегий root / kernel и специальных вызовов для доступа, о которых знает fsck, он просто использует это пространство, копируя потенциально поврежденные или испорченные файлы в эту память и создавая файл с индексом, указывающим на новую память. Файловые операции с этими файлами будут вести себя нормально, но любые изменения, такие как перемещение или сохранение, будут извлекать данные из зарезервированной памяти.
TrueDuality
1

Кроме того, в Debian 6 и Ubuntu 12 LTS cronпоставляется пакет, /etc/cron.daily/standardкоторый замечает отсутствующие lost+foundкаталоги в локальных файловых системах и ежедневно отправляет напоминания об этом по электронной почте, рекомендуя использовать mklost+found.

Однако это было удалено ко времени выпуска Debian 7 и Ubuntu 14 LTS, соответственно, потому что оно устарело.

Иосип Роден
источник