按照邮件列表中的讨论,大约从7月下旬开始,mirrors 管理人员开始对服务器进行在线维护。其最终目的是消除目前 mirrors 上的磁盘性能瓶颈。具体工作分为以下几个部分:

一、更换 I/O 调度器

经过研究与讨论,我们最终决定使用 Deadline 调度器,以尽可能地降低 I/O 延迟。具体操作只需要向 Linux 下的 sysfs 文件系统中写入即可。

二、清理 LVM,合并虚拟磁盘

由于一些历史原因,mirrors 在同一块磁盘阵列卡上有许多分立的虚拟磁盘,各虚拟磁盘上又分别建立了 LVM。此次维护将弃用 LVM,并将分立的虚拟磁盘合并。

为此我们迁移了约 6TB 的数据到外部磁盘阵列上,以保证服务并不间断。使用 LSI 官方推荐的 MegaCLI 命令行工具在线操作磁盘阵列卡,建立新的虚拟磁盘。新的虚拟磁盘采用 RAID5,平衡稳定性与可靠性。

三、优化文件系统

在新的虚拟硬盘上,我们使用 ext4 文件系统。在创建过程中使用 stride 与 stripe-width 选项针对 RAID 优化文件系统,使文件系统中的块与 RAID 中的条带对齐。

文件系统使用 noatime,nosuid,data=writeback,barrier=0,errors=remount-ro,noquota 选项挂载,主要是使用回写优化写操作性能,并关闭同步屏障以进一步提高性能。

四、成果

如图,在移动镜像时:

外部磁盘阵列吞吐量

可见,外部磁盘阵列的访问速度的瓶颈转移到了连接外部磁盘阵列与本机的千兆以太网上。

当镜像已基本回迁完成时:

外部磁盘阵列吞吐量
外部磁盘阵列延迟

可见新组建的磁盘阵列性能不错,延迟极低。

可用之前博文中的方式“攻击” mirrors 服务器,服务器负载并不会有明显变化。