Đĩa từ từ lấp đầy nhưng không thay đổi kích thước tập tin


16

df

 Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/vda1       30830588 22454332   6787120  77% /
none                   4        0         4   0% /sys/fs/cgroup
udev             1014124        4   1014120   1% /dev
tmpfs             204996      336    204660   1% /run
none                5120        0      5120   0% /run/lock
none             1024976        0   1024976   0% /run/shm
none              102400        0    102400   0% /run/user

77% đó chỉ là 60% ngày hôm qua và nó sẽ lấp đầy tới 100% trong vài ngày.

Tôi đã theo dõi filessizes một thời gian rồi:

sudo du -sch /*


9.6M    /bin
65M     /boot
224K    /build
4.0K    /dev
6.5M    /etc
111M    /home
0       /initrd.img
0       /initrd.img.old
483M    /lib
4.0K    /lib64
16K     /lost+found
8.0K    /media
4.0K    /mnt
4.0K    /opt
du: cannot access ‘/proc/21705/task/21705/fd/4’: No such file or directory
du: cannot access ‘/proc/21705/task/21705/fdinfo/4’: No such file or directory
du: cannot access ‘/proc/21705/fd/4’: No such file or directory
du: cannot access ‘/proc/21705/fdinfo/4’: No such file or directory
0       /proc
21M     /root
336K    /run
12M     /sbin
8.0K    /srv
4.1G    /swapfile
0       /sys
4.0K    /tmp
1.1G    /usr
7.4G    /var
0       /vmlinuz
0       /vmlinuz.old
14G     total

Nó đã cho tôi (ít nhiều) những con số giống nhau mỗi ngày. Tổng số 14G đó nhỏ hơn một nửa kích thước đĩa. Phần còn lại sẽ đi đâu?

Kiến thức Linux của tôi không đi sâu hơn nhiều.

Có thể cho các tập tin không hiển thị ở đây? Có thể có không gian được phân bổ theo bất kỳ cách nào khác?


1
7.4 G cho bạn nổi bật /varnhư tôi lớn bất thường. Tôi nghi ngờ một tệp nhật ký được điền nhanh.
Jos

4
Bất kỳ tập tin bị xóa? Điều gì làm lsof -b 2>/dev//null | grep deleted(đầu ra có thể khá lớn, lặp đi lặp lại loại bỏ các mục có vẻ ổn)
muru

@muru có một loạt các tập tin hiển thị theo cách đó. Nó có nghĩa là gì? Họ ở đâu? Làm thế nào để tôi làm sạch nó?
nóng bỏng

2
Một khởi động lại sẽ làm sạch rất nhiều trong số họ. Chúng chỉ là các tệp được mở bởi các quy trình khác nhau sau đó đã bị xóa. Có một số bình thường, nhưng nếu một trong số chúng phát triển quá lớn, bạn sẽ không có cách nào dễ dàng nhận ra nó bằng cách sử dụng du.
muru

1
Lưu ý rằng bạn có thể muốn đặt câu hỏi thứ hai liên quan đến lỗi của bạn với logrotate.conf vì apache nên được định cấu hình để đóng tệp khi đăng nhập xảy ra, v.v. Tôi nói điều này vì khởi động lại khắc phục sự cố ngay bây giờ nhưng trừ khi tôi thiếu vấn đề nên tái diễn định kỳ và phải khởi động lại mỗi tuần là điều đáng buồn. [Tôi đề nghị nếu nó lặp lại, hãy xem nếu dịch vụ httpd khởi động lại (hoặc tải lại) tạm thời làm giảm bớt vấn đề
Foon

Câu trả lời:


28

Nếu có sự tăng trưởng vô hình trong không gian đĩa, một thủ phạm có khả năng sẽ bị xóa các tệp. Trong Windows, nếu bạn cố xóa một tệp được mở bởi một cái gì đó, bạn sẽ gặp lỗi. Trong Linux, tệp sẽ được đánh dấu là đã xóa, nhưng dữ liệu sẽ được giữ lại cho đến khi ứng dụng cho phép. Trong một số trường hợp, điều này có thể được sử dụng như một cách gọn gàng để tự dọn dẹp - sự cố ứng dụng sẽ không ngăn các tệp tạm thời bị xóa .

Để xem các tệp đã bị xóa, vẫn sử dụng:

lsof -b 2>/dev/null | grep deleted

Bạn có thể có một số lượng lớn các tệp bị xóa - bản thân nó không phải là vấn đề. Một tập tin bị xóa duy nhất nhận được lớn là một vấn đề.

Khởi động lại sẽ khắc phục điều này, nhưng nếu bạn không muốn khởi động lại, hãy kiểm tra các ứng dụng liên quan (cột đầu tiên trong lsofđầu ra) và khởi động lại hoặc đóng những cái nhìn hợp lý.

Nếu bạn từng thấy một cái gì đó như:

zsh   1724   muru   txt   REG   8,17   771448   1591515  /usr/bin/zsh (deleted)

Trường hợp ứng dụng và các tệp bị xóa giống nhau, điều đó có thể có nghĩa là ứng dụng đã được nâng cấp. Bạn có thể bỏ qua những thứ đó như là một nguồn sử dụng đĩa lớn (nhưng bạn vẫn nên khởi động lại chương trình để áp dụng sửa lỗi).

Các tệp trong /dev/shmlà các đối tượng bộ nhớ được chia sẻ và không chiếm nhiều dung lượng trên đĩa (nhiều nhất là số inode, tôi nghĩ vậy). Họ cũng có thể được bỏ qua một cách an toàn. Các tệp có tên vteXXXXXXlà các tệp nhật ký từ trình giả lập thiết bị đầu cuối dựa trên VTE (như Terminal Gnome, Terminator, v.v.). Chúng thể lớn, nếu bạn có một cửa sổ đầu cuối mở với rất nhiều (và ý tôi là rất nhiều ) thứ đang được xuất ra.


1
Trên hệ thống của OP, toàn bộ / dev là một điểm gắn kết udev, vì vậy không có gì ở dưới đó chiếm bất kỳ khoảng trống nào trên hệ thống tệp chính. Hơn nữa, / dev / shm thường được triển khai như một tmpfs, đây cũng chỉ là một điểm gắn kết, vì vậy các tệp riêng lẻ trong đó thậm chí không chiếm dung lượng mục nhập thư mục.
Kevin

3

Để thêm vào câu trả lời tuyệt vời của muru:

  • df hiển thị kích thước trên đĩa,
  • và du hiển thị tổng kích thước của nội dung tập tin.

Có lẽ những gì bạn không thấy với du là sự xuất hiện của nhiều, rất nhiều tệp nhỏ ... (nhìn vào cột cuối cùng df -ivà xem liệu số lượng nút (ví dụ: của các tệp) có tăng quá nhiều thời gian không)

Nếu bạn tình cờ có, giả sử, 1'000'000 (1 triệu) tệp 1 byte nhỏ, dusẽ tính tổng số là 1000'000 byte, hãy giả sử 1Mb (... thuần túy, vui lòng không co rúm)

Nhưng trên đĩa, mỗi tệp được tạo bởi 2 điều:

  • 1 nút (chỉ vào dữ liệu của tệp) và chính nút đó có thể là 16kb (!),
  • Và mỗi dữ liệu của tệp (= nội dung của tệp) được đặt trên các khối đĩa và các khối đó không thể chứa một số dữ liệu của tệp (thường là ...), do đó, 1 byte dữ liệu của bạn sẽ chiếm ít nhất 1 khối

Do đó, một triệu tệp tệp 1 byte sẽ chiếm 1'000'000'000 * size_of_a_blocktổng dung lượng cho dữ liệu, cộng với 1'000'000'000 * size_of_an_inodekích thước của inode ... Điều đó có thể lên tới vài Gb sử dụng đĩa cho 1 triệu tệp "1 byte".

Nếu bạn có các khối 1024 byte và 256 byte kích thước inode khác, các tệp 1000.000 của bạn sẽ được báo cáo là khoảng 1Mb trước du, nhưng sẽ được tính là khoảng 1,25Gb trên đĩa (như được thấy bởi df)! (hoặc thậm chí 2Gb nếu mỗi nút cũng phải nằm trên 1 khối đĩa chuyên dụng ... Tôi không biết đó có phải là trường hợp không)


1
Trừ khi bạn sử dụng một cách rõ ràng một tùy chọn ( -bhoặc --apparent-size) cho biết duđể hiển thị kích thước rõ ràng của tệp, dutrên thực tế sẽ luôn hiển thị kích thước trên đĩa của tệp (tổng số khối được sử dụng kích thước khối lần). Trên thực tế, điều này có thể lớn hơn (trường hợp bình thường) hoặc nhỏ hơn (trong trường hợp tệp thưa) so với kích thước rõ ràng của tệp.
Jonathan Callen

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.