실험적인 파일 시스템을 사용하고 있습니다 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개의 파일이 있나요? 루트로 삭제하려고 합니다. 내 파일 시스템은 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이란 무엇입니까? 어떻게 삭제할 수 있나요?
나는 fusions -uv /dev/disk를 시도했지만 아무 소용이 없었습니다. 어떤 프로세스도 폴더에 액세스하지 않습니다. 폴더를 tmp로 옮겼습니다.
답변1
Btrfs FAQ - 빈 디렉터리를 삭제할 수 없습니다.
첫 번째 경우, 다음을 얻는 경우:
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가 0이 아닌 빈 디렉토리가 있을 수 있습니다.
다음을 통해 이러한 경우인지 확인할 수 있습니다.
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
빈 디렉터리에서 실행해 보고 lsof +D /path/to/emptydir
무엇이 열리는지 확인하세요. 디렉토리의 내용과 사용 방법에 따라 무언가가 디렉토리를 매우 빠르게 열고 닫을 수 있으며, ls를 실행할 때 디렉토리에 아무것도 없지만 실행할 때 뭔가가 있는 경우 이를 포착할 수 있습니다 rm -fr emptydir
. 이 경우에는 차이가 없지만 을 실행해 보십시오 rmdir emptydir
.
출력 상단의 총계 ls
(insgesamt는 총계를 의미하는 것 같은데요?)는 빈 디렉터리를 나타냅니다.
파일 시스템 유형도 알아두면 도움이 될 것 같습니다. 또한 이를 실행하여 fsck
도움이 되는지 확인할 수도 있습니다.