Không còn chỗ trống trên thiết bị, df hiển thị sự khác biệt


15

Một vài giờ trước phân vùng gốc của tôi đã đầy, tôi đã di chuyển các tệp khỏi nó và báo cáo df:

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/hda1             183G  174G     0 100% /

Vì vậy, cần có 9GB miễn phí, nhưng tận dụng báo cáo 0 và Sử dụng vẫn ở mức 100%.

Tôi đã thử nghiệm như root, vd

# echo test >a ; cat a
test

nó hoạt động như mong đợi; tuy nhiên, như một người dùng bình thường, tôi vẫn gặp lỗi:

$ echo test >a ; cat a
bash: echo: write error: No space left on device

Thư mục gốc gốc nơi tôi đã tiến hành kiểm tra dương tính và thư mục chính của tôi nằm trên cùng một phân vùng. Mục nhập fstab là:

/dev/hda1 / ext3 noatime,defaults,errors=remount-ro 0 1

Câu trả lời:


34

Hầu hết các hệ thống lưu trữ dành một tỷ lệ nhất định cho root, vì vậy bạn vẫn có thể đăng nhập với quyền root và giải quyết các vấn đề về không gian đĩa. Thông thường đây là 5%. 9GB là khoảng 5% của 183GB, vì vậy điều này sẽ có ý nghĩa. Bạn có thể thấy bao nhiêu được bảo lưu bằng Tune2fs:

# tune2fs -l /dev/sda1 | grep -i reserved
Reserved block count:     936488
Reserved GDT blocks:      1019
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)

Bạn có thể sửa đổi nó bằng cách sử dụng

# tune2fs -m 3 /dev/sda1
tune2fs 1.41.9 (22-Aug-2009)
Setting reserved blocks percentage to 3% (561893 blocks)

Trên các ổ đĩa lớn hiện đại, 5% có thể là một chút quá mức, và bạn có thể muốn đặt nó thấp hơn. Bạn không muốn đặt nó về không.


1
Không thể tin rằng tôi đã không biết điều đó. Tôi tốt hơn không nói tôi đã sử dụng Linux được bao lâu rồi ...
đánh dấu

@nfm Này, tôi đã làm quản trị Linux cơ bản trên các hộp gia đình trong nhiều năm và chưa bao giờ nghe về nó. +1 để biết thông tin tuyệt vời :-)
Topher Fangio

5

Tôi với bob, hãy thử df -i, nếu bạn có một loạt các crontabs đầu ra xấu, ví dụ: thư mục / var / spool / clientmqueue / của bạn có thể được lấp đầy


3

Hãy nhìn vào INODES quá. Trong bản cài đặt "vanilla", nếu bạn có nhiều tệp nhỏ, chúng có thể tiêu thụ inodes, nhưng không phải dung lượng. Bạn sẽ thấy rằng bạn có không gian có sẵn, nhưng vì các nút của bạn đã đầy, bạn sẽ không thể sử dụng không gian này.


3
Hầu hết các thông báo hiện đại có số lượng inodes rất lớn ngay cả trên các hệ thống tập tin nhỏ. Đôi khi nó là một vấn đề nhưng do người dùng có thể tạo tập tin c, nó không chắc là vấn đề inode. (mục nhập thư mục yêu cầu inodes ngay cả khi chúng không yêu cầu bất kỳ khoảng trống nào).
chris

2

"Theo mặc định, mọi hệ thống tệp trong Unix đều có một số không gian dành cho siêu người dùng (root). Điều này có nghĩa là không người dùng Unix thông thường nào có thể lấp đầy hệ thống tệp của bạn tới 100% và do đó, nó sẽ luôn có đủ không gian trống để tiếp tục hoạt động bình thường. "

Từ: http://www.unixtutorial.org/commands/tune2fs/


1

Một điều khác để kiểm tra là xem có tệp nào đang mở trên hệ thống tệp đó không (đặc biệt là nhật ký). Xóa các tệp sẽ không xóa không gian trên đĩa cho đến khi tệp thực sự bị đóng.


0

Tôi đã đặt cược $ 1 mà Clyde có câu trả lời. Một quá trình có một tập tin mở trên thiết bị đó. Trong linux, tập tin không thực sự bị xóa cho đến khi quá trình giữ nó mở cho phép nó đi.

Tôi sẽ bắt đầu với: lsof | grep hda1

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.