Как удалить пустой каталог (файловая система btrfs)?

Как удалить пустой каталог (файловая система btrfs)?

Я использую экспериментальную btrfsфайловую систему.

Мой каталог выглядит так:

 ls -la empytfolder
 total 4
 drwxr-xr-x 1 root root   0 19. Mär 14:00 .
 drwxr-xr-x 1 root root 298 19. Mär 13:59 ..

Я пытаюсь удалить его с помощью, rm -rf emptyfolderно он выдает ошибку rm: cannot remove directory: directory not empty?Как мне удалить/удалить мою пустую папку? Почему у меня 4 файла в этой папке? Я пытаюсь удалить ее как пользователь root. Моя файловая система - btrfs.

stat emptyfolderдает мне:

 Datei: „emptyfolder“
 Größe: 0           Blöcke: 0          EA Block: 4096   Verzeichnis
 Gerät: 21h/33d Inode: 256         Verknüpfungen: 1
 Zugriff: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
 Zugriff    : 2012-03-19 14:00:28.205205566 +0100
 Modifiziert: 2012-03-19 14:00:23.925025572 +0100
 Geändert   : 2012-03-19 14:00:23.925025572 +0100
 Geburt    : -

У меня проблемы с системными часами. Иногда они показывают неправильное время.

$ lsof +D emptyfolder
lsof: WARNING: can't stat() fuse.gvfs-fuse-daemon file system /home/user
/.gvfs Output information may be incomplete.

Что это за gvfs-fuse-daemon? Как его удалить?

Я пробовал fuser -uv /dev/disk, но безрезультатно. Нет ни одного процесса, который обращался бы к папке. Я переместил папку в tmp.

решение1

FAQ по Btrfs - Не могу удалить пустой каталог:

Первый случай, если вы получаете:

rmdir: failed to remove ‘emptydir’: Operation not permitted 

то это, вероятно, потому, что «emptydir» на самом деле является подтомом.

Вы можете проверить, так ли это, с помощью:

btrfs subvolume list -a /mountpoint

Чтобы удалить подтом, вам придется выполнить:

btrfs subvolume delete emptydir

Второй случай, если вы получаете:

rmdir: failed to remove ‘emptydir’: Directory not empty 

то у вас может быть пустой каталог с ненулевым i_size.

Вы можете проверить, так ли это, с помощью:

stat -c %s emptydir
3196         <-- unexpected non-zero size

Запуск btrfs checkэтой (несмонтированной) файловой системы подтвердит наличие проблемы и выведет список других проблемных каталогов (если таковые имеются).

Вы получите аналогичный вывод (отрывок):

checking fs roots
root 5 inode 557772 errors 200, dir isize wrong
root 266 inode 24021 errors 200, dir isize wrong ...

Такие ошибки можно исправить, btrfs check --repairесли вы используете достаточно последнюю версию btrfs-progs.

Обратите внимание, что к этому btrfs check --repairне следует относиться легкомысленно, так как в некоторых случаях это может усугубить проблему вместо того, чтобы что-либо исправить.

решение2

У меня были похожие симптомы с разделом btrfs и

btrfs check --repair /dev/sdXY

исправил проблему для меня. Найденные ошибки были в виде:

root X inode Y errors 200, dir isize wrong

и

root X inode Y errors 80, file extent overlap

Однако вторая ошибка осталась даже после ремонта, и это начало меня беспокоить.

решение3

Возникла проблема с потерянным каталогом на ReadyNAS-боксе. Общий ресурс больше не был виден в GUI, но каталог под /data до сих пор существовал. Поэтому я хотел удалить эту папку, но rmdir не работает.

Я удалил снимок за снимком

cd /data
btrfs subvolume delete ./VirtualBox1/.snapshots/309/snapshot
...
btrfs subvolume delete ./VirtualBox1/.snapshots/2/snapshot
btrfs subvolume delete ./VirtualBox1/.snapshots/1/snapshot
btrfs subvolume delete ./VirtualBox1/.snapshots

После удаления всех снимков мне удалось удалить саму «папку».

btrfs subvolume delete ./VirtualBox1

решение4

Попробуйте cdвыйти из emptydir и запустить lsof +D /path/to/emptydirего, чтобы увидеть, что его открыло. В зависимости от того, что это за каталог и как он используется, возможно, что-то открывает и закрывает каталог очень быстро, и вы просто случайно ловите это, когда в нем ничего нет при запуске ls, но что-то есть при запуске rm -fr emptydir. В этом случае это не должно иметь никакого значения, но попробуйте также запустить rmdir emptydir.

Общее число в верхней части вывода ls(полагаю, insgesamt означает total?) указывает на пустой каталог.

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

Связанный контент