注,本文中用到的图片来《自存储技术原理分析》一书)
linux 操作系统秉承“一切都是文件”的设计思想,将所有的块设备也看成文件,内核发现一个块设备时候,会通知用户空间,用户空间的udevd后台进程接受到这些消息后,会按照用户指定的规则为他们创建(mknod)块设备文件。
理解块设备文件,关键有两方面,一,从外部表现看,他是属于某个外部文件系统上的一个文件,通常将他们存放在/dev目录下,用户像常规文件一样通过文件名对他们进行访问;二,从内部实现上看,他又可以看做是一个特殊文件系统(bdev)的一个文件,块设备文件的文件逻辑编号和块设备编号一一对应。一般来说,前一个文件系统被称为宿主文件系统,一般是根文件系统,可以是各种文件系统类型。通过特殊方式来区别常规文件和块设备文件。例如Minix文件系统采用文件磁盘inode中的i_mode表示文件是否对应一个块设备文件,块设备文件的内容是块设备编号(主设备号和此设备号),被保存在块设备文件的磁盘上i结点的i_zone[0]。
而后一个文件系统就是bdev文件系统,他是一个“伪”文件系统,他存在的目的就是建立块设备文件的外部表现和内部实现之间的关系。bdev文件系统只被内核使用,并不需要装载到全局文件系统树上。
块设备的主inode与次inode
与常规文件不同,块设备文件除了上面在根文件系统的inode外