主要内容:
- 存储技术
- Linux块I/O层
- I/O调度器
- 块驱动程序数据结构和方法
1. 存储技术
块设备是一种能随机访问的存储介质,与字符设备不同,块设备能保存文件系统数据。
IDE/ATA是PC的存储接口技术,ATA-7支持133MB/s的速率;ATAPI是CD-ROM和磁带等存储设备,用ATAPI协议连接标准IDE电缆;SATA是IDE/ATA的串行演进,支持超过300MB/s的传输速率;SCSI服务器环境中流行的存储技术,Ultra320 SCSI支持320MB/s;USB大容量存储技术,是指USB硬盘、笔驱动器、CD-ROM以及软盘驱动器。
2.Linux块I/O层
Linux块I/O层的工作,如下图所示,存储介质包含了文件系统的文件,用户应用程序唤醒I/O系统调用来访问这些文件,先经过通用VFS层,高速缓冲区通过磁盘块来加速文件系统对块设备的访问。在这期间,I/O调度器操控请求队列,是磁盘访问延时最小,同时使吞吐量最大。
3.I/O调度器
I/O调度器的主要目标是通过尽量少减少寻道时间来增加系统的吞吐量。为此,I/O调度器维持一个排序过的请求队列,排序是将请求按相关磁盘扇区连续性进行排列。
4. 块驱动程序数据结构和方法
(1)内核用include/linux/genhd.h中定义的gendisk结构体表示一个磁盘
struct gendisk { int major; int first_minor; int minors; char disk_name[32]; struct block_device_operations *fops; struct request_queue *queue; };
(2)与每个块驱动程序相关的I/O请求队列用request_queue结构体描述,该结构体定义在include/linux/blkdev.h中。
(3)每个request_queue队列中的请求用request结构体描述,该结构体定义在include/linux/blkdev.h中。
(4)Block_device_operation是与file_operation结构体对应的块驱动程序结构体。