写在前面本文看下磁盘相关基础内容。1磁盘的分类当前磁盘分为机械磁盘也称为磁盘驱动器hard disk driver。简称HDD。固态硬盘简称SSD。分别看下。1.1机械磁盘机械磁盘由盘片和磁头组成而在盘片上有磁道磁道负责真正的存储数据磁道找到数据存储的对应磁道的过程叫做磁道寻址。如果是不需要磁道寻址就叫做连续IO这种方式因为不需要寻址即不需要移动磁头效率较高。如果是需要磁道寻址就叫做随机IO这种方式因为需要寻址即需要移动磁头所以效率较低。机械磁盘的最小读写单元是扇区一个扇区大小512字节。1.2固态磁盘固态磁盘不需要寻址性能优于机械磁盘。也更贵。固态磁盘的最小读写单元是页大小4k8k。不管是哪种磁盘设备在Linux中都是以块设备的形式来进行管理的。2通用块层因为块设备多种多样为了减少文件系统使用过程中的复杂度定义了通用块层来屏蔽这种差异。具体的通用块层做如下的事情1向上对于文件系统提供统一的块设备访问的标准接口 2向下对于不同的块设备提供统一的管理 3对上层的io请求进行调度2IO栈文件系统通用块块设备就构成了完整的IO栈如下图写在后面参考文章列表多知道一点磁盘的分类按照存储介质分类机械磁盘固态硬盘。按照接口分类按照接口来分类比如可以把硬盘分为 IDEIntegrated Drive Electronics、SCSISmall Computer System Interface 、SASSerial Attached SCSI 、SATASerial ATA 、FCFibre Channel 等。不同的接口往往分配不同的设备名称。比如 IDE 设备会分配一个 hd 前缀的设备名SCSI 和 SATA 设备会分配一个 sd 前缀的设备名。如果是多块同类型的磁盘就会按照 a、b、c 等的字母顺序来编号。接入服务器后磁盘在接入服务器后按照不同的使用方式可以分为不同的架构。第一种是直接作为独立磁盘使用然后按需分为不同的逻辑分区一般名称为/dev/sdaX这种比如另一种常用架构是将多块磁盘组合成一个逻辑磁盘构成磁盘阵列也就是经常听说的RAIDredundant array of independent disks。根据不同的容量性能以及可靠性不同RAID可以分为raid0raid1,raid5,raid10等。其中RAID0有最优的读写性能但不提供数据冗余功能。还有一种基于磁盘组成的网络存储集群然后通过NFSSMBiSCSI等网络存储协议暴漏给用户使用。完整的IO栈图