Giải pháp của tôi cho Raspbian 8.0 (Jessie) dựa trên việc đăng nhập vào RAM
Đã có gói Ramlog Debian và hướng dẫn cài đặt cho việc này. Tuy nhiên, điều này không hiệu quả với tôi (Bắt đầu ramlog-tmpfs 2.0.0: Lỗi: / var / log đang được sử dụng ... [fail]).
Sử dụng iotop -bktoqqq
tôi đã tìm ra hầu hết các truy cập viết thường xuyên. Nó chỉ ra rằng / var / cache / samba / thường được ghi vào. Vì vậy, điều này cũng phải đi đến RAM ngoài / var / tmp / nơi các tệp nhật ký mới sẽ có.
1. Tạo ramdisk
Vì vậy, trước tiên hai mục này phải được thêm vào
/etc/fstab
:
tmpfs /var/tmp tmpfs size=10M,nodev,nosuid 0 0
tmpfs /var/cache/samba tmpfs size=5M,nodev,nosuid 0 0
2. Kịch bản log2disk
Chúng ta cần lưu tập lệnh này trong /usr/local/bin/log2disk
đó sẽ nối và xóa nội dung khỏi tất cả các tệp nhật ký vào /var/tmp/log/
các tệp trong /var/log/
.
#!/bin/sh
# Author: Frank Breitling <frank.breitling@gmx.de>
DESC="Moving contents from /var/tmp/log/ to /var/log/"
if [ $(id -u) -ne 0 ]
then echo "Please run as root"
exit
fi
echo $DESC
exec >>/var/log/log2disk.log 2>&1
date
cd /var/tmp/
for i in log/*; do
basename $i
cat $i >>/var/$i
>$i
done
và làm cho nó thực thi được sudo chmod +x /usr/local/bin/log2disk
.
3. Thêm vào crontab
Chúng tôi muốn chạy tập lệnh này cứ sau 3 giờ và thêm dòng này vào hệ thống /etc/crontab
10 */3 * * * root /usr/local/bin/log2disk
(Đừng quên một dòng mới cuối cùng cần thiết bởi crontab.)
4. Cài đặt log2disk.service
Chúng ta cần tạo một dịch vụ systemd /lib/systemd/system/log2disk.service
để thực thi tập lệnh này trước khi tắt và khởi động lại, để nội dung tệp nhật ký được giữ nguyên:
[Unit]
Description=Write log files to disk
RequiresMountsFor=/
Before=rsyslog.service
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/usr/local/bin/log2disk
[Install]
WantedBy=multi-user.target
và cài đặt nó với sudo systemctl enable log2disk
.
5. Chọn tệp nhật ký cho RAM
Bây giờ chúng ta có thể biết /etc/rsyslog.conf
logfiles nào cần giữ trong RAM. Các tệp này là auth.log, syslog, daemon.log, user.log and messages
và chúng tôi thay thế cho mỗi mục nhập của chúng theo log/
đường dẫn bằng tmp/log/
ví dụ như sau:
auth,authpriv.* /var/tmp/log/auth.log
Làm xong!
Sau khi khởi động lại, hệ thống sẽ đăng nhập các mục nhật ký thường xuyên nhất /var/tmp/log
và đồng bộ hóa lại sau mỗi 3 giờ và trước khi tắt.
Chúng ta có thể sử dụng iotop
một lần nữa để tìm một hoạt động viết giảm đáng kể. Tuy nhiên, chúng ta không nên lo lắng về đèn LED ACT màu xanh lục nhấp nháy . Rõ ràng đây không phải là một chỉ số truy cập viết tốt.