我刚买了一台 HP DL180 G6,它有 25 个 146GB 15K SAS 驱动器、36GB RAM、2 个 2.0GHz Xeon 1333Mhz FSB。为了好玩,我将它们全部配置为单个 RAID 0,并在其上安装了 Ubuntu,以查看在配备 512MB RAM 的 HP Smart Array P410 控制器上使用 25 个驱动器时速度有多快。
当我运行 hdparm -tT /dev/mapper/concorde--vg-root 时,我得到了
Timing cached reads: 5658MB in 1.99 seconds = 2834.13 MB/sec
Timing buffered disk reads: 1192 MB in 3.00 seconds = 397.13 MB/sec
当我在另一台仅具有 4X 15K 驱动器的服务器(HP DL360 G5 - 32GB RAM - 2X 2.66GHz 667Mhz FSB)上运行相同命令时,我得到:
Timing cached reads: 13268 MB in 1.99 seconds = 6665.18 MB/sec
Timing buffered disk reads: 712 MB in 3.00 seconds = 237.17 MB/sec
我原本以为这个服务器的运行速度会比旧服务器快 5 倍,而不是更慢。该服务器旨在提供流媒体,因此我需要超快速的访问和传输速度,以跟上 2 个 1Gb 网络端口,我希望在执行其他任务的同时,有时能够最大限度地利用它们。
我刚刚整理了一堆 400MB MP4 文件的副本,将其中 45GB 从一个目录复制到另一个目录,花了 96 秒,这似乎与我所听说的 RAID 0 性能提升不符。
它被设置为硬件 raid,我需要在 Linux 中做些什么才能利用它应有的额外速度?我使用哪种 Linux 版本有关系吗?我熟悉 CentOS 和 Ubuntu,但如果需要也可以使用其他版本。
是否有其他命令可用于测量性能?我昨天尝试使用 iotop 和 iostat 来监控 RAID 使用情况,但在通过 FTP 复制 2GB 文件时无法报告任何使用情况,因此只能尝试设置基准,比较其在各个服务器上的性能,并对其进行监控,以便知道硬盘何时达到最大容量并需要更换为 SSD。
答案1
哇...这里有很多事情需要解决。
磁盘性能不仅仅与吞吐量有关。还有 IOPS、延迟和服务时间等概念需要考虑。大多数工作负载本质上都有点随机,因此从 IOPS 的角度来看,阵列中的 25 个企业磁盘总是胜过 4 个磁盘。
hdparm
并不是对企业存储进行基准测试的合适工具。请查看专门构建的程序,例如iozone
和fio
。
对您有用的 iozone 命令示例是(从要测试的磁盘阵列上的大目录运行):iozone -t1 -i0 -i1 -i2 -r1m -s72g
该服务器的设计意味着您的磁盘背板超额认购。服务器上有一个扩展器芯片,这 25 个磁盘共享一个 4 通道 6Gbps 连接到 RAID 控制器。这意味着您的理论最大吞吐量为 24Gbps(或 3,000 兆字节/秒)到阵列。这是一个上限,超出这个上限,您将看不到性能。
当涉及硬件驱动程序和支持时,Ubuntu 几乎从来都不是最佳选择。它未得到服务器的官方支持。CentOS 或 RHEL 更适合此硬件。
HP Smart Array 控制器能够将一组磁盘(阵列)划分为具有不同容量和 RAID 级别的多个逻辑驱动器。以下示例显示了划分为三个逻辑驱动器的 4 磁盘阵列。其中一个逻辑驱动器配置了与其他驱动器不同的 RAID 级别。
插槽 0 中的智能阵列 P420i(嵌入式)(sn:0014380296200A0)
logicaldrive 1 (72.0 GB, RAID 1+0, OK) logicaldrive 2 (1024.0 GB, RAID 1+0, OK) logicaldrive 3 (869.1 GB, RAID 5, OK) physicaldrive 1I:2:1 (port 1I:box 2:bay 1, SAS, 900.1 GB, OK) physicaldrive 1I:2:2 (port 1I:box 2:bay 2, SAS, 900.1 GB, OK) physicaldrive 1I:2:3 (port 1I:box 2:bay 3, SAS, 900.1 GB, OK) physicaldrive 1I:2:4 (port 1I:box 2:bay 4, SAS, 900.1 GB, OK)
任何时候都不应该使用RAID 0在此处放置逻辑驱动器。如果您有剩余空间,RAID 1+0 将在此硬件组合下表现良好。
您已安装 LVM。使用这些 HP Smart Array RAID 控制器时,这不是最佳方法。这是一个额外的抽象层,您不会看到最佳性能(尽管可以对其进行调整以使其运行良好)。
固件。您需要更新服务器和相关组件的固件。每次 HP RAID 控制器固件修订都会改进其功能。
RAID 缓存配置。确保 RAID 电池状况良好,并且缓存读/写平衡适合您的工作负载。
文件系统选择。XFS 是流媒体的不错选择。但您要求的速率相对较低。任何现代 Linux 文件系统都应该没问题。
答案2
让我立即注意到的是低缓存新服务器上的吞吐量,这表明您存在内存瓶颈。您提到它有 36 GB 的内存,这是一个奇怪的数字。我敢打赌,您没有成对安装内存(或者 3x,如果这个 cpu/主板能够进行三重交错,我怀疑它是的),因此内存没有正确交错。您可以运行memtest86+
以获得对内存吞吐量的良好测量。
至于实际的 IO 吞吐量,对于如此大的阵列,您可能没有向其发出足够的请求。 hdparm
每次仅读取 2 MiB,因此如果阵列使用 512k 条带因子,则每次只能使 4 个驱动器保持繁忙。对于其他命令(例如)dd
,它取决于预读大小,默认预读大小仅为 128 kb。尝试使用dd
而不是hdparm
(不使用iflag=direct
)并提高 /sys/block/dm-X/queue/read_ahead_kb 中的预读因子,以确保内核发送足够大的请求以保持所有驱动器繁忙,或者如果您确实使用iflag=direct
,dd
则确保使用非常大的值bs=
,例如 32MiB,然后内核预读设置就无关紧要了。