2021-05-12 14:32:11
效能優化:使用Ramlog將紀錄檔檔案轉移到記憶體中
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。
注意:- 此文僅面向高階使用者
在Ubuntu中安裝Ramlog
首先需要用以下命令,從這裡下載.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 22345. stop 99016.
現在,在更新sysklogd的初始化順序,使之能在ramlog停止執行前正確關閉:
sudo update-rc.d -f sysklogd remove
sudo update-rc.d sysklogd start 102345. stop 90016.
然後重新啟動系統:
sudo reboot
系統重新啟動完畢,執行'ramlog getlogsize'來獲取你當前的/var/log的空間大小。在此基礎之上多分配40%的空間,確保ramdisk有足夠的空間(這整個都將作為ramdisk的空間大小)。
編輯引導組態檔,如/etc/grub.conf,、/boot/grub/menu.lst 或/etc/lilo.conf(譯註:具體哪個組態檔視不同引導載入程式而定),給你的當前核心的新增選項 'ramdisk_size=xxx' ,其中xxx是ramdisk的空間大小。
設定Ramlog
基於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 將細節
# 寫到紀錄檔中)
在Ubuntu中解除安裝ramlog
開啟終端執行以下命令:
sudo dpkg -P ramlog
注意:如果ramlog解除安裝之前仍在執行,需要重新啟動系統完成整個解除安裝工作。
本文永久更新連結地址:http://www.linuxidc.com/Linux/2015-03/115477.htm
相關文章