Tôi gặp vấn đề này với một thư mục trên hệ thống tập tin btrfs. Kiểm tra điểm gắn kết và lsof là những điều bình thường để tìm kiếm. Trong trường hợp của tôi, đó là lỗi do lỗi cũ gây ra, kể từ khi sửa:
Những điều bình thường cần kiểm tra:
- lsof + D <path> - Điều này sẽ l i s t tất cả o pen f iles. Bạn không thể xóa một thư mục chứa các tệp đang mở, mặc dù điều đó cũng thường gây ra một lỗi khác: "Thiết bị hoặc tài nguyên bận". Lưu ý rằng nếu bạn bỏ qua "+ D <path>", lsof sẽ hiển thị danh sách cho tất cả các thư mục trên tất cả các hệ thống tệp - sẽ lãng phí thời gian. ;)
- mount : Điều này sẽ cho bạn thấy các hệ thống tập tin hiện đang gắn kết. Bạn không thể xóa một mountpoint được gắn tích cực hoặc các thư mục mẹ của nó.
- danh sách phụ btrfs <path> : Tương tự như điểm gắn kết, bạn không thể xóa một subvolume btrfs ngoại trừ bằng cách sử dụng lệnh btrfs-cụ thể: btrfs subvolume xóa <path> .
Giải pháp tham nhũng
Trong trường hợp tham nhũng không thể dễ dàng sửa chữa, cách giải quyết cơ bản là sao lưu, định dạng hệ thống tệp và sau đó khôi phục (loại bỏ dữ liệu xấu). Tùy thuộc vào lượng dữ liệu bạn có trong hệ thống tập tin, đây có thể là một việc vặt. : - /
Trong trường hợp của tôi, thư mục vấn đề nằm trong một subvolume vì vậy tôi có thể thực hiện các thao tác trên nhưng chỉ xóa các subvolume thay vì toàn bộ hệ thống tập tin. Tôi đã sao lưu dữ liệu của mình và xóa subvolume: btrfs sub del <subvolume-path> . Sau đó tôi đã có thể khôi phục vào một subvolume mới, để lại thư mục vấn đề.
Tham nhũng của i_size
Nguyên nhân trong trường hợp của tôi được phát hiện là tham nhũng của i_size , trong đó nó khác không. Btrfs sử dụng i_size để cho biết thư mục có trống hay không. Để kiểm tra điều này, hãy chạy:
stat -c %s <foldername>
I_size của một thư mục trống trong btrfs nên bằng không. Trong ext nó thường là 4k.
Liên kết liên quan:
https://btrfs.wiki.kernel.org/index.php/Pro Hiệu_FAQ#I_cannot_delete_an_empty_directory
rm -r
thiết bị đầu cuối là gì? Bạn đã thử với câu trả lời của bài này ?