根据建议这个帖子我正在尝试改进我的系统,以便使用固态硬盘更好地运行。但关于 RAMdisk 和/etc/fstab
使用,我遇到了一些理解问题。
假设我将以下几行添加到/etc/fstab
tmpfs /tmp tmpfs 默认值,noatime,nodiratime,模式=1777 0 0 tmpfs /var/spool tmpfs 默认值,noatime,nodiratime,mode=1777 0 0 tmpfs /var/tmp tmpfs 默认值,noatime,nodiratime,模式=1777 0 0 tmpfs /var/log tmpfs 默认值,noatime,nodiratime,模式=0755 0 0
我知道在启动时这些位置应该被安装到 RAM 中(希望如此)。
但是之前挂载在这些位置的物理空间会怎样呢?它消失了吗?当我编辑/etc/fstab
回没有 tmpfs 的版本时,它会回来吗?空间是否仍会以我无法将其用于任何其他数据的方式分配在我的 SSD 上?
有时也建议添加以下行:
无 /var/cache aufs dirs=/tmp:/var/cache=ro 0 0
这到底有什么用?我注意到这/var/cache
占用了我硬盘上将近 1GB 的空间。那么在激活此行之前我应该清除目录吗?(这与前一个问题有关)
这让我有些困惑,希望您能给我一些澄清。
更新
我下载了一个 600MB 大小的镜像,/tmp
使用上述 tmpfs 设置挂载。现在我想比较下载前后的 RAM 使用情况。我预计下载后 RAM 使用量会增加 600MB。但系统监控工具显示没有变化一点儿也不。
怎么会这样?tmpfs 的工作方式是否与我预期的不同?
答案1
坐骑
当您在文件系统中的某个位置挂载文件系统时,之前的内容在挂载期间不可见,挂载消失后会重新出现。虽然不可见,但它们确实会占用文件系统上的空间。
您引用的问题帖子似乎有很多非常有用的信息。也许我可以根据您的问题添加一些信息。
临时文件
正如您所说,tmpfs 文件系统的内容不是持久的——当系统重启时它们总会丢失数据。
虽然我知道将 /tmp 存储在内存中没有任何缺点(除了它消耗的内存),但 FHS(文件系统层次结构标准)规定 /var/tmp 应该在重新启动后继续存在,因此它实际上不应该是 tmpfs(我的此刻是空的)。/var/spool 存储打印作业,可能还有其他东西。/var/log 包含调试信息,除非您遇到问题,否则这些信息毫无用处,但遇到问题时可能会变得非常重要。我不会将这最后三个中的任何一个放在 tmpfs 上,尽管我承认日志有很多写入操作。
奥夫斯
我不确定,但我认为 aufs 挂载可能是为了允许从 /var/cache/ 读取,而实际上将您写入的任何内容存储到 /tmp/(将同时出现在 /tmp 和 /var/cache/ 中)。我无法将您在问题中提到的 fstab 条目与我获得的 aufs-tools 版本 1:3.0+20111101-1ubuntu1 手册页文档进行匹配。我希望您引用的文章包含有关此特定项目的更多信息。如果您决定使用 aufs 并且语法有问题,我建议您尝试您引用的问题线程中的评论中的 Andrew Ferrier 的 fstab 条目,因为它似乎与我能找到的文档更匹配。
/var/cache/apt/archive 用于保存您已安装软件包的 .deb 文件。如果您的系统与我的类似,您会发现 /var/cache/apt/archives 占用了此处的大量空间。您可以使用 清理它sudo apt-get clean
。缓存对性能很有用,但应该只存储可替换的项目。/var/cache/apt/archive 缓存允许您重新安装软件包的版本,而无需再次下载它们。如果您想减少这个空间,您apt-get clean
需要在 /var/cache 上没有挂载时执行此操作,以便可以看到数据并将其从设备中删除,并恢复该空间。
其他项目
noatime 选项和相关的 nodiratime 选项放弃了让文件系统记住文件被访问(读取)的时间,这样做的好处是文件系统的写入次数更少,从而提高了性能并减少了 SSD 的磨损。如果您关心搜索在特定时间范围内已读取的文件,您将失去这种能力。我发现自己不会这样做。
我看到有人建议在你的 ext3/4 文件系统上设置一个选项来关闭日志,这构成了相当多的写入,但代价是在你的系统出现故障时恢复你最近写入的一些数据。
如果你看看这里,oldfred 在帖子#2 中给出了两个可以与 SSD 一起使用的命令。
sudo tune2fs -O ^has_journal /dev/sda1
sudo tune2fs -o discard /dev/sda1
当然,根据需要更改 /dev/sda1。
第一个命令关闭我上面提到的日志功能。第二个命令告诉内核将文件删除信息传达给 SSD 控制器,以便控制器能够更优化地管理设备,从而提高性能。
我的拙见
我想我会从使用 tmpfs for /tmp 开始,使用 noatime 挂载选项,关闭 EXT4 日志记录并打开丢弃选项。
我同意 JR0cket 的观点,绝对不会将交换文件放在 SSD 上,因为担心会缩短其使用寿命。
我已经对我的闪存驱动器进行了这些更改,由于日志更改,我不得不花几秒钟在启动时修复我的文件系统,至少必须重新启动一次。当我重新启动或停止时,显然在系统停止或重新启动之前以及在最后一次写入文件系统之后文件同步尚未完成。这对我来说不是一个大问题,我也没有注意到其他更改带来的任何其他影响。
我希望曾经做过这件事或者了解 aufs 的人能够提供更多细节来回答您的问题。
答案2
小心将 /var/spool/ 放在 tmpfs 上!
用户 CRON JOBS 存储在 Ubuntu 上的 /var/spool/ 下!
如果你把/var/spool/ on tmpfs
你将无法有任何用户cron 作业,因为它们会在每次关机时被删除。
这系统但是,crontab 位于/etc/crontab
并且直接使用命令进行编辑crontab -e
。经过一番努力才发现这一点 :-(