我在 Serverloft 租用了两台相同的物理服务器。这些服务器配有 2x512 GB SSD 磁盘,我已将它们设置为RAID1 中的 mdadm. 磁盘本地安装在服务器中。
这两个系统的写入性能似乎有很大差异。
据此lshw -short
,控制器是:
C610/X99 series chipset 6-Port SATA Controller [AHCI mode]
第一台服务器(2 台 SAMSUNG MZ7TE512)
host02:/tmp# dd bs=1M count=8192 if=/dev/zero of=testfile conv=fdatasync
8192+0 records in
8192+0 records out
8589934592 bytes (8.6 GB) copied, 38.4952 s, 223 MB/s
第二台服务器(2 台 SAMSUNG MZ7LN512)
host03:/tmp# dd bs=1M count=8192 if=/dev/zero of=testfile conv=fdatasync
8192+0 records in
8192+0 records out
8589934592 bytes (8.6 GB) copied, 108.284 s, 79.3 MB/s
除了整体写入性能确实很差之外,还有什么原因导致性能差距这么大呢?这种差距在几次运行中都是一致的。
为了进行比较,我还有第三台服务器,配备 2x2TB SATA 磁盘。
host01:/tmp# dd bs=1M count=8192 if=/dev/zero of=testfile conv=fdatasync
8192+0 records in
8192+0 records out
8589934592 bytes (8.6 GB) copied, 49.0217 s, 175 MB/s
我做了什么?
- 验证磁盘分区是否对齐 (
parted
>align-check opt n
) fstrim -v /
(第二台服务器上失败,第一台服务器上成功)blockdev --getbsz [partition]
给出的块大小为 4096(我认为是默认值)defaults,errors=remount-ro
使用 /etc/fstab安装驱动器
我还能做些什么来提高这些系统的写入性能?
答案1
不同之处在于所使用的SSD驱动器。它有企业级型号和“客户端”型号。
对于企业级模型,您可以期待更长的寿命和更好的算法,以确保它能够运行 5 年。
我举个例子,上周我在企业中看到了用于 SAN 的 SSD,它们的售价仅为 500GB,每个约 3000 美元。
第一台服务器(2 台 SAMSUNG MZ7TE512)
第二台服务器(2 台 SAMSUNG MZ7LN512)
答案2
它们是新的 SSD 吗?如果不是,请进行低级清理。不确定官方术语是什么...有些网站说要进行安全擦除。您想从设备中删除所有磨损均衡和其他数据。您应该从特定 SSD 的制造商处获取该工具。但如果 SSD 固件足够智能,也许只需执行 fstrim 就可以完成类似的事情。
这与 TRIM 有关... trim 写入相同的数据,但写入速度慢可能是因为过去 TRIM 太少。但除非您在挂载选项上设置 -o discard,否则您在测试期间实际上并没有执行任何与 TRIM 相关的操作。(更好的方法是使用 fstrim 命令,例如每周一次,而不是 discard,后者执行得更频繁)。
我认为有时当固件有问题时,TRIM 可能会破坏某些东西。参见https://blog.algolia.com/when-solid-state-drives-are-not-that-solid/
此外,对于某些配置来说,223 MB/s 可能是正常的......特别是速度较慢的 SSD,或者像 SATA 3Gbps 这样的速度较慢的控制器,或者是您在 raid 中做错了什么,例如 fs 块的对齐、raid 块大小、分区起始扇区。80 MB/s 令人惊讶,但我听说过一些 SSD 也是这样的,直到清理干净。