Linux 系统设备与磁盘管理全解析
1. SCSI 子系统及其驱动层
SCSI 子系统是一个大型结构,但其数据流非常线性。它包含三层驱动:
- 顶层驱动 :处理一类设备的操作。例如,sd(SCSI 磁盘)驱动处于此层,它能将内核块设备接口的请求转换为 SCSI 协议中的磁盘特定命令,反之亦然。
- 中间层驱动 :在顶层和底层之间调节和路由 SCSI 消息,并跟踪系统中所有的 SCSI 总线和设备。
- 底层驱动 :处理特定硬件的操作。这里的驱动将传出的 SCSI 协议消息发送到特定的主机适配器或硬件,并从硬件中提取传入的消息。与顶层分离的原因是,虽然 SCSI 消息对于某类设备(如磁盘类)是统一的,但不同类型的主机适配器发送相同消息的过程不同。
对于系统中的任何给定设备文件,内核使用一个顶层驱动和一个底层驱动。例如,对于 /dev/sda 磁盘,内核使用 sd 顶层驱动和 ATA 桥接底层驱动。有时,一个硬件设备可能会使用多个上层驱动。对于真正的硬件 SCSI 设备,底层驱动直接与下方的硬件通信,但对于连接到 SCSI 子系统的大多数硬件,情况则不同。
2. USB 存储与 SCSI
为了让 SCSI 子系统与常见的 USB 存储硬件通信,内核不仅需要一个底层 SCSI 驱动。由 /dev/sdf 表示的 USB 闪存驱动器能理解 SCSI 命令,但要实际与该驱动器通信,内核需要知道如何通过 USB 系统进行通信。
USB 在抽象层面上与 SCSI 非常相似,它有设备类、总线和主机控制器。因此
超级会员免费看
订阅专栏 解锁全文
2913

被折叠的 条评论
为什么被折叠?



