15_磁盘IO
约 321 字大约 1 分钟
2026-04-12
我在工作中经常听到机器卡死了,完了检查机器后发现是磁盘IO有问题,但到底什么是IO的问题呢?
一次完整的磁盘读写的链路是这样的;
应用程序 write()
VFS(虚拟文件系统层进行读取),这里是统一的接口,不管底层是 ext4 还是 xfs
I/O 调度器: 对磁盘的读写请求进行合并,排序,减少磁头移动(对HDD而言)或者优化队列(对SSD来说)
块设备驱动
物理磁盘进行实际的读写任务
smartctl 命令查看磁盘
smartctl -a /dev/sdb | grep Reallocated_Sector_Ct 5 Reallocated_Sector_Ct 0x0033 100 100 001 Pre-fail Always - 1想要查看某一个磁盘的状态,可以通过 smartctl 命令去查看,比如上述命令中提到的 Reallocated_Sector_Ct 意味着磁盘因为坏道,使用备用扇区的大小。
硬盘在出厂的时候,厂商会在盘上预留一部分"备用扇区",当硬盘发现某一个扇区损坏的时候,就会默默将这个扇区标记为"弃用", 然后用一个备用扇区去替换。 Reallocated 间接说明了磁盘的老化程度。
