SSD如何在两台相同的服务器上写入性能会有显着不同?

我租用两台相同的物理服务器(在Serverloft上)。 这些服务器带有2×512 GB SSD磁盘,我已经用mdadmRAID1中设置了它们。 这些磁盘本地安装在服务器中。

这两个系统的写入性能看起来差别很大。

根据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 

除了整体的写作performance真的不好之外,什么会造成这个巨大的performance差距。 这个差距在几次运行中是一致的。

为了比较,我有第三台服务器以及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 

我做了什么?

  • validation磁盘分区是否alignment( parted > align-check opt n
  • fstrim -v / (第二台服务器失败,第一台服务器成功)
  • blockdev --getbsz [partition]给出了一个4096的块大小(默认,我相信)
  • defaults,errors=remount-ro安装驱动器,在/ etc / fstab中defaults,errors=remount-ro

我能做些什么来提高这些系统的写入性能?

不同的是SSD使用的驱动器。 它存在企业gradle模式和“客户”模式。

对于企业级gradle生模型,您可以期望更长的使用寿命,以及更好的algorithm,以确保它可以运行5年。

我举一个例子,在上周我看到一个SAN的SSD的企业,他们仅以500GB左右的价格出售,价格约为3K $。

第一台服务器(2个SAMSUNG MZ7TE512)

用三星SSD满足数据中心和企业存储的全天候需求。

第二台服务器(2个SAMSUNG MZ7LN512)

三星的客户端固态硬盘(SSD)

他们是新的SSD吗? 如果不是,则进行低级清理。 不知道在它的官方任期…一些网站说,做一个安全的擦除。 您想要从设备中删除所有损耗均衡和其他数据。 您的特定SSD的制造商是您应该获得该工具的地方。 但是,如果SSD固件足够聪明,也许只是做fstrim会做类似的事情。

这与TRIM有关… trim写入相同的数据,但过慢的写入可能是因为TRIM太less。 但是,除非您在安装选项上设置了-o,否则在testing过程中实际上没有执行与TRIM相关的操作。 (更好的方法是使用fstrim命令,例如,每周一次,而不是放弃更频繁的操作)。

而且我认为有时候TRIM会在固件坏的时候破坏事情。 见https://blog.algolia.com/when-solid-state-drives-are-not-that-solid/

此外,对于某些configuration,223 MB / s可能是正常的…特别慢的SSD,或者像SATA 3Gbps这样的慢速控制器,或者你在RAID方面做了一些错误,比如fs块的alignment,raid块大小,分区开始扇区。 80 MB / s是令人惊讶的,但是我听说过这样的一些SSD直到清理。