在一台服务器的使用上,磁盘往往占据着很重要的位置。服务器磁盘的配置和维护对整个服务器性能方面产生很大影响。实际上,优化服务器磁盘的方法只需要花费一点点时间。在这篇文章中,我将会分享一些提高你的服务器磁盘子系统效率的方法。
注意:几乎所有的服务器都被做了不相同的配置。也就是说,最适合您的组织的磁盘配置和优化技巧可能对另外一个组织的服务器是有害的。唯一的完全优化一台服务器磁盘的方法是去分析,在这台服务器上都运行了哪些应用,并且这些应用在服务器磁盘子系统中占用了多少工作量。
所以说,在这里是没有办法去提供最全面最完善的方法,来让你的服务器以***化的性能运行。这篇文章将会带来一些通用方法,通常能够用来提高大多数类型服务器的性能。
文件布置
优化服务器性能的一个窍门是去把文件放置在适当的磁盘上。举例来说, Windows Server操作系统通常情况下是被安装在C盘上。在这样的情况下,我推荐将C盘仅用作存放操作系统文件之用,尽管在一些情况下,你也可以将一些其他应用到C盘上而没有对性能产生不好的影响。
因为操作系统组件会消耗大量的磁盘输入/输出时间,并生成pagefile系统文件,我推荐将它放在一个专属磁盘驱动器(并不是一个专属分区)。这能够防止磁盘输入/输出关联虚拟内存分页而不打断系统其他部分。
存储到服务器上的任何一个数据通常都应该被存放在一个专属卷上。因为绝大多数的服务器磁盘输入/输出通常同读取数据和写入数据相关联,它通常需要在一个 RAID(独立磁盘冗余阵列)阵列上存放数据,类型依赖于你所需要的性能级别和容错控制。RAID(独立磁盘冗余阵列)10阵列常常是一个较好的选择对象,因为他们同RAID 1阵列一样迅速,但却是通过镜像(mirroring)提供容错控制。
内存
不管你是否相信,你的系统中内存总数会给磁盘子系统性能带来巨大差异。我已经讨论过在一个专属的磁盘上存放页面文件,以此来将带给系统闲置的虚拟内存页面的影响最小化。虚拟内存的概念是相对于物理内存而言的,当系统的物理内存空间入不敷出时,操作系统便会在硬盘上开辟一块磁盘空间当做内存。
然而,这个技巧是很差强人意的。首先,磁盘的相应速度甚至比最慢的物理内存还要慢。磁盘的存取速度是在毫秒的数量级上,而物理内存的存取速度是在十亿分之一秒的数量级上。
另外一个问题是操作系统不能利用存储在虚拟内存上的内存分页。如果操作系统需要去执行在一个内存分页执行一个指令,那首先这个分页必须被移动到物理内存上。这个步骤被称为交换(swapping)或者paging(线性空间到物理地址空间的映射)。
如果一台服务器的物理内存被装载满了,并且在它需要去访问一个存放在虚拟内存中的内存分页的时候,那在这个时候,服务器将不得不去将一个暂时不用的分页从物理内存中交换到虚拟内存上,以使得物理内存上有空间,能够将需要访问的内存分页从虚拟内存中交换到物理内存上。
这种分页进程不但只消耗磁盘资源,并且还占用大量的CPU时间和内存。有一些服务器的物理内存往往会去记录哪些分页在随机存储器(RAM)上,哪些分页在虚拟内存上。这就是为什么分页方法是如此的低效。一些分页是正常的,但是过量的分页会严重的制约一个系统的性能。过量的分页会导致不变的磁盘工作 (disk activity)。
减少分页的***方法是在你的服务器上安装尽可能多的内存。随着服务器中的随机存储器(RAM)数量的增加,相应的,pagefile文件的大小也会增加。然而,在pagefile文件上的系统依赖将会减少。这将会腾出数量相当可观的磁盘处理时间和CPU处理时间。
磁盘碎片整理程序
这里最重要的方法之一是为保证你能够有一个性能良好的磁盘,你应该去规则定期的执行磁盘碎片整理程序。磁盘被设计为写入数据以线性方式。但是,当文件被删除时,磁盘文件就不会被连续存放,在文件被删除的地方,就会形成无法利用的空间。
在将数据写入可用空间之前,磁盘将会计算这些可用空间。如果可用空间不能向被写入的数据提供足够的空间时,文件就会被分散保存到磁盘的不同地方:文件的一部分会被插入到可用空间的缝隙中,剩下的一部分可能会被存放到下一个可用空间的缝隙中,或者磁盘的末尾部分。
这种文件碎片对系统性能产生不好的影响,因为文件碎片过多会使系统在读写文件的时候来回寻找,使效率变低。整理磁盘碎片,并且允许文件以一个线性方式存放,这将会加快磁盘的存取读写速度。
索引
根据你服务器的以往使用经验,索引的使用在其中起到的作用应该是喜忧参半的。索引包括读取磁盘上的所有文件,并且创建一个索引告诉操作系统所包含的是什么文件。如果用户通过这种例行搜索方式去在一个大数据量中去查找特殊文件,索引就会让这种方法变得更有效。
然而,许多系统管理员不喜欢使用索引,因为索引进程会占用大量的CPU处理时间和内存。一些磁盘空间也往往会去存储索引。
建议:以server-by-server的基础去判断是否使用索引是很恰当的。在我的组织中我做索引文件服务器,因为我经常不得不去通过我的文件搜索来查看我是否已经写了关于某些问题的文章。然而,我的邮件服务器,数据库服务器,主域服务器(DNS),域控制器等等并没有被编入索引。为这些类型的服务器作索引是没有任何意义的。事实上,如果你希望去提高系统性能,你应该检查你的结构底层服务器,来确定它们没有被编入索引
【编辑推荐】