在启动时将块设备挂载为 /var/log

在启动时将块设备挂载为 /var/log

我想使用 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

我希望这有帮助。

相关内容