btrfs 파일 시스템의 폴더 에이 문제가 있습니다. 마운트 지점과 lsof를 확인하는 것이 일반적입니다. 내 경우에는 수정 된 이후로 오래된 버그로 인한 손상이었습니다.
확인해야 할 일반적인 사항 :
- lsof를 + D <path> - 본 의지 L 난 s의 T 개의 모든 입출력 펜 F 세틸. 열려있는 파일이 들어있는 폴더는 삭제할 수 없지만 일반적으로 "장치 또는 리소스 사용 중"이라는 약간 다른 오류가 발생합니다. "+ D <path>"를 생략하면 lsof는 모든 파일 시스템의 모든 폴더에 대한 목록을 표시하므로 시간이 낭비됩니다. ;)
- mount : 현재 마운트 된 파일 시스템을 보여줍니다. 활성으로 마운트 된 마운트 지점 또는 해당 상위 폴더는 삭제할 수 없습니다.
- btrfs sub list <path> : 마운트 지점과 유사하게 btrfs 관련 명령을 사용하지 않으면 btrfs subvolume을 삭제할 수 없습니다. btrfs subvolume delete <path> .
손상 해결 방법
쉽게 고칠 수없는 손상된 경우 기본 해결 방법은 파일 시스템을 백업하고 포맷 한 다음 복원 (잘못된 데이터 제외)하는 것입니다. 파일 시스템에있는 데이터 양에 따라이 작업이 번거로울 수 있습니다. :-/
필자의 경우 문제 폴더가 하위 볼륨 내부에 있었으므로 위의 작업을 수행 할 수 있었지만 전체 파일 시스템 대신 하위 볼륨 만 삭제했습니다. 데이터를 백업하고 하위 볼륨 btrfs sub del <subvolume-path>를 삭제했습니다 . 그런 다음 문제 폴더를 남기지 않고 새로운 하위 볼륨으로 복원 할 수있었습니다.
i_size의 손상
필자의 경우 원인은 0이 아닌 i_size의 손상으로 판명 되었습니다. Btrfs는 i_size를 사용하여 폴더가 비어 있는지 여부를 알려줍니다. 이를 확인하려면 다음을 실행하십시오.
stat -c %s <foldername>
btrfs에서 빈 폴더의 i_size는 0이어야합니다. 결국 그것은 일반적으로 4k입니다.
관련된 링크들:
https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#I_cannot_delete_an_empty_directory
rm -r
터미널 의 출력은 무엇 입니까? 이 게시물 의 답변을 사용해 보셨습니까 ?