运维需要知道的存储知识

💡 原文中文,约10500字,阅读约需25分钟。
📝

内容提要

本文介绍存储系统核心知识,涵盖HDD、SSD、NVMe、RAID等存储设备特性,以及SATA、PCIe、DMA、RDMA、交换机等数据传输技术。文章还讲解系统IO路径、文件系统(ext4、XFS、NFS、CephFS、JuiceFS)及监控工具(snmp_exporter、ipmi_exporter、smartctl_exporter、node_exporter等),强调根据场景选择合适存储方案并关注性能与可靠性。

🔎

延伸解读

存储选型:场景决定方案

文章强调根据场景选择存储:HDD适合大容量冷数据,SSD适合读多写少,NVMe适合高IOPS,RAID级别需权衡容量与冗余。例如,数据库日志适合RAID 1,数据文件适合RAID 10,容量型大文件可用RAID 5/6。理解这些特性有助于避免将WAL或系统盘放在HDD上,或使用廉价QLC盘承载持续重写负载。

性能指标:标称值≠实际体验

文中指出SSD的SLC Cache、GC和磨损均衡会导致延迟尖刺,标称速度仅在缓存未满时成立;NVMe-oF延迟比本机高20-100μs;RAID延迟下限由单盘决定。因此,评估存储性能时,应使用fio等工具进行实际测试,并关注应用真实模式下的延迟和吞吐,而非仅看理论峰值。

监控与告警:分层排查

文章介绍了多种监控工具:snmp_exporter关注交换机链路质量,ipmi_exporter监控硬件健康,smartctl_exporter预警磁盘故障,node_exporter提供基础指标,process-exporter定位进程。告警时应结合多层指标,如node_disk_io_time高但util接近100%不代表打满,需看写延迟和队列;PVC打满需查看服务端df,而非仅看node_exporter。

Q&A

HDD和SSD的主要区别是什么?

HDD利用磁场记录数据,SSD使用NAND Flash存储。HDD容量大、单价低,但随机读写性能差,延迟5-15ms;SSD读写快,延迟50-200μs,但寿命有限,使用率过高会降速。

NVMe相比SATA SSD有哪些优势?

NVMe是为闪存设计的协议,支持多队列和深队列,走PCIe总线,性能远高于SATA SSD。NVMe顺序读写可达2-14GB/s,随机IOPS 20-150万,延迟10-100μs;而SATA SSD受限于NCQ=32和600MB/s接口速度。

RAID 5和RAID 10有什么区别?如何选择?

RAID 5需要至少3块盘,提供1块盘冗余,容量利用率(n-1)/n,适合容量型大文件;RAID 10需要至少4块盘,镜像+条带,冗余度高,性能好,但容量利用率50%,适合数据库等高IOPS场景。

什么是RDMA?它有什么优缺点?

RDMA允许一台机器直接读写另一台机器的内存,省去内核协议栈拷贝,延迟低、CPU占用低、吞吐高。但依赖无损网络,对丢包敏感,需要配置PFC/ECN,否则性能下降。

ext4和XFS文件系统有什么区别?

ext4是Linux最常见的本地文件系统,适合系统盘和中小数据盘,支持缩容;XFS分配并行度好,适合大文件、大容量、多线程写,但不能缩小,修复需用xfs_repair。

NFS和CephFS有什么不同?

NFS将一台机器的目录导出,客户端通过网络访问,扩展受限于单机硬件;CephFS是分布式文件系统,数据分布多台OSD,容量随集群扩展,还提供块和对象接口。

如何监控存储设备的健康状态?

使用smartctl_exporter采集SMART数据,监控温度、寿命、坏道等;ipmi_exporter监控硬件如风扇、电源;node_exporter监控磁盘IO、容量等。

什么是直接IO?它和带缓冲IO有什么区别?

直接IO(O_DIRECT)绕过Page Cache,数据直接在用户缓冲和设备间传输,延迟更接近设备,但需要应用自行管理缓存;带缓冲IO先写缓存,由内核回写,读缓存命中快,但脏页堆积可能阻塞写者。

🏷️

标签

➡️

继续阅读