最新版本的 RHEL/CentOS (EL6) 给我十多年来严重依赖的XFS 文件系统带来了一些有趣的变化。去年夏天,我花了一部分时间来追查由文档记录不足的内核向后移植导致的XFS 稀疏文件情况。其他人在迁移到 EL6 后遇到了不幸的性能问题或不一致的行为。
XFS 是我用于数据和增长分区的默认文件系统,因为它比默认的 ext3 文件系统提供稳定性、可扩展性和良好的性能提升。
2012 年 11 月出现的 EL6 系统上的 XFS 问题。我注意到我的服务器显示异常高的系统负载,即使在空闲时也是如此。在一种情况下,卸载的系统将显示 3+ 的恒定负载平均值。在其他情况下,负载增加了 1+。挂载的 XFS 文件系统的数量似乎会影响负载增加的严重程度。
系统有两个活动的 XFS 文件系统。升级到受影响的内核后,负载为 +2。

深入挖掘,我在XFS 邮件列表上发现了一些线程,这些线程指向xfsaild处于STAT D状态的进程频率增加。相应的CentOS Bug Tracker和Red Hat Bugzilla条目概述了问题的细节,并得出结论,这不是性能问题;只有在比2.6.32-279.14.1.el6更新的内核中报告系统负载时出错。
卧槽?!?
在一次性情况下,我知道负载报告可能没什么大不了的。尝试使用您的 NMS 和数百或数千台服务器来管理它!这是在2012年11 月在EL6.3 下的内核2.6.32-279.14.1.el6 中发现的。内核2.6.32-279.19.1.el6和2.6.32-279.22.1.el6在随后几个月(2012 年 12 月和 2013 年 …
我管理的大多数 Linux 系统都具有硬件 RAID 控制器(主要是HP Smart Array)。他们都在运行 RHEL 或 CentOS。
我正在寻找真实世界的可调参数,以帮助优化将硬件 RAID 控制器与 SAS 磁盘(智能阵列、Perc、LSI 等)和电池后备或闪存后备缓存相结合的设置的性能。假设 RAID 1+0 和多个主轴(4 个以上的磁盘)。
我花了大量时间为低延迟和金融交易应用程序调整 Linux 网络设置。但其中许多选项都有详细记录(更改发送/接收缓冲区、修改 TCP 窗口设置等)。工程师在存储方面做什么?
从历史上看,我对I/O 调度电梯进行了更改,最近选择了deadline和noop调度程序来提高我的应用程序的性能。随着 RHEL 版本的进步,我还注意到 SCSI 和 CCISS 块设备的编译默认值也发生了变化。随着时间的推移,这对推荐的存储子系统设置产生了影响。但是,我已经有一段时间没有看到任何明确的建议了。而且我知道操作系统默认设置不是最佳的。例如,对于服务器级硬件上的部署而言,128kb 的默认预读缓冲区似乎非常小。
以下文章探讨了更改预读缓存和nr_requests值对块队列的性能影响。
http://zackreed.me/articles/54-hp-smart-array-p410-controller-tuning
http://www.overclock.net/t/515068/tuning-a-hp-smart-array-p400-with -linux-why-tuning-really-matters
http://yoshinorimatsunobu.blogspot.com/2009/04/linux-io-scheduler-queue-size-and.html
例如,以下是 HP Smart Array RAID 控制器的建议更改:
echo "noop" > /sys/block/cciss\!c0d0/queue/scheduler
blockdev --setra 65536 /dev/cciss/c0d0
echo 512 > /sys/block/cciss\!c0d0/queue/nr_requests
echo 2048 > /sys/block/cciss\!c0d0/queue/read_ahead_kb
Run Code Online (Sandbox Code Playgroud)
还有什么可以可靠地调整来提高存储性能?
我专门在生产场景中寻找 sysctl 和 sysfs 选项。
我正在简化一系列 EL6.2(RHEL、CentOS、SL 等)系统的启动过程。对于增长/数据分区,我更喜欢使用 XFS 而不是 ext4。但是,我想对传递给mkfs.xfs创建分区的选项进行一些控制。我通常会在服务器建成后创建这个分区,这样我就有了这个控制权。但这真的应该是自动化的。
创建 400GB 的手动 XFS 分区时,我通常使用如下命令字符串:
mkfs.xfs -f -L /data -d agcount=100 -l size=128m,version=2 /dev/cciss/c0d1p0
使用/etc/fstab安装选项,例如:
LABEL=/data /data xfs noatime,logbufs=8,logbsize=256k,nobarrier 1 2
如何在不求助于 %post 的情况下在 anaconda kickstart 安装过程中内置类似的东西?
我即将在数百台生产服务器中将 RHEL 版本从 RHEL 5.4 升级到 RHEL 6.3。
升级将在生产部署之前在虚拟机上的暂存环境中进行测试。
RHEL 升级是否存在任何向后兼容性问题?