Cách khắc phục lỗi nhật ký systemd đầy
11 phút đọc - 20 tháng 5, 2026

Chẩn đoán và khắc phục sự cố nhật ký systemd đầy bằng các lệnh vacuum, giới hạn kích thước journald.conf, bộ hẹn giờ dọn dẹp tự động và chuyển tiếp nhật ký.
Cách khắc phục tình trạng nhật ký systemd đầy
Nhật ký systemd lưu trữ mọi thông báo nhật ký mà máy chủ của bạn tạo ra, và trên một VPS có phân vùng gốc nhỏ, nó có thể âm thầm chiếm dụng hết dung lượng đĩa trống của bạn. Khi điều đó xảy ra, các dịch vụ không thể khởi động, việc ghi dữ liệu bị đình trệ và bạn sẽ mất đi chính những thông tin chẩn đoán cần thiết để tìm ra nguyên nhân sự cố. Hướng dẫn này sẽ giải thích cách chẩn đoán vấn đề, giải phóng dung lượng ngay lập tức và cấu hình journald để sự cố này không lặp lại.
Chẩn đoán vấn đề
Bắt đầu bằng cách kiểm tra dung lượng mà nhật ký đang sử dụng:
journalctl --disk-usageBáo cáo này cho biết tổng dung lượng của tất cả các tệp nhật ký đang hoạt động và đã lưu trữ. So sánh con số đó với dung lượng đĩa trống của bạn bằng df -h. Trên phân vùng gốc 20 GB, ngay cả 2 GB nhật ký cũng chiếm hơn 10% tổng dung lượng đĩa, đủ để gây ra sự cố.
Tiếp theo, tìm hiểu xem dịch vụ nào đang tạo ra nhiều thông báo nhất. Dòng lệnh này xếp hạng 10 nguồn nhật ký hàng đầu trong 24 giờ qua:
journalctl --since "24 hours ago" | awk '{print $5}' | cut -d'[' -f1 | sort | uniq -c | sort -rn | head -10Lọc các lỗi cụ thể bằng journalctl -p err -b để xem liệu có dịch vụ nào bị kẹt trong vòng lặp sập hệ thống và làm ngập nhật ký hay không. Bạn cũng có thể kiểm tra xem journald có đang giới hạn tốc độ của bất kỳ dịch vụ nào không:
journalctl -u systemd-journald | grep -i "suppressed"Các thông báo bị ẩn có nghĩa là một dịch vụ đã vượt quá ngưỡng mặc định là 10.000 mục trong vòng 30 giây. Đó chính là thủ phạm.
Một số vấn đề đặc biệt phổ biến trên các máy chủ VPS. Nếu Storage=auto được thiết lập và /var/log/journal/ tồn tại, journald sẽ sử dụng bộ nhớ lưu trữ vĩnh viễn với giới hạn mặc định khoảng 4 GB. Trên một phân vùng gốc nhỏ, dung lượng này sẽ nhanh chóng bị lấp đầy. Việc tắt máy không đúng cách cũng có thể để lại các tệp nhật ký bị hỏng với hậu tố .journal~ . Các tệp này không được xoay vòng bình thường và tiếp tục chiếm dụng dung lượng.
Xóa nhật ký một cách an toàn
Trước khi xóa bất kỳ thứ gì, hãy xoay vòng tệp nhật ký đang hoạt động để lưu giữ các nhật ký hiện tại:
journalctl --rotateSau đó, xóa các nhật ký đã lưu trữ. Bạn có thể chọn theo thời gian, kích thước hoặc số lượng tệp:
sudo journalctl --vacuum-time=1d
sudo journalctl --vacuum-size=100M
sudo journalctl --vacuum-files=5Lệnh đầu tiên xóa các nhật ký cũ hơn 24 giờ. Lệnh thứ hai thu nhỏ tổng kích thước nhật ký xuống còn 100 MB. Lệnh thứ ba chỉ giữ lại năm tệp lưu trữ gần đây nhất. Hãy chọn lệnh phù hợp với tình huống của bạn.
Nếu đĩa đã đầy hoàn toàn và các lệnh journalctl không phản hồi, bạn có thể cần xóa các tệp nhật ký thủ công:
sudo rm -rf /var/log/journal/*
sudo systemd-tmpfiles --create --prefix /var/log/journalĐây là phương án cuối cùng. Nó sẽ xóa tất cả các nhật ký đã lưu trữ và tạo lại thư mục với các quyền truy cập chính xác. Sau khi dọn dẹp xong, hãy khởi động lại daemon và xác minh:
sudo systemctl restart systemd-journald
journalctl --disk-usageCấu hình giới hạn kích thước Journald
Các cài đặt mặc định của journald khá rộng rãi. Trên VPS, chúng quá rộng rãi. Chỉnh sửa cấu hình để đặt giới hạn cứng cho bộ nhớ lưu trữ nhật ký. Tạo một tệp ghi đè thay vì chỉnh sửa trực tiếp cấu hình chính, để các thay đổi của bạn vẫn được giữ nguyên sau khi cập nhật gói:
sudo mkdir -p /etc/systemd/journald.conf.d/
sudo nano /etc/systemd/journald.conf.d/size-limits.confCác chỉ thị chính:
| Tham số | VPS (đĩa 20-40 GB) | Máy chủ chuyên dụng | Chức năng |
|---|---|---|---|
| SystemMaxUse | 500M đến 1G | 2G đến 5G | Giới hạn cứng về tổng dung lượng nhật ký |
| Dung lượng trống hệ thống | 1G | 10% dung lượng đĩa | Dung lượng trống dành riêng cho hệ điều hành |
| Thời gian lưu trữ tối đa | 7 ngày đến 14 ngày | 30 ngày đến 90 ngày | Tự động xóa các bản ghi cũ hơn thời gian này |
| Kích thước tệp tối đa của hệ thống | 20M đến 50M | 100M | Kích thước tối đa cho mỗi tệp nhật ký |
Cài đặt cả hai SystemMaxUse và SystemKeepFree sẽ mang lại cho bạn một phương pháp an toàn kép: nhật ký được giới hạn ở một kích thước cố định, và hệ thống luôn có không gian trống bất kể có gì khác trên đĩa.
Lưu trữ bền vững so với lưu trữ tạm thời
Lệnh Storage= điều khiển vị trí lưu trữ nhật ký. Đặt Storage=persistent để ghi nhật ký vào /var/log/journal/ trên đĩa. Đây là lựa chọn phù hợp cho các máy chủ sản xuất, vì nhật ký sẽ tồn tại sau khi khởi động lại và bạn có thể điều tra các sự cố sau đó. Nếu thư mục không tồn tại, hãy tạo nó:
sudo mkdir -p /var/log/journalTùy chọn thay thế, Storage=volatile, lưu trữ nhật ký trong RAM tại /run/log/journal/. Nhật ký sẽ biến mất khi khởi động lại. Điều này phù hợp với các container tạm thời hoặc các máy chủ chuyển tiếp tất cả nhật ký đến một hệ thống bên ngoài.
Tắt tính năng nén trên các máy chủ có lưu lượng truy cập cao
Journald nén các đối tượng dữ liệu lớn hơn 512 byte theo mặc định. Trên các máy chủ xử lý lưu lượng nhật ký lớn, điều này làm tăng tải CPU. Đặt Compress=no nếu bạn đang chuyển tiếp nhật ký ra bên ngoài và không cần tối ưu hóa dung lượng lưu trữ cục bộ. Cũng nên thiết lập ForwardToConsole=no trong môi trường sản xuất. Việc chuyển tiếp console là đồng bộ, và một console nối tiếp ảo bị treo có thể chặn hoàn toàn daemon journald.
Sau bất kỳ thay đổi cấu hình nào, hãy khởi động lại dịch vụ:
sudo systemctl restart systemd-journaldTự động hóa việc duy trì nhật ký
Việc dọn dẹp thủ công không thể mở rộng quy mô. Tạo bộ hẹn giờ systemd để dọn dẹp nhật ký theo lịch trình. Thiết lập một đơn vị dịch vụ tại /etc/systemd/system/journal-vacuum.service:
[Unit]
Description=Vacuum old journal logs
[Service]
Type=oneshot
ExecStart=/usr/bin/journalctl --vacuum-time=7d --vacuum-size=500MSau đó, tạo một bộ hẹn giờ phù hợp tại /etc/systemd/system/journal-vacuum.timer:
[Unit]
Description=Weekly journal vacuum
[Timer]
OnCalendar=Sun 02:00
Persistent=true
[Install]
WantedBy=timers.targetKích hoạt nó bằng sudo systemctl enable --now journal-vacuum.timer. Bộ hẹn giờ chạy vào lúc 2 giờ sáng mỗi Chủ nhật và áp dụng cả lưu trữ dựa trên thời gian và kích thước trong một lần.
Một điều mà bộ hẹn giờ sẽ không phát hiện được: các tệp nhật ký bị hỏng. Sau khi tắt máy không đúng cách, journald sẽ cách ly các tệp bị hỏng bằng cách thêm ~ vào tên tệp. Các .journal~ vẫn được tính vào dung lượng đĩa nhưng sẽ không được dọn dẹp tự động. Hãy kiểm tra và xóa các tệp cũ định kỳ:
find /var/log/journal/ -name "*.journal~" -mtime +30 -deleteChuyển tiếp nhật ký ra bên ngoài
Đối với các máy chủ mà bạn cần lưu trữ lâu dài mà không làm tăng dung lượng lưu trữ cục bộ, hãy chuyển tiếp nhật ký đến một hệ thống tập trung. Cách đơn giản nhất là bật tính năng chuyển tiếp syslog trong journald.conf:
ForwardToSyslog=yesĐối với nhật ký có cấu trúc kèm theo siêu dữ liệu đầy đủ (PID, UID, tên đơn vị), hãy sử dụng systemd-journal-remote để gửi các mục định dạng JSON đến nền tảng quản lý nhật ký. Lưu trữ nhật ký bên ngoài cũng bảo vệ bản ghi kiểm toán của bạn nếu đĩa cục bộ bị hỏng hoặc máy chủ bị xâm phạm.
Kết luận
Vấn đề về nhật ký systemd đầy là dễ khắc phục và dễ phòng ngừa. Các bước chính:
- Kiểm tra mức sử dụng bằng
journalctl --disk-usagevà xác định các dịch vụ gây nhiễu. - Giải phóng dung lượng ngay lập tức bằng
journalctl --rotatesau đó--vacuum-sizehoặc--vacuum-time. - Đặt giới hạn kích thước cụ thể trong tệp ghi đè journald.conf.
- Tự động hóa việc dọn dẹp bằng bộ hẹn giờ systemd.
- Chuyển tiếp nhật ký ra bên ngoài để lưu trữ lâu dài.
Các gói VPS và máy chủ chuyên dụng của FDC cung cấp I/O đĩa và dung lượng lưu trữ cần thiết cho khối lượng công việc nhật ký sản xuất.

Các quy trình zombie trong Linux: Tìm kiếm, loại bỏ và ngăn chặn
Tìm hiểu cách xác định, loại bỏ và ngăn chặn các tiến trình zombie trong Linux. Các lệnh, cách sửa lỗi mã và mẹo giám sát dành cho quản trị viên máy chủ.
15 phút đọc - 19 tháng 5, 2026
Danh sách kiểm tra tăng cường bảo mật máy chủ Linux
15 phút đọc - 8 tháng 5, 2026

Bạn có thắc mắc hoặc cần giải pháp tùy chỉnh?
Các tùy chọn linh hoạt
Phạm vi toàn cầu
Triển khai ngay lập tức
Các tùy chọn linh hoạt
Phạm vi toàn cầu
Triển khai ngay lập tức