我正在设置的服务器有一个奇怪的问题。它适用于文件共享类型的网站,因此需要快速的 IO 和充足的容量。操作系统是 CentOS 6.4 64 位
有问题的服务器是 HP DL360p,具有 18 个驱动器托架,在 RAID50 中装有 2TB SAS 驱动器
还有一个 HP StorageWorks SAS 扩展托架,另外还有 12x2TB,也在 RAID50 中
RAID 是使用服务器的 BIOS 配置实用程序配置的,使用的控制器非常好,带有备用电池和 2GB FWBC。
现在,最初我们将它们设置为单独的卷,但由于我们软件的特殊性,使用单个大卷会更好。
因此,我设置了一个组合这两个卷的 LVM 卷,然后使用 XFS 格式化逻辑卷
问题是,由此产生的速度令人失望。运行 hdparm -tT 可获得 300MB/s 的最佳读取速度
所以我做了一些测试并得到了这个:
两者都没有 LVM,XFS:两个卷的读取速度都在 700MB/s 左右
使用 LVM,但未安装卷:1000-1100MB/s
在条带模式下使用 LVM,未安装卷:1100-1300MB/s
所以不知何故,XFS 似乎限制了速度……我在格式化和挂载时尝试了一些更高级的选项,例如 -l internal,启用惰性计数,nobarrier,但这并没有带来任何改进。
我发现唯一可能是个问题,RAID 卷的条带大小不匹配(一个设置为 512KB,另一个设置为 256KB),所以我重新配置它们以匹配,这需要几个小时更多的。我还用 su=512k,sw=28 重新格式化了卷(sw=28 只是一个猜测,因为总共有 28 个活动 HDD... 或者我应该将 RAID 卷设置为 2?)
我很想干掉整个事情并尝试 ZFS,这似乎很有希望,但我认为配置它会远远超出我的技能水平......
因此,如果有人对此有任何经验或建议,将不胜感激!
您的应用程序的读/写吞吐量和 IOPS 要求是什么?存储性能并不总是与阵列吞吐量或原始带宽有关。顺序读/写只是 I/O 活动的一部分。
更准确的测试是针对已挂载的文件系统运行bonnie++或iozone ... 甚至运行您的应用程序并测量实际工作负载。
如果我是你,我会转储内部和外部控制器并整合到HP Smart Array P822 控制器- 部件 #615418-B21。
这将允许您在一个阵列中处理您的内部磁盘和外部机箱。P822 还默认启用智能阵列高级功能集 (SAAP) 。此时,您可以使用正确的 RAID 级别(可能是 RAID 1+0)以及为设置分配一个或多个全局热备件的能力来正确划分阵列。控制器还将利用双路径连接到您的外部存储。您还可以安排在内部和外部存储之间条带化或镜像驱动器对。很大的灵活性。
不过,此设置的最大优势在于附带的HP SmartCache SSD 缓存功能。这类似于LSI 的 Cachecade。配备一两个 SSD,您可以将热数据保存在延迟较低的 SSD 上,而不必转至旋转磁盘。
不过,这只是硬件方面...
对于 XFS 卷,尤其是在 HP 设备上,我不使用 LVM(不过有些人会这样做)。对于 HP 控制器,块设备表示是抽象的,因此我使用了一个非常基本的文件系统格式化字符串:
fstab 有几个挂载选项:
但是对于 RHEL6,您还应该考虑一些调度和性能调整功能。主要的是调整框架。
这将根据下面的时间表即时设置 I/O 升降机、禁用写入屏障并设置其他一些注重性能的选项。
此设置上的 ZFS 不会帮助您。您必须完全转储 Smart Array 控制器并转至SAS HBA 或失去所有 ZFS RAID 功能并使用一个大型块设备(这将受益于我上面建议的 Smart Array P822)。两者都需要某种形式的写缓存(ZIL),我认为它不能解决可管理性问题。ZFS 需要更多的预先计划。