Linux 使用一种特殊的命名规则来指代大容量存储设备,这需要被理解。
Linux 过去常常处理两种类型的驱动器,取决于电子接口(控制器):IDE 和 SCSI。老用户还记得 CD 刻录机通过 “SCSI 仿真” 访问的日子。实际上,IDE 和 SCSI 大多使用相同的底层命令,并且从 2007 年开始,随着新的 “SATA” 接口的出现,命名被统一了,在新的发行版中,所有驱动器都使用相同的命名。在本文中,CD 或 DVD 读写器被视为硬盘驱动器。
按照惯例,IDE 驱动器被赋予设备名称/dev/hda到/dev/hdd. Hard Drive A(/dev/hda) 是第一个驱动器,Hard Drive C(/dev/hdc) 是第三个。
典型的 PC 有两个 IDE 控制器,每个控制器可以连接两个驱动器。例如,/dev/hda是第一个 IDE 控制器上的第一个驱动器(主盘),以及/dev/hdd是第二个控制器上的第二个驱动器(从盘)(计算机中的第四个 IDE 驱动器)。
因此,通常情况下,具有 IDE 控制器的计算机可以容纳 4 个驱动器:/dev/hda (主控制器主盘), /dev/hdb (主控制器从盘), /dev/hdc (次控制器主盘), /dev/hdd (次控制器从盘)。一些(罕见的)主板具有两个以上的控制器,一些扩展卡也可能具有控制器,这些控制器按照字母顺序编号,但您需要弄清楚您的特定硬件的实际名称是什么。
您可以将驱动器放置在任何您想要的位置,不强制填补空隙。您可能有兴趣了解驱动器/光驱连接到什么位置,但这超出了本文档的范围。
现在,所有旋转硬盘驱动器都使用与旧 SCSI 控制器相同的名称,即将 “h” 替换为 “s”,因此是 /dev/sda,等等。驱动器的数量取决于主板或扩展板上的控制器数量。通常有 4 个可用。驱动器的编号取决于控制器卡及其被内核读取的方式,因此一开始很难说。
您会在某些应用程序中找到对底层 SCSI 设备和各种命名约定的引用,例如(wodim 是命令行 CD 刻录程序)
wodim --scanbus scsibus1: 1,0,0 100) * 1,1,0 101) 'TSSTcorp' 'CD/DVDW TS-L632D' 'ac00' Removable CD-ROM 1,2,0 102) * 1,3,0 103) * 1,4,0 104) * 1,5,0 105) * 1,6,0 106) * 1,7,0 107) * |
您可能需要使用某种 SCSI:1,1,0 选项来访问 CD-ROM。尽量避免使用它,因为它非常容易出错,应该只留给程序员使用。我提到它只是因为您并非总是可以避免它。
如果您执行 “cat /dev/ | more”,您可以看到
lrwxrwxrwx 1 root root 3 mars 9 07:56 scd0 -> sr0 (...) crw-r----- 1 root disk 21, 0 mars 9 07:56 sg0 crw-rw----+ 1 root disk 21, 1 mars 9 07:56 sg1 |
这些 scd、sr、sg 设备是底层接口(注意 “c” 代表 “字符”)。尽量不要使用它们。dmesg 和 more /var/log/boot.msg 应该会为您提供可用的 sdxx 设备,例如(简短摘要)
<5>sd 0:0:0:0: [sda] 976773168 512-byte hardware sectors: (500GB/465GiB) <5>sd 0:0:0:0: [sda] Write Protect is off <7>sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00 |
这意味着驱动器是 /dev/sda。
然而,这些文件(由 dmesg 和 more /var/log/boot.msg 提供)过去很容易阅读,但现在不再容易了。现在内核并行启动多个驱动程序,因此消息是混合的,您可能会看到
<6> sda:<6>USB Universal Host Contr'ller Interface driver v3.0 |
这并不意味着您的 sda 驱动器是 USB 驱动器,而是 USB 模块与驱动器模块同时启动并同时发送其消息。您仍然有一个 /dev/sda 驱动器。
以下是插入 USB 密钥的 dmesg 内容
scsi7 : SCSI emulation for USB Mass Storage devices usb 5-3: New USB device found, idVendor=0951, idProduct=160e usb 5-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 usb 5-3: Product: DataTraveler 2.0 usb 5-3: Manufacturer: Kingston usb 5-3: SerialNumber: 200706200000000059188185 usb-storage: device found at 9 usb-storage: waiting for device to settle before scanning scsi 7:0:0:0: Direct-Access Kingston DataTraveler 2.0 1.00 PQ: 0 ANSI: 2 sd 7:0:0:0: [sdb] 3930112 512-byte hardware sectors: (2.01GB/1.87GiB) sd 7:0:0:0: [sdb] Write Protect is off sd 7:0:0:0: [sdb] Mode Sense: 23 00 00 00 sd 7:0:0:0: [sdb] Assuming drive cache: write through sd 7:0:0:0: [sdb] 3930112 512-byte hardware sectors: (2.01GB/1.87GiB) sd 7:0:0:0: [sdb] Write Protect is off sd 7:0:0:0: [sdb] Mode Sense: 23 00 00 00 sd 7:0:0:0: [sdb] Assuming drive cache: write through sdb: sdb1 sd 7:0:0:0: [sdb] Attached SCSI removable disk sd 7:0:0:0: Attached scsi generic sg2 type 0 usb-storage: device scan complete |
您在那里看到了我们刚才所说的所有内容!SCSI 仿真、scsi、sd 和 sg 名称,以及对我们最重要的 sdb。
以下是高速 SDHC 卡的消息
tifm_core: MMC/SD card detected in socket 0:1 mmc1: new SDHC card at address d555 mmcblk0: mmc1:d555 SD04G 3.79GiB mmcblk0: p1 /dev/mmcblk0p1 on /media/H2SD type vfat (rw,nosuid,nodev,noatime,flush,uid=1000,utf8,shortname=lower) |
当这两张卡可能使用相同的闪存芯片时,USB 密钥使用 USB 接口和 SCSI 仿真,SDHC 卡使用笔记本电脑的 PCMCIA 插槽,并使用特殊的设备命名 (/dev/mmcblk0)。就分区而言,它们的用法是相同的。