Как удалить запись каталога (файл), который не имеет inode?


1

Должно быть одна из странностей, которые я не могу понять, это то, что использование chromiumбраузера время от времени выдает мне inodeфайл без имени Preferences.

Если я делаю это в терминале:

$> ls -i ~/.config/chromium/Default/ | grep Preferences

Я получаю этот вывод

ls: cannot access '~/.config/chromium/Default/Preferences': No such file or directory
       ? Preferences
10551098 Secure Preferences

Выходные данные показывают в первой строке, что файл не существует, но он все еще отображается как запись каталога во второй строке. Третья строка отображается только потому, что, как оказалось, в настройках grep также отфильтрована эта запись.

Вопрос, как указано в заголовке сейчас, в основном: «Как удалить эту запись в каталоге»?

Некоторая дополнительная информация: os / distro Current Arch Linux, файловая система: btrfs.

В прошлом я загружался с флэш-накопителя live-usb и запускал btrfs checkсоответствующий флаг, который обнаружил проблему и решил ее. Однако сейчас у меня нет такого готового диска. И поэтому меня больше всего интересуют разные способы очистки записи каталога, которая больше не связана с inode.

Может быть, btrfs может сделать это «онлайн»?

Ответы:


1

К сожалению, единственный способ сделать это прямо сейчас на BTRFS - это оффлайн с btrfs check. В прошлом было некоторое обсуждение добавления положений, чтобы справиться с этим, но на самом деле это никуда не делось (по крайней мере, публично, я понятия не имею, над чем может работать любой произвольный разработчик).

Тем не менее, есть несколько более сложных альтернатив для автономной работы с USB-накопителем, таких как:

  1. Если вы используете как initramfs, так и Systemd, вы должны указать systemd остановить процесс загрузки перед монтированием настоящей корневой файловой системы и перейти в оболочку. К сожалению, я не помню, как это сделать (я сам не использую systemd, так что он никогда не подходит мне), но это может быть самый простой вариант, если вы можете понять это, потому что это даст вам ( в основном) полная среда для восстановления системы.
  2. Как правило, на жестком диске можно установить локальную копию системы Live USB или Live CD. Я использую этот подход, извлекая соответствующие файлы из ISO- образа SystemRescueCD и помещая их в мой загрузочный раздел (и в моем случае обновляя загрузчик записью, хотя, если вы используете os-prober, это должно автоматически поднять его). Точный набор файлов зависит от системы Live, но для SystemRescueCD вам нужно одно из ядер, образ initramfs, sysrcd.dat и sysrcd.md5.
  3. Если у вас есть время и терпение, чтобы обновлять его, вы можете использовать Buildroot или аналогичные инструменты, чтобы собрать образ, который напрямую загружается загрузчиком и работает полностью из ОЗУ, независимо от остальной части вашей системы. Затем вы можете объединить любые инструменты восстановления, которые вы хотите (например, btrfs-progs), и загрузить их, когда вам нужно сделать что-то подобное (это требует больше усилий, но использует меньше места, чем вариант 2, и более надежно, чем вариант 1). ).
  4. В некоторых дистрибутивах вы можете довольно просто создать резервный корневой раздел, содержащий материалы, необходимые для исправления основного. Это может быть действительно вовлечено, хотя, и это не самая простая вещь, чтобы идти в ногу со временем. Тем не менее, Debian и Gentoo делают это действительно легко (Debian имеет инструменты для начальной установки и может надежно запускать обновления в chroot, Gentoo просто тривиально делать подобные вещи и даже не нуждается в chroot для обновлений (потому что вы может указать emerge на произвольный каталог, который будет рассматриваться как корневой каталог)).
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.