Mặc dù các hệ thống Linux nổi tiếng là nhỏ gọn nhưng bạn có thể nhận thấy rằng dung lượng ổ đĩa của mình đột nhiên sắp hết. Tại sao điều này lại xảy ra? Manh mối và có thể là thủ phạm lớn nhất sẽ được tìm thấy trong nhật ký hệ thống Linux của bạn.
Tại sao nhật ký chiếm quá nhiều dung lượng ổ đĩa?
Nhật ký là một phần quan trọng trong việc quản lý hệ thống Linux của bạn. Bạn có thể xem điều gì đang xảy ra với máy của mình và bạn cũng có thể khắc phục sự cố phát sinh. Các daemon ghi nhật ký Linux tương tự như Event Viewer trên Windows. Các nhật ký thường không chiếm nhiều không gian. Điều này là do hầu hết các bản phân phối sẽ tự động quản lý lượng dung lượng chúng chiếm trên ổ đĩa của bạn.
Nhật ký Linux trước đây là các file plain text, nhưng với nhiều bản phân phối chính chuyển sang systemd, chúng là những file nhị phân được quản lý bởi journald, một service systemd. Ngoài ra, bản phân phối của bạn sẽ sử dụng rsyslog hoặc syslog-ng.
Vì nhật ký cũ không còn liên quan và các kho lưu trữ lớn có thể chiếm dung lượng nên hệ thống của bạn thường sẽ "xoay vòng" chúng - lưu trữ, nén và cuối cùng là xóa chúng - để tiết kiệm dung lượng ổ đĩa cho nội dung bạn thực sự muốn.
Mặc dù bạn có thể không nghĩ rằng nhật ký sẽ chiếm nhiều dung lượng nhưng một tiến trình gặp trục trặc có thể lấp đầy nhật ký của bạn nhanh hơn tốc độ hệ thống có thể xoay vòng chúng.
Nếu bạn kiểm tra dung lượng ổ đĩa và thấy mình đột nhiên sắp hết dung lượng dù gần đây mình chưa tải xuống bất kỳ file lớn nào, nguyên nhân có thể là do sự cố với nhật ký hệ thống Linux của bạn. Bạn sẽ phải tìm hiểu xem điều gì đang lấp đầy nhật ký hệ thống của mình và khắc phục nó.
Bạn có thể kiểm tra dung lượng ổ đĩa mình đang sử dụng bằng lệnh du -h:
du -h /var/log
Bạn sẽ thấy danh sách từng thư mục con, cùng với tổng dung lượng mà nó chiếm:
Tìm nhật ký của bạn
Nếu sử dụng bản phân phối Linux hiện đại có systemd, bạn sẽ sử dụng chương trình journalctl để xem nhật ký của mình; Journald thường lưu trữ nhật ký trong thư mục /var/log/journal hoặc /run/log/journal, tùy thuộc vào bản phân phối.
Để xem nhật ký, gõ lệnh journald tại shell prompt. Có các tùy chọn dòng lệnh hữu ích khác. Để xem thông báo khởi động, hãy sử dụng tùy chọn -b:
journalctl -b
Bạn có thể xem thông báo nhật ký của hệ thống trong thời gian thực bằng tùy chọn -f.
Nếu bản phân phối của bạn không sử dụng systemd, bạn sẽ tìm thấy nhật ký trong thư mục /var/log. Ngay cả với systemd, một số chương trình vẫn lưu trữ nhật ký của chúng trong thư mục này. Đây là những file văn bản thông thường mà bạn có thể kiểm tra bằng tiện ích như less.
Ví dụ, để đọc nhật ký hệ thống:
less /var/log/syslog
Bạn sẽ thấy toàn bộ nội dung của file nhật ký có thể chứa hàng nghìn dòng:
Bạn cũng có thể theo dõi nó trong thời gian thực bằng tùy chọn -f của lệnh tail:
tail -f /var/log/syslog
Cách Linux xoay vòng file nhật ký
Trong thư mục /var/log, bạn có thể thấy các file có tên kết thúc bằng “log.N.gz”, trong đó N là một số. Đây là kết quả của việc hệ thống luân chuyển các bản ghi cũ hơn. Hầu hết các bản phân phối đều có một tiện ích sẽ tự động thực hiện việc này, được gọi là “logrotate”. logrotate thường được thiết lập để chạy như một cron job hoặc systemd timer.
Theo mặc định, hầu hết các bản phân phối sẽ chạy logrotate hàng ngày. logrotate nén các nhật ký cũ hơn bằng gzip, bằng chứng là phần mở rộng file “.gz”. Nó sử dụng một ngưỡng, như độ tuổi hoặc kích thước file, để thực hiện việc này và một ngưỡng khác để xóa các file nhật ký cũ.
Các tùy chọn mặc định cho logrotate là đủ cho hầu hết người dùng desktop. Bạn có thể điều chỉnh hành vi của logrorate bằng cách chỉnh sửa file /etc/logrotate.conf dưới dạng superuser, cũng như chỉnh sửa file cron hoặc file systemd timer trong hệ thống của bạn, nhưng những thao tác này thực sự chỉ liên quan đến quản trị viên máy chủ.
Tốt hơn hết bạn nên sửa những gì đang lấp đầy nhật ký của mình thay vì chỉnh sửa các file cấu hình để tiết kiệm dung lượng ổ đĩa. Nếu nhất thiết phải thay đổi cấu hình, bạn có thể đọc trang hướng dẫn logrotate.
Nhật ký nào an toàn để xóa?
Nếu vẫn thất bại và bạn muốn giải phóng dung lượng ổ đĩa, bạn có thể xóa thủ công các file nhật ký đã lưu trữ kết thúc bằng “.gz” trước khi logrotate thực hiện. Bạn có thể sử dụng rm, nhưng bạn sẽ cần chạy nó với tư cách superuser vì các file này thuộc về hệ thống:
sudo rm /var/syslog/syslog.*gz
Lệnh này sẽ xóa tất cả các file có chứa “syslog.” và kết thúc bằng “gz.”
Cảnh báo: Hãy luôn hết sức cẩn thận khi chạy các lệnh thông qua sudo, đặc biệt là các lệnh mang tính phá hủy như rm!
Thông thường, bạn không nên xóa các file trong thư mục hệ thống mà không hiểu hết ý nghĩa của nó, nhưng nhật ký lưu trữ sẽ không gây ra bất kỳ vấn đề nào nếu chúng bị thiếu. Tuy nhiên, nếu gặp sự cố, bạn có thể cần tham khảo các nhật ký cũ hơn.