我有这两台服务器,其规格如下:
操作系统:RHEL 6.3 硬件:Dell PowerEdge R610,12 核,64GB RAM 驱动器:6 x Samsung 840 Pro SSD RAID 控制器:Intel RS25AB080,1GB 缓存 RAID 级别:5
当我们在服务器“A”上使用 dd 命令测试磁盘性能时,我们得到的平均速度为 333MB/秒。
当我们在服务器“B”上使用 dd 命令测试磁盘性能时,我们得到的平均速度为 40MB/秒。
我正在使用以下命令
dd if=/dev/zero of=testfile bs=3G count=1 oflag=dsync
我无法弄清楚为什么服务器 B 的性能如此糟糕。
该服务器是 MySQL 数据库集群的备用集群节点。活动的 MySQL 服务当前正在另一台服务器上运行,因此该节点基本上处于空闲状态。其上运行的唯一重要进程是 corosync、pacemaker 和 drbd
答案1
首先要检查的是 SSD 固件版本。三星已发布固件更新以提高性能和可靠性。还要检查 raid 控制器固件。
其次检查机器配置,sysctl -a
确认两者都使用相同的内核设置
根据您的描述,我怀疑一个 SSD 已“满”,而另一个仍有可用空间。虽然接近满的文件系统也有助于解决这个问题,但所谓“满”,是指 SSD 固件没有“空”块可用(即使文件系统报告有许多可用空间,所有块可能都已被写入),因此任何写入都会强制垃圾收集以获取更多可用块以供正常使用。另一个 SSD 仍有可用块,因此它可以快速找到并在那里写入所需的任何内容。
通常,您可以使用 discard mount 选项或(通常更推荐)fstrim 工具来“释放”SSD 块。检查一下关联了解更多信息。
在极端情况下,你可以清除 SSD 内存单元,这将清理所有 SSD,但当然,你会丢失所有信息,所以请在备份所有内容后执行此操作。查看上述链接以了解有关此操作的更多信息
最后,如果您无法使用 discard 或运行 fstrim(因为并非所有 RAID 控制器都允许),我建议您清除 SSD 内存单元,然后对 SSD 进行分区,以便至少 10% 到 20% 的 SSD 未分配给任何分区(可用分区空间),因此固件可以将其视为空闲,并且能够更好地进行垃圾收集并释放足够数量的块以避免重复的垃圾收集。