这个月我租用了两个 vServer,每个都来自不同的提供商。两者都表明系统的磁盘使用 SSD 技术(根据我的笔记本电脑经验,我预计带宽至少为 300MB/s 甚至更高)。
ssh
进入机器后,我发现其中一台机器在执行需要更多磁盘 IO 的任务时相当迟缓。因此,我想在这里问一下,我如何对广告中宣传的产品(具有固态硬盘磁盘空间确实如此。
我尝试过
dd if=/dev/rootFssBlockDev bs=5M count=2000 of=/dev/null
并接收这些输出。
主机 1 (85.2MB/s)
dd if=/dev/rootFssBlockDev bs=5M count=2000 of=/dev/null
2000+0 records in
2000+0 records out
10485760000 bytes (10 GB, 9.8 GiB) copied, 123.05 s, 85.2 MB/s
主机 2 (544 MB/s)
dd if=/dev/rootFssBlockDev bs=5M count=2000 of=/dev/null
2000+0 records in
2000+0 records out
10485760000 bytes (10 GB, 9.8 GiB) copied, 19.2678 s, 544 MB/s
对我来说,host1 上基准测试的值“听起来”像是他们试图用 HDD 换取 SSD(我实际上感觉有点被骗了)。然而,这个问题寻求洞察力,否则我如何能够证实我的假设,从而测试/基准测试所提供的机器(vServer)确实包含 SSD 磁盘。
更新
我也用于基准测试的工具列表(产生类似的结果)
hdparm -t /rootFssBlockDev
fio
(如建议这个答案)
也许有一个答案可以让你深入了解 HDD(盘片)和 SSD(闪存)之间的一个关键区别是随机访问读取的访问速度。
由于迈克尔·汉普顿的回答这表明,性能不佳可能是由于拥塞、来自共享同一 SSD 的更多虚拟主机的争用访问造成的。在我看来,即使在这种情况下,访问速度也应该不会进一步下降,因为访问速度不是由顺序读取而是随机读取引起的。归根结底,难道不能从顺序读取和随机读取之间的速度特征下降推断出 SSD 与 HDD 的区别吗?
更新(fio 结果)
这是 fio 工具的结果,显示了随机和顺序读取速度的鲜明对比(考虑到 SSD 的声明,两者的速度似乎都很低)
randread: (groupid=0, jobs=1): err= 0: pid=3593: Sat Sep 28 11:27:22 2019
read: IOPS=229, BW=917KiB/s (939kB/s)(256MiB/286009msec)
seqread: (groupid=0, jobs=1): err= 0: pid=3635: Sat Sep 28 11:27:22 2019
read: IOPS=3855, BW=15.1MiB/s (15.8MB/s)(1024MiB/67998msec)
答案1
没有可靠的确定虚拟机的后备存储是否基于 SSD 的方法。
虚拟机管理程序向虚拟机提供完全虚拟的磁盘设备,并且不公开任何物理存储硬件的属性。它可能是本地硬盘、本地 SSD 或远程存储,但不会向虚拟机提供这些信息。(除非在虚拟机通过完整物理磁盘的罕见情况下;在这种情况下通常可以知道磁盘是什么,甚至可以获取其序列号等。)
你能做的最好的事情就是做出推断。
我推断,一台能够以 544 MB/秒的速度从存储中读取 10 GB 的机器很可能使用的是 SSD 存储。这些速度完全在 SSD 驱动器的常见速度范围内。
我不会推断一台以 85 MB/秒的速度读取 10 GB 的机器使用的是 SSD 存储。我也会像您一样持怀疑态度。
话虽如此,这台机器肯定有可能是 SSD 支持的。也可能是过度使用。在这两台主机上,您并不是正在使用的物理磁盘的唯一客户。其他一些客户也会使用相同存储的虚拟机。
在第一种情况下,其他客户在测试时可能使用磁盘非常频繁,尽管使用的是 SSD,但您只能获得 85 MB/秒的可靠速度。为了验证这个假设,我会在几个小时后再次运行测试,并寻找速度的显著差异。这将表明后备存储的争用程度各不相同。类似的速度表明争用程度也类似,但这并不能说明什么。
如果提供商确实承诺为您提供 SSD 存储,我会与他们讨论这个缓慢的基准测试。这当然是意料之外的。如果他们不能给出一个合适的答案,我将不再担心存储是否是 SSD,而是去其他地方。