性能优化：使用ramlog将日志文件转移到内存中
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中运行的系统的优良选择，可以节省日志的写入时间。


![](/data/attachment/album/201503/24/162817udy63cdzf2jyld7a.png)


Ramlog的运行机制以及步骤如下：


1. Ramlog 由第一个守护进程（这取决于你所安装过的其它守护进程）启动。
2. 然后创建目录/var/log.hdd并将其硬链至/var/log。
3. 如果使用的是tmpfs（默认）或者ramfs 文件系统，将其挂载到/var/log上。
4. 而如果使用的是内核ramdisk，ramdisk会在/dev/ram9中创建，并将其挂载至/var/log。默认情况下ramlog会占用所有ramdisk的内存，其大小由内核参数"ramdisk\_size"指定。
5. 接着其它的守护进程被启动，并在ramdisk中更新日志。Logrotate（译注：Linux日志轮替工具）和 ramdisk 配合的也很好。
6. 重启（默认一天一次）ramlog时，目录/var/log.hdd将借助rsync与/var/log保持同步。日志自动保存的频率可以通过cron（译注：Linux例行性工作调度）来控制。默认情况下，ramlog 的调度任务放置在目录/etc/cron.daily下。
7. 系统关机时，ramlog在最后一个守护进程关闭之前关闭。
8. 在ramlog关闭期间，/var/log.hdd中的文件将被同步至/var/log，接着/var/log和/var/log.hdd都被卸载，然后删除空目录/var/log.hdd。


**注意:- 此文仅面向高级用户**


### 在Ubuntu中安装Ramlog


首先需要用以下命令，从[这里](http://www.tremende.com/ramlog/download/ramlog_2.0.0_all.deb)下载.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的空间大小。


### 配置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卸载之前仍在运行，需要重启系统完成整个卸载工作。




---


via: <http://www.ubuntugeek.com/improve-system-performance-by-moving-your-log-files-to-ram-using-ramlog.html>


作者：[ruchi](http://www.ubuntugeek.com/author/ubuntufix) 译者：[soooogreen](https://github.com/soooogreen) 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](http://linux.cn/) 荣誉推出


OK
# Improve system performance by moving your log files to RAM Using Ramlog

**Sponsored Link**

Note: Logs not saved to harddrive are lost in case of power outage or kernel panic.

Install ramlog if you have enough of free memory and you want to keep your logs on ramdisk. It is good for notebook users, for systems with UPS or for systems running from flash -- to save some write cycles.

How it works and what it does:

1.Ramlog starts among the first daemons (it depends on other daemons you have installed).

2.Directory /var/log.hdd is created and hardlinked to /var/log.

3.In case tmpfs (default) or ramfs is used, it is mounted over /var/log

If kernel ramdisk is used, ramdisk created in /dev/ram9 and it is mounted to /var/log, by default ramlog takes all ramdisk memory specified by kernel argument "ramdisk_size".

5.All other daemons are started and all logs are updated in ramdisk. Logrotate works on ramdisk as well.

6.In case ramlog is restarted (by default it is one time per day), directory /var/log.hdd is synchronized with /var/log using rsync. Frequency of the automatic log saves can be controller via cron, by default, the ramlog file is placed into /etc/cron.daily

7.On shutdown ramlog shuts among the last daemons.

8. During ramlog stop phase files from /var/log.hdd are synchronized with /var/log

Then /var/log is unmounted, /var/log.hdd is unmounted as well and empty directory /var/log.hdd is deleted.

**Note:- This article is for advanced users only**

**Install Ramlog in Ubuntu**

First you need to download the .deb package from [here](http://www.tremende.com/ramlog/download/ramlog_2.0.0_all.deb) using the following command

wget http://www.tremende.com/ramlog/download/ramlog_2.0.0_all.deb


Now you should be having ramlog_2.0.0_all.deb package install this package using the following command

sudo dpkg -i ramlog_2.0.0_all.deb


This will complete the installation now you need to run the following commands

sudo update-rc.d ramlog start 2 2 3 4 5 . stop 99 0 1 6 .


#Now update sysklogd in init levels, so it is stopped properly before ramlog is stopped:

sudo update-rc.d -f sysklogd remove

sudo update-rc.d sysklogd start 10 2 3 4 5 . stop 90 0 1 6 .


Now you need to restart your system

sudo reboot


After rebooting you need to run ‘ramlog getlogsize' to determine the size of your actual /var/log.Add about 40% to that number to ensure your ramdisk has sufficient size -- this will be the ramdisk size

Edit your boot manager config file such as /etc/grub.conf, /boot/grub/menu.lst or /etc/lilo.conf and add update the actual kernel by adding kernel paramter ‘ramdisk_size=xxx' where xxx is calculated ramdisk size

**Configuring Ramlog**

Ramlog configuration file is located in /etc/default/ramlog on deb based systems and you can set there below variables:

Variable (with default value):

Description:

RAMDISKTYPE=0

# Values:

# 0 -- tmpfs (can be swapped) -- default

# 1 -- ramfs (no max size in older kernels,

# cannot be swapped, not SELinux friendly)

# 2 -- old kernel ramdisk

TMPFS_RAMFS_SIZE=

#Maximum size of memory to be used by tmpfs or ramfs.

# The value can be percentage of total RAM or size in megabytes -- for example:

# TMPFS_RAMFS_SIZE=40%

# TMPFS_RAMFS_SIZE=100m

# Empty value means default tmpfs/ramfs size which is 50% of total RAM.

# For more options please check ‘man mount', section ‘Mount options for tmpfs'

# (btw -- ramfs supports size limit in newer kernels

# as well despite man says there are no mount options)

# It has only effect if RAMDISKTYPE=0 or 1

KERNEL_RAMDISK_SIZE=MAX

#Kernel ramdisk size in kilobytes or MAX to use entire ramdisk.

#It has only effect if RAMDISKTYPE=2

LOGGING=1

# 0=off, 1=on Logs can be found in /var/log/ramdisk

LOGNAME=ramlog

# name of the ramlog log file (makes sense if LOGGING=1)

VERBOSE=1

# 0=off, 1=on (if 1, teststartstop puts detials

# to the logs and it is called after start or stop fails)

**How to uninstall Ubuntu**

Open the terminal and run the following command

sudo dpkg -P ramlog


Note: If ramlog was running before you uninstalled it, you should reboot your box to finish uninstallation procedure.