---
author: ruchi
category: 系统运维
comments_data:
- date: '2015-03-26 07:33:01'
  message: '@有道云笔记收藏'
  postip: 188.165.15.81
  username: 微博评论
- date: '2015-03-26 07:33:01'
  message: 早安[太阳][微风]
  postip: 188.165.15.81
  username: 微博评论
- date: '2015-03-26 08:03:02'
  message: '@我的印象笔记'
  postip: 218.30.103.250
  username: 微博评论
- date: '2015-03-26 08:03:02'
  message: 突然断电就悲剧了。还是觉得风险太大的一个解决方案，另外有点奇怪，这个解决了啥问题？
  postip: 218.30.103.250
  username: 微博评论
- date: '2015-03-26 08:33:01'
  message: Repost
  postip: 61.50.141.66
  username: 微博评论
- date: '2015-03-26 09:03:02'
  message: 回复@油沥茄子:如果你拥有够多的可用内存，而又想把日志放进虚拟磁盘，就安装ramlog吧。它是笔记本用户、带有UPS的系统或是直接在flash中运行的系统的优良选择，可以节省日志的写入时间。
    //@油沥茄子:突然断电就悲剧了。还是觉得风险太大的一个解决方案，另外有点奇怪，这个解决了啥问题？
  postip: 188.165.15.81
  username: 微博评论
- date: '2015-03-26 09:03:02'
  message: 回复@油沥茄子:如果你拥有够多的可用内存，而又想把日志放进虚拟磁盘，就安装ramlog吧。它是笔记本用户、带有UPS的系统或是直接在flash中运行的系统的优良选择，可以节省日志的写入时间。
  postip: 188.165.15.81
  username: 微博评论
- date: '2015-03-26 09:03:02'
  message: //@Linux中国:回复@油沥茄子:如果你拥有够多的可用内存，而又想把日志放进虚拟磁盘，就安装ramlog吧。它是笔记本用户、带有UPS的系统或是直接在flash中运行的系统的优良选择，可以节省日志的写入时间
    //@油沥茄子:突然断电就悲剧了。还是觉得风险太大的一个解决方案，另外有点奇怪，这个解决了啥问题
  postip: 188.165.15.81
  username: 微博评论
- date: '2015-03-26 09:03:02'
  message: '[衰] 万一 出现极端情况，kernel crash了，掉电了那。。。。'
  postip: 188.165.15.81
  username: 微博评论
- date: '2015-03-26 09:33:02'
  message: 回复@eve_ouyang:请看全文~
  postip: 42.120.160.52
  username: 微博评论
- date: '2015-03-26 09:41:20'
  message: 内存不是很多&nbsp; &nbsp;mark
  postip: 122.192.48.126
  username: FoamValue
- date: '2015-03-26 10:25:05'
  message: 刚做了U盘上的linux，倒是有点想装个这玩意。不过LINUX的日志是做什么的，小白求解。。。。
  postip: 218.106.145.11
  username: 来自 - 福建福州 的 Chrome/Windows 用户
- date: '2015-03-26 10:39:37'
  message: 我觉得不是太安全
  postip: 183.63.158.150
  username: lyhabc
- date: '2015-03-26 11:03:01'
  message: 真有用么？如果日志量不大，已经有内核缓冲了，如果太大，ram也放不下，都会通过网络发出去了。
  postip: 114.246.59.171
  username: 微博评论
- date: '2015-03-26 16:11:20'
  message: 只用于特定环境，其实不建议用于繁忙的服务器环境
  postip: 106.120.101.58
  username: linux
- date: '2015-03-26 16:11:55'
  message: 就是记录各种事情。 blabla ~
  postip: 106.120.101.58
  username: linux
- date: '2015-03-26 16:33:01'
  message: '@我的印象笔记'
  postip: 220.181.108.93
  username: 微博评论
- date: '2015-03-29 21:20:20'
  message: 记录日志会成为性能瓶颈吗？冒着日志丢失的风险（生产环境中的日志都是及其宝贵的），就为了解决一个不是问题的问题？
  postip: 220.174.58.25
  username: BruceAuyeung
- date: '2016-10-29 13:38:06'
  message: 解决了日志量太大，写入很耗费时间的问题,而用rsyslog&nbsp;&nbsp;读取日志的时候，还要等待写入之后才能读取
  postip: 222.50.3.103
  username: 来自广东深圳的 Chrome 51.0|Windows 7 用户
- date: '2016-10-29 13:38:09'
  message: 解决了日志量太大，写入很耗费时间的问题,而用rsyslog&nbsp;&nbsp;读取日志的时候，还要等待写入之后才能读取
  postip: 222.50.3.103
  username: 来自广东深圳的 Chrome 51.0|Windows 7 用户
count:
  commentnum: 20
  favtimes: 3
  likes: 0
  sharetimes: 21
  viewnum: 10130
date: '2015-03-26 07:21:00'
editorchoice: false
excerpt: Ramlog 以系统守护进程的形式运行。在系统启动时它创建虚拟磁盘（ramdisk），将 /var/log 下的文件复制到虚拟磁盘中，同时把虚拟磁盘挂载为/var/log。然后所有的日志就会更新到虚拟磁盘上。而当
  ramlog 重启或停止时，需要记录到硬盘上的日志就会保留在目录/var/log.hdd中。而关机的时候，（ramdisk上的）日志文件会重新保存到硬盘上，以确保日志一致性。Ramlog
  2.x默认使用tmpfs文件系统，同时也可以支持ramfs和内核ramdisk。使用rsync（译注：Linux数据镜像备份工具）这个工具来同步日志。 注意：如果突然断电或者内核崩溃（kernel
  pani
fromurl: http://www.ubuntugeek.com/improve-system-performance-by-moving-your-log-files-to-ram-using-ramlog.html
id: 5118
islctt: true
largepic: /images/p/201503/24/162817udy63cdzf2jyld7a.png
permalink: /article-5118-1.html
pic: /images/p/201503/24/162817udy63cdzf2jyld7a.png.thumb.jpg
related: []
reviewer: ''
selector: ''
summary: Ramlog 以系统守护进程的形式运行。在系统启动时它创建虚拟磁盘（ramdisk），将 /var/log 下的文件复制到虚拟磁盘中，同时把虚拟磁盘挂载为/var/log。然后所有的日志就会更新到虚拟磁盘上。而当
  ramlog 重启或停止时，需要记录到硬盘上的日志就会保留在目录/var/log.hdd中。而关机的时候，（ramdisk上的）日志文件会重新保存到硬盘上，以确保日志一致性。Ramlog
  2.x默认使用tmpfs文件系统，同时也可以支持ramfs和内核ramdisk。使用rsync（译注：Linux数据镜像备份工具）这个工具来同步日志。 注意：如果突然断电或者内核崩溃（kernel
  pani
tags:
- ramlog
- 日志
- 内存
thumb: false
title: 性能优化：使用ramlog将日志文件转移到内存中
titlepic: false
translator: soooogreen
updated: '2015-03-26 07:21:00'
---

Ramlog 以系统守护进程的形式运行。在系统启动时它创建虚拟磁盘（ramdisk），将 /var/log 下的文件复制到虚拟磁盘中，同时把虚拟磁盘挂载为/var/log。然后所有的日志就会更新到虚拟磁盘上。而当 ramlog 重启或停止时，需要记录到硬盘上的日志就会保留在目录/var/log.hdd中。而关机的时候，（ramdisk上的）日志文件会重新保存到硬盘上，以确保日志一致性。Ramlog 2.x默认使用tmpfs文件系统，同时也可以支持ramfs和内核ramdisk。使用rsync（译注：Linux数据镜像备份工具）这个工具来同步日志。


注意：如果突然断电或者内核崩溃（kernel panic）时，没有保存进硬盘的日志将会丢失。


如果你拥有够多的可用内存，而又想把日志放进虚拟磁盘，就安装ramlog吧。它是笔记本用户、带有UPS的系统或是直接在flash中运行的系统的优良选择，可以节省日志的写入时间。


![](/images/p/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/) 荣誉推出