我刚刚安装了 Debian 5 (Lenny),我注意到 /lib/init/rw 被报告为 RAM 磁盘 (tmpfs)。我只使用过 Fedora,所以我很好奇该目录在 Debian 中起什么作用。它是否可以供用户编写的 shell 脚本用来缓存内容,还是它是禁止使用的,仅供操作系统使用?谢谢。
答案1
正如其他人指出的那样(这本来是对他们回复的评论,但太长了,无法在评论框中显示出来),这被一些启动脚本使用,通常是在启动过程中,当你的其他文件系统可能是只读的,甚至还没有挂载时。
启动完成后,文件系统仍处于挂载状态,因为写入该文件系统的启动脚本可能会在其他时间运行(如果您手动重新启动服务或切换运行级别)。如果设备/文件系统/lib/init
处于只读状态,则不应强制卸载它。当不实际存储数据时,它不会消耗任何可观的资源,因此不存在性能问题。
虽然我不认为将它用于你自己的脚本有什么坏处如果你的脚本经过充分测试,并且可以保证不会完全填满它,以至于启动脚本在需要时无法在那里写入,为此目的创建自己的tmpfs
挂载会更安全(理论上,您可以拥有任意数量的挂载,并且它们只有在实际存储数据时才消耗内存)或者只是使用/tmp
并将其挂载为tmpfs
文件系统而不是放在磁盘上。
如果您确实使用tmpfs
文件系统来存储临时数据,请注意这将消耗内存,并且如果您的内存不足,则可能会导致交换。这就是为什么我通常使用单独的挂载而不是/tmp
(许多进程会将内容放在那里,因此它更有可能比我的脚本单独使用更多的内存)。但是,如果您有足够的“备用”内存,那么大多数时候这不是问题。在 和类似工具的输出中,free
文件系统top
中保存的数据使用的内存tmpfs
通常计入“缓存”计数 - 请参阅在 Linux 中,free 命令报告的“buffers”和“cache”有什么区别?了解更多详细信息。
编辑:我忘了添加...创建自己的tmpfs
基于挂载而不是使用 Debian 为其标准脚本创建的挂载的另一个原因是,您使脚本不再依赖于特定于分发的属性,这意味着如果您的脚本迁移到其他配置,您需要进行更多更改。
答案2
它由 initscript 使用,在运行 /sbin/init 时需要可写命名空间。请记住,此时您的根分区很可能是只读的。
安德斯
答案3
显然它是在启动时由启动脚本使用的,参见此链接