Phần mềm rm: không thể xóa xxx: Không còn chỗ trống trên thiết bị.


17

Chạy OpenSuse 12.2.

Đột nhiên, phần gốc có vẻ đã đầy (99%) nhưng tôi không còn có thể xóa các tệp theo cách thủ công.

"Rm: không thể xóa xxx: Không còn chỗ trống trên thiết bị" mặc dù 450mb vẫn miễn phí theo df. Hệ thống tập tin là BTRFS.

Tôi đã thử kiểm tra FS bằng btrfsck nhưng không được.

Phải làm sao


1
Bạn có bật snapshot không?
MadHatter

Bạn có kiểm tra xem có quá trình nào đang chạy bằng tệp không? (kiểm tra với lsof), nếu vậy, vui lòng dừng quá trình và thử xóa tệp một lần nữa.
mô tả

Câu trả lời:


20

Rất có thể, bạn đang gặp phải một vấn đề trong đó BTRFS phải phân bổ một chút siêu dữ liệu trước khi có thể xóa tệp. Một trong những điểm yếu của BTRFS là việc xử lý tình trạng ngoài không gian; cải thiện hành vi trong lĩnh vực này là một trong những ưu tiên của dự án.

Một gợi ý trên wiki btrfs là ghi đè tệp thay vì xóa nó.

#instead of this
rm -f ./some_file

# do this
true >| ./some_file

Điều đó sẽ xóa nội dung của tệp mà không thay đổi mục nhập thư mục. Khi bạn đã tìm đường ra khỏi góc bạn đang ở, bạn có thể xóa các tệp như bình thường. Nếu điều đó gây rắc rối cho bạn, bạn có thể muốn tạm thời kết thúc với nodatacowtùy chọn, tắt hành vi sao chép trên ghi. Nhưng ... không chắc chắn điều đó có giúp ích hay không.

Nói chung, mặc dù: không chạy hệ thống tập tin BTRFS khô. Đây vẫn là phần mềm tiền sản xuất, và các trường hợp góc hơi thô.


2
Thủ thuật hoạt động độc đáo cũng cho một ổ đĩa mạng gắn cifs, cảm ơn!
markusN

2

Tôi đã phải đối mặt với thông báo lỗi tương tự, nhưng trong trường hợp của tôi, hệ thống tệp không được báo cáo là đầy đủ:

user@host:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       2.8G  2.0G  618M  77% /

Nhưng yêu cầu BTRFS tiết lộ rằng nó thực sự đầy đủ:

user@host:/# btrfs fi show
Label: none  uuid: {UUID redacted because reasons}
        Total devices 1 FS bytes used 1.92GiB
        devid    1 size 2.79GiB used 2.79GiB path /dev/sda3

Ngay cả việc ghi đè bất kỳ tệp nào (như tylerl đã đề xuất) là không thể. Giải pháp của tôi đã được tìm thấy tại http://marc.merlins.org/perso/btrfs/post_2014-05-04_Fixing-Btrfs-Filesystem-Full-Problems.html mà khuyên để chạy một tái cân bằng thủ công của hệ thống tập tin sử dụng btrfs balance start -dusage=55 /path/to/filesystem.


0

Đối với tôi, bằng cách sử dụng ZFS, tôi thấy rằng việc xóa các tệp khác đã giải phóng đủ dung lượng trên phân vùng ZFS, và sau đó tôi có thể xóa các tệp trong câu hỏi.


0

Trong trường hợp của tôi, với hệ thống tệp ZFS trên Linux, tôi thậm chí không thể cắt bớt tệp. Phá hủy các snapshot cũ đã lừa (nếu có).

zfs destroy /path/of/snapshot

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.