Cập nhật kích thước đĩa miễn phí mà không cần khởi động lại máy chủ


23

Tôi sử dụng RHEL4 với LVM2 trên đó. Đôi khi ngay cả sau khi xóa các tệp lớn hơn GB, kích thước phân vùng không được cập nhật khi sử dụng dflệnh.

-bash-3.00$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/sys-root  3.9G  1.4G  2.3G  39% /
/dev/cciss/c0d0p1     251M   19M  219M   8% /boot
/dev/mapper/sys-home  250G  125G  113G  53% /home
/dev/mapper/sys-tmp   3.9G   41M  3.7G   2% /tmp
/dev/mapper/sys-var   3.9G  3.6G   98M  98% /var

Nhưng khi tôi kiểm tra bằng du thì nó hiển thị kích thước phù hợp

-bash-3.00$ sudo du -sh /var/
 179M   /var/

bạn có thể thấy rằng đầu ra df hiển thị phân vùng / var là 3.6Gb được sử dụng nhưng du cho thấy nó chỉ có 179Mb.

Bây giờ vấn đề là không đồng bộ hóa hoặc partprobe không cập nhật thông tin. Nhưng chắc chắn khởi động lại máy chủ sẽ giải quyết vấn đề. Nhưng vì đây là một máy chủ sản xuất nên tôi không thể khởi động lại nó. Có cách nào để tôi có thể cập nhật thông tin đĩa theo cách thủ công mà không cần khởi động lại máy chủ không?


1
Bạn có thể đã mở các tệp đã bị xóa (tức là các quá trình đang giữ các tệp đã bị xóa). Hãy thử một cái gì đó như lsofđể tìm hiểu. Được sử dụng / avail không được lưu trữ trong bảng phân vùng, partprobe (hoặc bất kỳ loại phân vùng nào được đọc lại) sẽ không giúp ích gì cả.
Mat

Câu trả lời:


28

Khi một tệp bị xóa / xóa / hủy liên kết, nếu nó vẫn được giữ bởi bất kỳ quá trình nào thì chỉ có mục nhập thư mục cho tệp bị xóa, không phải dữ liệu của tệp. Khi tệp được đóng hoàn toàn bởi tất cả các quy trình, dữ liệu sẽ được trả về nhóm không gian trống. Đây là một tính năng vì bạn có thể có các tệp ẩn danh theo cách này.

Để xem nếu bạn có bất kỳ tệp bị xóa mở nào trên hệ thống tệp, hãy chạy một trong các lệnh này, /mount/pointđiểm gắn kết ( /vartrong trường hợp của bạn):

lsof +L1 /mount/point

Bài viết này về các tệp mở, không liên kết sẽ giúp giải thích thêm điều này.


2
Tôi đã xóa nhật ký nhưng dfkhông hiển thị bất kỳ không gian trống nào cho đến khi tôi khởi động lại các quy trình máy chủ. Cảm ơn!
thai

Gọi lsof tốt hơn với 'lsof + L1' hiển thị các tệp đã bị xóa. Đưa ra đề xuất chỉnh sửa
Nuno Pereira

Vậy làm thế nào để đóng chúng?
faressoft
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.