Đường hầm ngừng nhận kết nối, dịch vụ khởi động lại hai lần, và sau đó không có gì xuất hiện trong nhật ký của nó. Sự im lặng đó chính là manh mối, vì nhật ký là thứ đã làm đầy đĩa và tiến trình nền không còn chỗ để ghi lỗi mà bạn đang chờ. Bất kỳ dịch vụ chạy lâu nào cũng có thể tới trạng thái đó, và việc xóa một thư mục tên là logs hiếm khi sửa được. Giải pháp bền vững là biết kho nào đã tăng, ai sở hữu chính sách lưu giữ của nó, và bên ghi có thực sự trả lại dung lượng hay không.

Tìm kho đã tăng và tốc độ tăng của nó

Hãy bắt đầu bằng hai con số dễ quên: khối trống và inode trống. Một hệ thống tệp có thể báo còn nhiều chỗ mà vẫn từ chối ghi vì hết inode, điều này xảy ra khi một dịch vụ tạo một tệp cho mỗi phiên. Hãy hỏi cả hai chỉ số trên cùng một ổ, vì các câu trả lời có thể mâu thuẫn ngay trong cùng buổi chiều. Làm việc này khi máy chủ còn khỏe, để các con số mô tả vận hành bình thường chứ không phải sự cố.

df -h /var
df -i /var

Sau đó quy tăng trưởng cho một chủ sở hữu. Con số sử dụng của bản thân journal chỉ bao gồm journal, và nó sẽ không bao giờ thấy một tiến trình nền đang ghi vào đường dẫn từ tệp cấu hình của nó.

journalctl --disk-usage

Tăng trưởng theo thời gian nói nhiều hơn mọi lần đo đơn lẻ. Một mức gỡ lỗi bị bỏ quên ở trạng thái bật, một vòng thử lại ghi lại mọi lần thử, hoặc một tệp ghi bắt mà không ai dừng: mỗi thứ có thể trông bình thường trong một khoảnh khắc và đáng lo sau một giờ. Hãy đo một lần, chờ qua một giai đoạn bận, đo lần nữa, và chia cho khoảng thời gian. Một tốc độ bạn nêu được biến dung lượng thành quyết định thay vì đám cháy.

Việc xoay vòng làm gì với một tệp đang mở

Tệp nhật ký là một cái tên trỏ tới một inode, và dung lượng chỉ trở lại khi tay nắm mở cuối cùng được đóng. Đổi tên tệp thì bên ghi vẫn tiếp tục làm đầy cùng inode đó; xóa nó thì bên ghi vẫn tiếp tục làm đầy một inode không còn tên nào. Chính trạng thái đó khiến câu «tôi đã xóa tệp mà đĩa vẫn đầy» mô tả các bộ mô tả tệp chứ không phải một hệ thống tệp hỏng. Khởi động lại bên ghi, hoặc chọn chế độ xoay vòng mở lại tệp, mới thực sự trả lại các khối.

lsof +L1 | head

Chính sách thuộc về thành phần ghi tệp. Journal áp đặt giới hạn lưu trữ của riêng nó từ tệp cấu hình, trong khi một dịch vụ dựa trên tệp thường dựa vào logrotate, hoặc với quy tắc tạo và tín hiệu mở lại, hoặc với chế độ cắt tại chỗ khi bên ghi không thể mở lại. Trước tiên hãy xác nhận quyết định mà không thay đổi gì:

logrotate -d /etc/logrotate.conf

Giới hạn nên đặt ở đâu và lớn đến mức nào

Đặt giới hạn ở nơi bên ghi được cấu hình, không phải ở điểm gắn kết. Hạn mức trên toàn bộ ổ bảo vệ máy chủ nhưng không cho biết dịch vụ nào hỏng trước, và một script dọn dẹp toàn cục thường xóa bằng chứng mà sự cố tiếp theo sẽ cần. Một giới hạn journal, một số lần xoay vòng với kích thước tối đa và việc lưu giữ ở mức ứng dụng mỗi thứ giới hạn một nhà sản xuất. Cùng nhau chúng giới hạn tổng; riêng lẻ mỗi thứ là một phỏng đoán.

Hãy định cỡ giới hạn đó từ thời gian lưu giữ bạn có thể bảo vệ, không phải từ dung lượng trống. Nếu một lần rà soát cần một tuần nỗ lực kết nối, journal phải giữ một tuần ở tốc độ cao nhất dự kiến, và tốc độ đó là con số đã đo trước đó.

Ghi nhật ký gỡ lỗi là một chế độ tạm thời có ghi lại thời điểm bắt đầu, không phải một kế hoạch lưu trữ. Giữ câu hỏi về quyền riêng tư trong cùng quyết định, vì nhật ký kết nối mang địa chỉ và định danh. Lưu giữ lâu hơn cũng là một lựa chọn xử lý dữ liệu, và nên do người biết cả hai ràng buộc thực hiện.

Kiểm tra giới hạn sau khi khởi động lại

Một thay đổi lưu giữ kéo dài đến lần khởi động lại tiếp theo không phải là thay đổi. Khởi động lại bên ghi, xác nhận giới hạn mới có hiệu lực, và kiểm tra rằng việc xoay vòng vẫn chạy sau đó. Với journal, một lần khởi động lại và một lần đọc mức sử dụng trả lời cả hai câu hỏi:

systemctl restart systemd-journald
journalctl --disk-usage

Với một dịch vụ dựa trên tệp, hãy chạy tác vụ xoay vòng một lần bằng tay và xác nhận tệp đã được thay và bộ mô tả đã mở lại. Một bên ghi giữ tay nắm cũ sẽ qua được kiểm tra bề mặt và hỏng vào lần tiếp theo khi ổ đầy. Theo dõi dung lượng trống trong lúc thử, vì một tệp nhỏ đi mà dung lượng không trở lại nghĩa là inode cũ vẫn bị giữ.

So sánh lần đo tiếp theo với lần này

Hãy quay lại sau một tuần và so sánh tốc độ tăng với tốc độ đã ghi. Tốc độ khớp nghĩa là giới hạn giữ được và tải ổn định; tốc độ gấp đôi nghĩa là có gì đó đã thay đổi, và câu hỏi hữu ích là gì. Trước tiên hãy đọc nội dung nhật ký để tìm lỗi lặp lại, vì vòng thử lại vừa là triệu chứng vừa là nguyên nhân của khối lượng. Sau đó kiểm tra mọi thứ mới được bật, kể cả các mức gỡ lỗi được bật trong sự cố và không bao giờ tắt.

Giữ bản sao lưu ngoài cùng ổ đó, hoặc chấp nhận rằng một chiếc đĩa đầy sẽ mang bản sao lưu đi cùng. Một bản sao được ghi lên chính máy chủ mà nó bảo vệ không phải là kế hoạch phục hồi, và việc lưu giữ nó cần câu trả lời riêng.

Hãy ghi lại cái gì được giữ, ở đâu, trong bao lâu và ai là người xóa nó. Câu đó chính là kết quả, và là phần duy nhất của công việc này sống qua lần khởi động lại tiếp theo.

Bài viết liên quan