我想使用 RAM 块设备来存储/var/log
文件夹的内容。我使用的 RAM 支持块设备驱动程序与此相同关联。
这个命令创建了设备/dev/rb
。我想知道我需要做什么才能:(1)将其格式化为 ext3fs,(2)将其挂载为/var/log
。这需要在系统启动期间完成。
测试成功:各种内核消息文件存储在我创建的ram设备中。
谢谢您的帮助!
答案1
这一切都可以在/etc/rc.local
启动文件,在每个运行级别结束时运行。
要挂载到 /var/log,您需要停止在日志目录中打开文件的任何进程,挂载然后重新启动它们。我的建议是将以下行添加到您的rc.local
脚本中,以便它在启动时运行:
lsof | grep /var/log | awk '{ print $1 }' | uniq > /root/logs_open
lsof
列出所有打开的文件。然后我们过滤掉所有不引用 /var/log 的行(grep /var/log
)。我们只打印结果的第一列(进程名称)(awk '{ print $1 }'
),只保留每个结果的一个副本(uniq
)并将输出发送到文件(> /root/logs_open
)。您必须在启动文件中添加一些内容以在挂载分区之前停止这些进程,然后重新启动它们。掌握这些信息后,从 rc.local 中删除该行,我们就可以开始了。
首先,我们需要做你需要做的事情,以便创建 ramdisk。也许你可以编写一个脚本来执行此操作。
/root/create_ramdisk.sh
要创建 ext3 文件系统,请运行:
mkfs.ext3 /dev/rb
接下来,停止所有正在记录的进程。
service apache2 stop
现在我们可以挂载到 /var/log
mount /dev/rb /var/log
重新启动我们之前停止的进程
service apache2 start
最后,rc.local 必须以 0 状态退出,否则就会发生坏事™。
exit 0
rc.local
脚本:
/root/create_ramdisk.sh # example purposes only
mkfs.ext3 /dev/rb # create the filesystem
system apache2 stop # stop processes with open log files
mount /dev/rb /var/log # mount
system apache2 start # restart anything we stopped before
exit 0 # important!!! rc.local must exit successfully or Bad Things (tm) happen
我希望这有帮助。