我在设置服务器时遇到了一个奇怪的问题。它用于文件共享类型的网站,因此需要快速 IO 和足够的容量。操作系统是 CentOS 6.4 64 位
有问题的服务器是 HP DL360p,带有 18 个驱动器托架,装有 RAID50 中的 2TB SAS 驱动器
另外还有一个 HP StorageWorks SAS 扩展托架,可再容纳 12x2TB,同样采用 RAID50
使用服务器的 BIOS 配置实用程序配置 RAID,使用的控制器非常好,带有电池备份和 2GB FWBC。
现在,我们最初将它们设置为单独的卷,但由于我们软件的特殊性,拥有一个大的卷会更好。
因此,我设置了一个结合这两个卷的 LVM 卷,然后使用 XFS 格式化逻辑卷
问题是,最终的速度令人失望。运行 hdparm -tT 得到的最佳读取速度为 300MB/s
因此我做了一些测试并得到了以下结果:
两者都没有 LVM,XFS:两个卷的读取速度均为 700MB/s 左右
使用 LVM,但未安装卷:1000-1100MB/s
LVM 处于条带模式,卷未挂载:1100-1300MB/s
所以某种程度上 XFS 似乎限制了速度...我在格式化和挂载时尝试了一些更高级的选项,例如 -l internal、启用 lazy-count、nobarrier,但这并没有任何改善。
我发现唯一可能存在问题的是 RAID 卷的条带大小不匹配(一个设置为 512KB,另一个设置为 256KB),因此我正在重新配置它们以使其匹配,这将需要几个小时。我还使用 su=512k,sw=28 重新格式化了卷(sw=28 只是猜测,因为总共有 28 个活动硬盘……或者我应该为 RAID 卷将其设置为 2?)
我很想把整个东西都删掉,然后尝试 ZFS,它看起来很有希望,但我认为配置它远远超出了我的技术水平……
因此,如果有人对此有任何经验或建议,我们将不胜感激!
答案1
您的应用程序的读/写吞吐量和 IOPS 要求是什么?存储性能并不总是与阵列吞吐量或原始带宽有关。顺序读/写只是 I/O 活动的一部分。
更准确的测试是邦尼++或者碘针对已挂载的文件系统运行...或者甚至运行你的应用程序和测量实际工作量。
如果我是你,我会抛弃内部和外部控制器,并整合到一个HP Smart Array P822 控制器- 零件编号 615418-B21。
这样您就可以在一个阵列中处理内部磁盘和外部机箱。P822 还具有智能阵列高级功能集 (SAAP)默认情况下启用。此时,您可以使用正确的 RAID 级别(可能是 RAID 1+0)正确划分阵列,并能够为设置分配一个或多个全局热备用。控制器还将利用双路径到您的外部存储。您还可以安排在内部和外部存储之间对驱动器对进行条带化或镜像。灵活性很高。
不过,这种设置的最大优点是包括HP SmartCache SSD 缓存功能.这类似于LSI 的 Cachecade。配备一个或两个 SSD,您可以将热数据保存在延迟较低的 SSD 上,而不必转到旋转磁盘。
但这只是硬件方面......
对于 XFS 卷,特别是在 HP 设备上,我不使用 LVM(但有些人确实如此)。使用 HP 控制器,块设备表示是抽象的,因此我使用了一个非常基本的文件系统格式字符串:
mkfs.xfs -f -d agcount=32 -l size=128m,version=2 /dev/sdX`
fstab 有几个挂载选项:
UUID=4a0e1757 /data xfs noatime,logbufs=8,logbsize=256k 1 2
但是对于 RHEL6,您还应该考虑一些调度和性能调整功能。最主要的是调整框架。
yum install tuned tuned-utils
tuned-adm profile enterprise-storage
这将设置 I/O 电梯,禁用写屏障,并根据下面的计划动态设置一些其他注重性能的选项。
此设置上的 ZFS 不会帮助你。你必须完全放弃智能阵列控制器,然后转到SAS HBA 或者失去所有 ZFS RAID 功能并使用一个大型块设备(这将受益于我上面提出的智能阵列 P822)。两者都需要某种形式的写入缓存(ZIL),而且我不认为它解决了可管理性问题。ZFS 需要提前做好更多规划。