如何让CentOS服务器磁盘io性能翻倍centos

如何让CentOS服务器磁盘io性能翻倍centos,第1张

如何让CentOS服务器磁盘io性能翻倍

这一期我们来看一下有哪些办法可以减少linux下的文件碎片。主要是针对磁盘长期满负荷运转的使用场景(例如http代理服务器);另外有一个小技巧,针对互联网图片服务器,可以将io性能提升数倍。如果为服务器订制一个专用文件系统,可以完全解决文件碎片的问题,将磁盘io的性能发挥至极限。对于我们的代理服务器,相当于把io性能提升到3-5倍。

在现有文件系统下进行优化linux内核和各个文件系统采用了几个优化方案来提升磁盘访问速度。但这些优化方案需要在我们的服务器设计中进行配合才能得到充分发挥。

文件系统缓存linux内核会将大部分空闲内存交给虚拟文件系统,来作为文件缓存,叫做page cache。在内存不足时,这部分内存会采用lru算法进行淘汰。通过free命令查看内存,显示为cached的部分就是文件缓存了。

如果能找到当前使用场景下,文件被访问的统计特征,针对性的写一个淘汰算法,可以大幅提升文件缓存的命中率。对于http正向代理来说,一个好的淘汰算法可以用1GB内存达到lru算法100GB内存的缓存效果。如果不打算写一个新的淘汰算法,一般不需要在应用层再搭一个文件cache程序来做缓存。

大家好,由于将服务器系统由centos5.5改为centos6.5,发现工作效率比centos5.5低,使用dd命令测试了一下centos6.5的io,发现比centos5.5低了30倍左右(测试数据见下面的测试结果),请问centos6为什么比centos5系列的io效率低?centos6与5在资源调配上有什么主要变化?谢谢!

测试结果为:

同一机器在centos6.5下的数据为(图一):

[root@device ~]# dd if=/dev/zero of=test bs=64k count=4k oflag=dsync

记录了4096+0 的读入

记录了4096+0 的写出

268435456字节(268 MB)已复制,113.337 秒,2.4 MB/秒

图一

同一机器在centos5.5下的数据为(图二):

[root@localhost ~]# dd if=/dev/zero of=test bs=64k count=16k oflag=dsync

16384+0 records in

16384+0 records out

1073741824 bytes (1.1 GB) copied, 17.2352 seconds, 62.3 MB/s

图二

常见磁盘分区存储形式类型有两种: MBR(MSDOS) GPT

MBR(Master Boot Record,主引导记录)。

MBR是存在于驱动器最开始部分的一个特殊的启动扇区,一般叫它0扇区。它由446B的启动加载器(Windows和Linux的不同),64B的分区表,和2B用来存放区域的有效性标识55AA,共512B。

GPT(GUID Partition Table),这是最近几年逐渐流行起来的一种分区形式,如果要将使用GPT分区格式的磁盘作为系统盘,需要UEFI BIOS的支持,它才可以引导系统启动。UEFI一种称为Unified Extensible Firmware Interface(统一的可扩展的固件接口,它最终是为了取代BIOS,目前市面上的BIOS大多已支持UEFI。GPT也是为了最终取代MBR的。

GPT相比MBR的优点:

因为传统的MBR分区,支持的最大分区为2T,也可以一定程度上等同于磁盘大小,必定2T以上的硬盘不是非常普及。在CentOS中可以使用 fdisk 指令进行管理。详细过程不在赘述。

当CentOS中识别到有磁盘容量超过2T时,如果试图使用 fdisk 指令对其分区会有相应的警告提示,大致如下:

明确提示需要使用 parted 进行管理,如果系统中没有这一指令,使用 yum install -y parted 进行安装即可。

4K对齐

在磁盘中的扇区只有排列整齐才有利于发挥磁盘的最佳读写性能。这里的对齐即常听说的4K对齐。可以简单的理解4K对齐的作用:当在磁盘中存取小于4K的数据时,如果没有4K对齐这时候很可能需要将这份数据放到两个4K块中,会出现多次读写不同的块的情况,明显没有4K对齐只在一个块中去存取数据高效。

如果系统进行了磁盘内核参数的调整,可以使用以下公式计算出合适的磁盘第一分区的start值,单位为s,s表示扇区,如果没有调整start可以使用2048s或0%表示。end值可以使用百分比的形式,也可以使用数字加单位的形式,如50%,3T。

然后将optimal_io_size的值加上alignment_offset的值,再除以physical_block_size的值,得到这块盘分区的起始位置扇区编号。

注意 :parted指令做的磁盘设置立即生效,不需要和fdisk一样使用w才会生效。

当完成对超过2T的磁盘分区以后,可以查看系统内核( cat /proc/partition )是否已成功识别到相应分区。如果识别到了,按照常规方式对分区进行格式化,然后挂载即可使用新的磁盘分区了。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/349001.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-07
下一篇2023-05-07

发表评论

登录后才能评论

评论列表(0条)

    保存