SATA 基础知识
Linux 世界中,I/O 设备被分为 字符设备、块设备、网络设备。
SATA 这种存储设备属于块设备。
块设备用来存储定长,且可随时访问的数据块,对块设备的操作都以块(block)为单位进行。
在高性能系统的块设备(block devices)I/O 控制方式中,DMA 和 I/O通道方式比较常用。
前者由 DMA 控制器接管 CPU 总线控制权,数据不经过 CPU 而直接在内存和 I/O 设备间进行块传输,进而提升系统的数据传输效率。
后者可以获得 CPU 和外设间更好的并行能力。
SATA 是一种新型块设备(Serial ATA),这需要我们开发一种功能与性能更强的 I/O 控制器来发挥其高性能。着这控制器就是 ADMA 控制器,它采用一种新的 I/O 控制方式。
SATA 是一种串行架构。同 IDE/ATA、SCSI 接口的块设备相比,SATA 优点大大的。包括 1)pin 更少 2)速度更快,1.0 150MB/s 3.0 600MB/s 3)热插拔 4)拓展性好。
5)成本低,就成本而言,远低于 SCSI 产品。
SATA 设备调试
当有外置 USB 插入的时候,会产生 /proc/scsi/usb-storage 目录,并在其中产生数字文件(形如 1 2 3 4),此文件存储了设备相关信息。
相应的 /sys/class/scsi_device/ 目录中会有 scsi 设备的目录(ide 硬盘默认无子目录,sata硬盘默认有子目录),以数字开头(形如 1:0:0:0 2:0:0:0)
这个数字与前面 /proc/scsi/usb-storage目录中的相对应,子目录表示sata硬盘。
/sys/class/scsi_device/2:0:0:0/device/block 中有 sata 设备文件,其中有多个文件,我们关注 removeable 和 dev
1 | # cat dev |
dev 内容形如 8:0 ,就是 /proc/partitions 中设备的 maj:min 主设备号:次设备号。
removable 可以为 0 或者 1 ,1 表示 U 盘,0 表示硬盘。
据此,先看usb-storage目录,再到/sys目录下找相应的removable和dev文件,再
查partitions文件,就可以得到设备名、设备信息、可移动标记。
1 | root@rk3399_mid:/sys/class/scsi_device/2:0:0:0/device/block/sda # mount |