Linux系统中一些针对文件系统的节能技巧
简介: 文件系统是 Linux 系统的重要组成部分,文件系统的配置和使用对整个系统的运行有着重要的影响.本文介绍了一些 Linux 系统上对文件系统的配置技巧,达到节省能耗并目的,有的技巧还可以提高系统的性能.虽然文件系统的节能成效比起 CPU 和显示器的节能来显得比较轻微,但是积少成多,绿色的地球将靠我们一点一滴来完成. 本文假设用户的主要文件系统驻留在硬盘之上.硬盘是系统中相对于 CPU、内存等设备来说活动时间比较少的部件.如果硬盘处于空闲状态时,耗电量是很少的;而在启动进行读写的时候,耗电量会大大增加.通过文件系统节能的核心思想就是,尽量减少磁盘 I/O,使硬盘更多的处于空闲状态. 对atime 的处理 根据 POSIX 的规定,Linux 以及 Unix 等系统都要为系统中的所有文件记录文件的访问时间,叫做 atime.对于某些应用来说,atime 是很重要的信息.比如一些邮件程序会通过邮件文件的 atime 来判断此邮件是否已读;一些备份和清理程序会根据文件在多长时间内没有被访问,来决定是否对文件进行清理和归档. 但是对于大部分应用来说,atime 信息并不重要,而系统更新 atime 所带来的开销却是巨大的.系统每访问一次某个文件,就要对这个文件更新一个新的 atime 时间值.我这里所说的访问,并不是从用户角度来看的打开一个文件,而是系统底层的每一次 open 和 read 等操作.设想一下,我们每对文件进行一次读操作,都要引起一个对磁盘的写操作,即使我们要读的内容已经存在于内存的 Page Cache 中,还是要对磁盘进行一个写操作.这样引起的开销确实是巨大的,这些写操作会使磁盘更多的处于忙碌状态,这对系统性能(磁盘在完成一个写操作的时候会暂时阻止其他的写操作)以及电量消耗都是不利的. ,如果用户可以确定自己的应用不会使用到文件的 atime 信息,则可以禁止 atime 的更新.对于整个文件系统,mount 命令的 noatime 选项可以使整个文件系统下的文件都不会进行 atime 的更新.可以使用如下命令: mount -o remount,noatime / 也可以将 noatime 选项写在 /etc/fstab 文件里. 如果不想对整个文件系统禁止 atime 更新,而只是想针对某些文件或目录禁止,则可以通过 chattr 命令来完成,如下面的命令: chattr -R A /some/dir 可以对某个目录及其下面的所有文件禁止 atime 更新. 除了 noatime,还有两个和 atime 相关的文件系统选项.一个是 nodiratime,此选项只针对目录禁止进行 atime 更新(注意 noatime 对文件和目录都生效,是 nodiratime 的超集).这样就可以使 ls这样的命令不会更新目录的 atime 值. 对于某些用户某些应用,atime 信息可能是必要的,比如本节一开始提到的邮件程序和备份工具.如果完全禁止 atime 更新会使这些程序无法正常工作.针对这种情况,Linux 在内核 2.6.20 中添加了一个新的 mount 选项 relatime(relative atime 的意思).relatime 的意思是访问文件时,仅在 atime 早于文件的更改时间时对 atime 进行更新.在内核 2.6.24 中,又对 relatime 进行了扩展,在访问文件时,当 atime 已经超过某个时间(例如一天)没有更新,就对 atime 进行更新.这个扩展的意思就是调整 atime 的更新粒度. 目前 relatime 还没有被广泛的应用,许多 Linux 发行版的内核版本和 mount 命令还没有支持这个选项.如果你的系统支持 relatime,可以使用如下命令启用: mount -o remount,relatime / 调节 Page Cache 和 VM 系统 调节 Page Cache 在 Linux 的内核中,对文件的读写提供一个页面缓冲的机制(Page Cache).Page Cache 存在于内存中,当要读取一个磁盘文件的内容时,内核在 Page Cache 中进行查找,如果要读取的内容已经存在 Page Cache 中,则无需在对磁盘发起实 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |