服务器运维

固态硬盘和机械硬盘的区别:服务器选 SSD 还是 HDD

固态硬盘(SSD)用闪存芯片存数据,没有机械部件,随机读写比机械硬盘(HDD)快几百到几千倍;机械硬盘靠旋转的盘片和移动的磁头读写,顺序读写尚可,随机读写每秒只有一两百次,但每 TB 价格低得多。服务器上的通常做法是:数据库、虚拟化和系统盘用 SSD,备份、归档和冷数据用 HDD。

作者 顶联产品团队发布于 7 分钟阅读

固态硬盘是什么意思?SSD(Solid State Drive)用 NAND 闪存芯片加主控存储数据,读写靠电信号完成,没有转动的盘片,也没有移动的磁头;机械硬盘(HDD)把数据记录在高速旋转的盘片上,每次读写都要等磁头移到目标磁道、等盘片把目标扇区转过来。这个机械动作决定了两者最大的区别:顺序读写时,企业级机械硬盘能到两三百 MB/s,和固态硬盘差两倍到二三十倍;随机读写时,机械硬盘每秒只能完成一两百次操作,固态硬盘是几万到上百万次,差几百到几千倍。所以服务器选盘看的不是“哪个更快”,而是业务的读写模式:随机小块读写多的数据库、虚拟化用固态硬盘,大块顺序读写、容量需求大的备份和归档用机械硬盘。

五个维度对照:性能、延迟、寿命、价格、故障

下表是各类盘的典型值,具体以型号规格书为准:

对比项 企业级机械硬盘(7200 转) SATA 固态硬盘 NVMe 固态硬盘(PCIe 4.0)
顺序读写 约 200–280 MB/s,外圈快、内圈慢 约 500–550 MB/s,被 SATA 接口卡住 读约 6–7 GB/s,写因型号而异
4 KB 随机读 IOPS 约 80–200 数万到约 10 万 数十万到百万以上
访问延迟 毫秒级,平均约 8–12 ms 约 0.1 ms 几十到一百多微秒
寿命怎么衡量 年工作负载,读写合计,企业盘常见约 550 TB/年 DWPD 或 TBW,只计写入 同左
单盘容量 常见 4–24 TB,大容量型号已超过 30 TB 常见 0.48–7.68 TB 常见 1.92–15.36 TB,QLC 型号已有 60 TB 以上
每 TB 价格 低 是大容量机械盘的数倍,随闪存行情波动 与 SATA 固态接近或略高
典型故障方式 坏道逐步增多,磁头、电机故障 写入寿命耗尽,主控或固件故障 同左,另外要注意过热降速
怕什么 震动、冲击 长期断电存放、高温 同左

性能之外,两类盘坏的方式也不一样,运维上的应对随之不同:

  • 机械硬盘多是渐进式损坏。 坏道逐步增加,SMART 里的重映射、待映射计数往往会提前给出信号;盘坏了之后,专业恢复把数据读出来的可能性也相对大。
  • 固态硬盘的磨损可以预测,故障却可能毫无预兆。 写入寿命看 NVMe 的 Percentage Used 或 SATA 盘的磨损类属性就能估算,但主控和固件故障会让盘整盘掉线。曾有厂商发布公告,部分型号的企业级固态硬盘会在通电时间达到特定小时数后因固件缺陷失效,需要升级固件规避。同一批次、同时上线的固态盘磨损进度几乎一致,放在同一个阵列里有同时到寿的风险,可以错开批次或上线时间。
  • 固态硬盘不适合断电长期存放。 JEDEC 的 JESD218 标准要求,写入寿命耗尽时,企业级固态硬盘在 40°C 断电状态下至少保存数据 3 个月,消费级为 30°C 下 1 年。新盘实际能保存更久,但把固态硬盘拔下来放进柜子当归档介质并不合适。
  • 固态硬盘上删除的数据更难找回。 文件删除后经 TRIM 通知,主控很快会擦除对应的闪存块,误删恢复比机械硬盘难得多,备份一份都不能省。

机械硬盘读写速度为什么差这么多:一个算例

7200 转的硬盘转一圈要 60 ÷ 7200 ≈ 8.33 ms,目标扇区平均在半圈之外,平均旋转等待约 4.17 ms;再加上磁头移到目标磁道的平均寻道时间,企业盘约 8 ms 上下。一次随机读写约 12 ms,每秒能完成 1000 ÷ 12 ≈ 83 次。这是只有一个请求在等待时的随机 IOPS;有多个请求排队时,硬盘会按磁头位置重新排序执行,能提高到 150–200 次左右,再往上就很难了。

换算成吞吐量,差距一目了然(NVMe 一列为示例值):

读写方式 7200 转机械硬盘 NVMe 固态硬盘
1 MB 大块顺序读 约 250 MB/s 约 6,500 MB/s
4 KB 随机读 150 IOPS × 4 KB ≈ 0.6 MB/s 800,000 IOPS × 4 KB ≈ 3,200 MB/s

同一块机械硬盘,顺序读 250 MB/s,随机读不到 1 MB/s,相差几百倍。数据库的每次查询读的是散落在各处的索引页和数据页,是典型的随机读写;几十台虚拟机共用一组盘,每台各自的顺序读写混在一起,到了磁盘这一层也变成随机读写。这两类负载放在机械硬盘上,CPU 和内存再好也会卡在磁盘等待上,iostat -x 1 里看到的是 %util 接近 100%、r_await 和 w_await 长时间在几十毫秒。10000、15000 转的 SAS 机械盘能把随机 IOPS 提到两三百,这类盘曾经专门用来跑数据库,现在基本被固态硬盘取代。

固态硬盘寿命:按业务写入量算 DWPD

闪存的每个存储单元能承受的擦写次数有限,所以固态硬盘的寿命用写入量衡量,规格书给出两个等价的指标:DWPD(质保期内每天可以写满全盘几次)和 TBW(质保期内累计可以写入的总量)。企业级固态硬盘大致分三档:读密集型约 1 DWPD 或更低,混合型约 3 DWPD,写密集型 10 DWPD 及以上,以型号规格书为准。

选盘时要拿业务的实际写入量去比,步骤是:

  1. 测出每天的写入量。 在现有服务器上用 iostat -d -m 看开机以来的累计写入(MB_wrtn 列),除以运行天数;或者对比相隔一天的两次 SMART 写入计数,得到每天写入多少 TB。
  2. 加上阵列带来的写入放大。 RAID 1、RAID 10 每份数据要写两块盘;RAID 5 的小块随机写,每次还要额外写一份校验。
  3. 除以单盘容量,得到每块盘需要的 DWPD,再和规格书对比,留出余量。

两个算例(假设数字):

  • 一台 MySQL 服务器每天写入 1.2 TB,用 4 块 3.84 TB 固态硬盘组 RAID 10。每份数据写两遍,总写入 2.4 TB,平均分到 4 块盘,每块每天约 0.6 TB,折合 0.6 ÷ 3.84 ≈ 0.16 DWPD。读密集型的 1 DWPD 已经有约 6 倍余量,没必要买写密集型。
  • 一台消息队列节点,数据只保留 12 小时,每天写入 4 TB,用 2 块 3.84 TB 固态硬盘做 RAID 1。每块盘每天都要写 4 TB,折合约 1.04 DWPD,超过了读密集型的 1 DWPD,额定写入量会在质保期结束前耗尽,要选 3 DWPD 的混合型。

机械硬盘没有擦写次数的限制,但有年工作负载额定值,读和写都计算在内。按企业盘常见的 550 TB/年算,一块 20 TB 的机械盘每天可承受的读写量约为 550 ÷ 365 ÷ 20 ≈ 0.075 个全盘容量。也就是说,大容量机械硬盘适合“写进去、偶尔读”的数据;长期超过额定负载高强度读写,故障率会上升。这和固态硬盘的 DWPD 是两种不同的约束,一个限制写入总量,一个限制读写强度。

接口对实际性能的影响:SATA、SAS、NVMe

接口 对机械硬盘 对固态硬盘 适合
SATA 6 Gb/s 单盘顺序读写不到 300 MB/s,用不满接口 顺序读写卡在约 550 MB/s,单队列、深度 32 系统盘、读多写少的应用
SAS 12 Gb/s 速度上与 SATA 盘差别不大,优势在双端口和错误处理 单端口约 1.2 GB/s,双端口可同时使用 双控存储、需要冗余路径的场合
NVMe(PCIe 4.0 x4) 不适用 接口带宽约 7.9 GB/s,多队列,高并发下延迟稳定 数据库、虚拟化、高并发业务

结论有三条:

  • 机械硬盘选 SATA 还是 SAS,不影响速度。 NL-SAS 盘和 SATA 企业盘的机械部分基本相同,选 SAS 是为了双端口、更好的阵列兼容和错误处理。
  • 固态硬盘的接口就是天花板。 同样的闪存,接在 SATA 上顺序读写就只有 550 MB/s;几块 SATA 固态组 RAID 10 的随机性能,可能还不如一块 NVMe 盘。
  • 中间环节也会限速。 多块 NVMe 盘接在硬件 RAID 卡后面时,阵列卡的处理能力可能先成为瓶颈;PCIe 插槽或背板只给到 x2、或者降到较低的 PCIe 版本,带宽也会减半。上线前用 fio 实测一遍。

先确认服务器上装的是什么盘,再做测试:

lsblk -d -o NAME,ROTA,TRAN,SIZE,MODEL     # ROTA 为 1 是机械盘,0 是固态盘;TRAN 显示 sata、sas、nvme
# 4 KB 随机读,--readonly 保证不写盘
fio --name=randread --filename=/dev/nvme0n1 --readonly --rw=randread --bs=4k --iodepth=32 --numjobs=4 \
    --direct=1 --ioengine=libaio --runtime=60 --time_based --group_reporting
# 1 MB 顺序读
fio --name=seqread --filename=/dev/sdb --readonly --rw=read --bs=1M --iodepth=8 \
    --direct=1 --ioengine=libaio --runtime=60 --time_based

结果看 IOPS、bw 和 clat 的百分位,99% 延迟比平均值更能反映业务的实际感受。硬件 RAID 卡后面的虚拟盘,ROTA 往往一律显示为 1,要用阵列卡工具查看成员盘的类型。写入测试会覆盖数据,只能在空盘上做。Windows 上用 Get-PhysicalDisk | Select-Object FriendlyName, MediaType, BusType, Size 查看盘的类型和接口。

按场景选盘:数据库、虚拟化、备份、日志

场景 读写特点 建议
关系型数据库(MySQL、PostgreSQL) 随机小块读写,同步写入要求低延迟 企业级 NVMe 或 SAS、SATA 固态,RAID 10 或主从复制;选带掉电保护的型号,按写入量核算 DWPD
虚拟化宿主机、云主机 多台虚拟机的读写混在一起,整体呈随机 固态硬盘;机械盘只放模板、ISO 和低负载虚拟机
系统盘 读多写少,容量需求小 2 块小容量 SATA 固态或 M.2 做 RAID 1
网站、应用服务器 读多写少,热点数据在内存里 SATA 固态足够
备份、归档 大块顺序写,偶尔读,容量大 大容量机械硬盘,RAID 6 或纠删码;不用固态盘断电长期存放
日志 本机日志是顺序追加;集中日志的检索是随机读 只写不查的日志落机械盘;Elasticsearch 这类要检索的热数据放固态,过期数据转到机械盘节点
视频点播、下载站 大文件顺序读,容量需求大 机械硬盘为主,用固态或内存给热点文件做缓存
分布式存储(如 Ceph) 数据量大,元数据和预写日志写入频繁 数据放机械盘,BlueStore 的 DB、WAL 放 NVMe

预算有限又需要容量时,可以混合使用:Linux 的 bcache、lvmcache,或者 ZFS 的 L2ARC 和 SLOG,用固态盘给机械盘阵列做缓存。缓存只对反复访问的热点数据有效,数据访问分散在全盘的业务,仍然要直接上固态硬盘。

在管理系统里怎么落地

机房里同时跑着机械盘、SATA 固态和 NVMe,型号和批次一多,哪台服务器装的是什么盘、哪一批固态盘是同时上线的,人工登记很容易出错。在 Toplink DCIM 的机柜与资产里,硬件采集脚本下发到服务器后,硬盘等硬件信息自动入库,每次采集的历史都会保留;硬盘作为部件按批次入库,记录型号、采购时间和去向。某一批固态盘接近写入寿命,或者厂商发布了固件公告,可以按批次和登记的去向查出涉及哪些服务器,提前安排升级或更换。

常见问题

服务器用了固态硬盘还需要组 RAID 吗?

需要。固态硬盘同样会坏,主控故障时还可能整盘直接掉线;RAID 解决的是单盘故障时业务不中断,和盘快不快无关。固态硬盘常用 RAID 1 或 RAID 10,RAID 5 的校验写入会放大写入量、多消耗寿命,要按写入量核算。RAID 也不能代替备份。

固态硬盘快满了会变慢吗?

会。闪存要先擦除整块才能写入新数据,剩余空间越少,主控做垃圾回收时要搬运的数据越多,持续写入性能和寿命都会下降。写入频繁的数据库盘一般留出一部分空闲空间,或者选预留空间更多的混合型、写密集型型号;系统里定期执行 fstrim(多数发行版提供 fstrim.timer),让主控知道哪些块已经不用了。

机械硬盘 5400 转、7200 转、10000 转差别大吗?

差别主要在随机访问。转速越高,平均旋转等待越短:5400 转约 5.6 ms,7200 转约 4.2 ms,10000 转 3 ms,15000 转 2 ms。顺序读写更多取决于盘片的记录密度,大容量 7200 转盘的顺序速度不一定比老款 10000 转盘慢。服务器里的大容量盘基本是 7200 转,10000、15000 转的 SAS 盘已经逐渐被固态硬盘取代。

想看看在你的机房里怎么用?

从一次产品演示开始,梳理你的业务链路。

查看价格
服务热线 400-112-2951

让我们聊聊你的 IDC 业务

扫码添加企业微信,预约产品演示或申请试用。

Toplink 企业微信二维码

长按保存或使用企业微信 / 微信扫描

也可致电
400-112-2951
Telegram
@TopLink88