Ramlog 以系統守護進程的形式運行。在系統啟動時它創建虛擬磁盤(ramdisk),將 /var/log 下的文件復制到虛擬磁盤中,同時把虛擬磁盤掛載為/var/log。然後所有的日志就會更新到虛擬磁盤上。而當 ramlog 重啟或停止時,需要記錄到硬盤上的日志就會保留在目錄/var/log.hdd中。而關機的時候,(ramdisk上的)日志文件會重新保存到硬盤上,以 確保日志一致性。Ramlog 2.x默認使用tmpfs文件系統,同時也可以支持ramfs和內核ramdisk。使用rsync(譯注:Linux數據鏡像備份工具)這個工具來同步 日志。
注意:如果突然斷電或者內核崩潰(kernel panic)時,沒有保存進硬盤的日志將會丟失。
如果你擁有夠多的可用內存,而又想把日志放進虛擬磁盤,就安裝ramlog吧。它是筆記本用戶、帶有UPS的系統或是直接在flash中運行的系統的優良選擇,可以節省日志的寫入時間。
Ramlog的運行機制以及步驟如下:
Ramlog 由第一個守護進程(這取決於你所安裝過的其它守護進程)啟動。
然後創建目錄/var/log.hdd並將其硬鏈至/var/log。
如果使用的是tmpfs(默認)或者ramfs 文件系統,將其掛載到/var/log上。
而如果使用的是內核ramdisk,ramdisk會在/dev/ram9中創建,並將其掛載至/var/log。默認情況下ramlog會占用所有ramdisk的內存,其大小由內核參數"ramdisk_size"指定。
接著其它的守護進程被啟動,並在ramdisk中更新日志。Logrotate(譯注:Linux日志輪替工具)和 ramdisk 配合的也很好。
重啟(默認一天一次)ramlog時,目錄/var/log.hdd將借助rsync與/var/log保持同步。日志自動保存的頻率可以通過 cron(譯注:Linux例行性工作調度)來控制。默認情況下,ramlog 的調度任務放置在目錄/etc/cron.daily下。
系統關機時,ramlog在最後一個守護進程關閉之前關閉。
在ramlog關閉期間,/var/log.hdd中的文件將被同步至/var/log,接著/var/log和/var/log.hdd都被卸載,然後刪除空目錄/var/log.hdd。
注意:- 此文僅面向高級用戶
首先需要用以下命令,從這裡下載.deb安裝包:
wget http://www.tremende.com/ramlog/download/ramlog_2.0.0_all.deb
下載ramlog_2.0.0_all.deb安裝包完畢,使用以下命令進行安裝:
sudo dpkg -i ramlog_2.0.0_all.deb
這一步會完成整個安裝,現在你需要運行以下命令:
sudo update-rc.d ramlog start 2 2 3 4 5 . stop 99 0 1 6 .
現在,在更新sysklogd的初始化順序,使之能在ramlog停止運行前正確關閉:
sudo update-rc.d -f sysklogd remove sudo update-rc.d sysklogd start 10 2 3 4 5 . stop 90 0 1 6 .
然後重啟系統:
sudo reboot系統重啟完畢,運行'ramlog getlogsize'來獲取你當前的/var/log的空間大小。在此基礎之上多分配40%的空間,確保ramdisk有足夠的空間(這整個都將作為ramdisk的空間大小)。
編輯引導配置文件,如/etc/grub.conf,、/boot/grub/menu.lst 或/etc/lilo.conf(譯注:具體哪個配置文件視不同引導加載程序而定),給你的當前內核的新增選項 'ramdisk_size=xxx' ,其中xxx是ramdisk的空間大小。
基於deb的系統中,Ramlog的配置文件位於/etc/default/ramlog,你可以在該配置文件中設置以下變量:
RAMDISKTYPE=0 # 取值: # 0 -- tmpfs (可被交換到交換分區) -- 默認 # 1 -- ramfs (舊內核不能設置最大空間大小, # 不能被交換到交換分區,和 SELinux 不兼容) # 2 -- 老式的內核 ramdisk TMPFS_RAMFS_SIZE= # 可以用於 tmpfs 或 ramfs 的最大內存大小 # 這個值可以是百分比或數值(單位是 Mb),例如: # TMPFS_RAMFS_SIZE=40% # TMPFS_RAMFS_SIZE=100m # 該值為空表示 tmpfs/ramfs 的大小是全部內存的 50% # 更多選項可以參考 ‘man mount' 中的‘Mount options for tmpfs' 一節 # (補充,在較新的內核中,ramfs 支持大小限制, # 雖然 man 中說沒有這個掛載選項) # 該選項僅用於 RAMDISKTYPE=0 或 1 時 KERNEL_RAMDISK_SIZE=MAX #以 kb 為單位指定的內核 ramdisk 大小,或者使用 MAX 來使用整個 ramdisk。 #該選項僅用於 RAMDISKTYPE=2 時 LOGGING=1 # 0=關閉, 1=打開 。記錄自身的日志到 /var/log/ramdisk LOGNAME=ramlog # 自身的日志文件名 (用於 LOGGING=1時) VERBOSE=1 # 0=關閉, 1=打開 (設置為 1時,啟動或停止失敗時會調用 teststartstop 將細節 # 寫到日志中)
打開終端運行以下命令:
sudo dpkg -P ramlog
注意:如果ramlog卸載之前仍在運行,需要重啟系統完成整個卸載工作。
譯文:http://linux.cn/article-5118-1.html