学习笔记-linux性能优化实战-io性能篇-02linux磁盘IO是如何工作的

按照存储介质:分为机械磁盘和固态硬盘
按照存储接口:分为IDE SCSI SAS SATA FC,不同接口,不同设备名称,IDE设备hd前缀,SASISATA前缀sd,多块同类型磁盘,按照abc字母顺序编号

按照磁盘接入服务器后的使用方式的不同,把磁盘分为不同架构
独立磁盘使用:往往还会根据需要,划分为不同逻辑分区1,2
多个磁盘组合成一个逻辑磁盘使用,RAID,容量性能不同分为raid0 raid1…
把磁盘组合成一个网络存储集群,再通过NFS SMB ISCSI等网络存储协议,暴露给服务器使用
其实在 Linux 中,磁盘实际上是作为一个块设备来管理的,也就是以块为单位读写数据,并且支持随机读写。每个块设备都会被赋予两个设备号,分别是主、次设备号。主设备号用在驱动程序中,用来区分设备类型;而次设备号则是用来给多个同类设备编号。
VFS
不同的文件系统
通用块层

通用块层,其实是处在文件系统和磁盘驱动中间的一个块设备抽象层。它主要有两个功能 。第一个功能跟虚拟文件系统的功能类似。向上,为文件系统和应用程序,提供访问块设备的标准接口;向下,**把各种异构的磁盘设备抽象为统一的块设备,并提供统一框架来管理这些设备的驱动程序。**第二个功能,通用块层还会给文件系统和应用程序发来的 I/O 请求排队,并通过重新排序、请求合并等方式,提高磁盘读写的效率。
IO栈;由文件系统层、通用块层和设备层构成的 Linux 存储系统 I/O 栈。
文件系统层,包括虚拟文件系统和其他各种文件系统的具体实现。它为上层的应用程序,提供标准的文件访问接口;对下会通过通用块层,来存储和管理磁盘数据。
通用块层,包括块设备 I/O 队列和 I/O 调度器。它会对文件系统的 I/O 请求进行排队,再通过重新排序和请求合并,然后才要发送给下一级的设备层。
设备层,包括存储设备和相应的驱动程序,负责最终物理设备的 I/O 操作。

发布了241 篇原创文章 · 获赞 25 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/u013755520/article/details/103786307