Linux Nâng Cao

Làm gì khi dung lượng Disk Linux luôn ở mức cao ?

Mở đầu:

Trong quá trình vận hành hệ thống linux, đôi khi chúng ta sẽ gặp trường hợp dung lượng hệ thống vượt ngưỡng 90%. Đôi khi chúng ta chỉ cần một vài dòng lệnh để tìm ra thư mục hoặc file có dung lượng lớn, và xóa chúng đi là xong, nhưng đôi khi bạn sẽ cảm thấy bối rối khi mặc dù đã xóa đi file có dung lượng lớn rồi, nhưng dung lượng hệ thống vẫn cao. Bài viết này sẽ giúp bạn khắc phục điều này.

Các vấn đề thường gặp:

  • Tại sao dung lượng đĩa không được giải phóng sau khi xóa một tập tin trong  Linux?
  • Khi xóa một tập tin hoặc tập tin lớn, tập tin bị xóa thành công nhưng kích thước của hệ thống tập tin không có sự thay đổi.
  • Tôi đã xóa một số file nhưng dung lượng đĩa trên hệ thống file vẫn không thay đổi.
  • Hệ điều hành giữ một số tập tin log rất lớn được mở với một số lớn khoảng ~ 30G. Tập tin đã bị xóa trước đó, nhưng nó  chỉ dừng và khởi động lại quá trình JVM/Java phát hành không gian đĩa.
  • Khi bạn thực hiện câu lệnh df để kiểm tra dung lượng đĩa ,  cho thấy việc sử dụng hơn 90%, tuy nhiên, bạn lại không thấy folder hay tệp tin nào chiếm nhiều dung lượng đến vậy.
Để giải quyết các vấn đề liên quan tới dung lượng đĩa trên hệ thống, chúng ta sẽ làm tuần tự các bước sau:

Bước 1: Tìm và xóa đi những file có dung lượng lớn

Đầu tiên, sử dụng câu lệnh sau để tìm folder có kích thước lớn:

du -sh  --exclude="/proc"   /* | grep G

Hoặc tìm file có dung lượng lớn như sau:

find /  -size +10M -exec ls -lah {} \;

Sau khi tìm được folder và file lớn, ta chỉ cần xem xét và xóa đi những thứ không cần thiết với câu lệnh “rm -rf  < tên file | tên folder”  là được.

Bước 2: Xử lý những process đã bị deleted  đang chiếm nhiều dung lượng

Trong một số trường hợp , các application đang sử dụng 1 file trên hệ thống, cho dù ta có xóa file đó đi thì application đó vẫn liên kết đến file, do đó làm dung lượng của hệ thống ngày ngày tăng cao.
Với trường hợp này, chúng ta sẽ có 3 hướng để giải việc vấn đề này:
  • Shutdown Application liên quan để nhã liên kết
  • Kill process đang liên kết giữa application và file
  • Truncate File Size
Trong 3 cách dưới đây, chúng tôi không khuyến khích bạn dùng cách 1 và 2, vì hai cách này sẽ làm gián đoạn hoặc restart ứng dụng của bạn đang chạy. Nhưng chúng tôi cũng đề cập ở đây để mọi người có thể tham khảo để sử dụng linh hoạt cho các trường hợp của bạn. 

Cách 1: Tìm vào xóa thủ công bằng PID (  không khuyến khích)

lsof | grep deleted

$ lsof | grep "deleted"
COMMAND PID TID TASKCMD USER FD TYPE DEVICE SIZE/OFF NODE NAME
ora 25575 8194 oracle oracle 33 REG 65,65 4294983680 31014933 /oradata/DATAPRE/file.dbf (deleted)

kill -9 < ID >

Cách 2: Xóa tự động với câu lệnh ( không khuyến khích)

lsof|grep deleted|awk '{print $2}'|xargs kill -9

Cách 3: Truncate File Size ( Khuyến khích )

Đầu tiên, ta cần tìm PID của process đang chiếm dung  lượng lớn
$ lsof | grep "deleted"

COMMAND       PIDTID TASKCMD     USER     FD  TYPE  DEVICE    SIZE/OFF      NODE NAME
ora                     25575   8194 oracle    oracle   33   REG   65,65  4294983680  31014933 /oradata/DATAPRE/file.dbf (deleted)v
Hai tham số cần lưu ý là PID FD. Nó sẽ được để trunk file theo cú pháp:
$ echo > /proc/<pid>/fd/<fd_number>

ví dụ:

$ echo > /proc/25575/fd/33
Cuối cùng, kiểm tra lại dung lượng hệ thống
Chúc các bạn thành công. 

        Nguồn:                  

congdonglinux.com

             Nhấn Subcribe để nhận thêm nhiều bài viết mới                              Like Facebook

                                       Nhấn Subcribe                                                           Like Facebook 

      
close

Đăng Ký Liền Tay

Nhận Ngay Bài Viết

We don’t spam! Read our privacy policy for more info.

Add Comment

Click here to post a comment