Linux 使用一种特殊的命名法来指代硬盘分区,为了理解后续页面的讨论,必须理解这种命名法。
在 Linux 中,分区由设备文件表示。这些是位于以下目录的虚拟文件/dev。以下是一些条目
brw-rw---- 1 root disk 3, 0 May 5 1998 hda brw-rw---- 1 root disk 8, 0 May 5 1998 sda crw------- 1 root tty 4, 64 May 5 1998 ttyS0 |
按照约定,IDE 驱动器将被赋予设备名称/dev/hda到/dev/hdd。Hard Drive A (/dev/hda) 是第一个驱动器,而 Hard Drive C (/dev/hdc) 是第三个。
典型的 PC 有两个 IDE 控制器,每个控制器可以连接两个驱动器。例如,/dev/hda是第一个 IDE 控制器上的第一个驱动器(主盘),而/dev/hdd是第二个控制器上的第二个驱动器(从盘)(计算机中的第四个 IDE 驱动器)。
您可以直接写入这些设备(使用 cat 或 dd)。但是,由于这些设备代表整个磁盘,从第一个块开始,您可能会错误地覆盖主引导记录和分区表,这将导致驱动器无法使用。
表 3. 分区名称
驱动器名称 | 驱动器控制器 | 驱动器编号 | 分区类型 | 分区编号 |
/dev/hda1 | 1 | 1 | 主分区 | 1 |
/dev/hda2 | 1 | 1 | 主分区 | 2 |
/dev/hda3 | 1 | 1 | 主分区 | 3 |
/dev/hda4 | 1 | 1 | 交换分区 | NA |
/dev/hdb1 | 1 | 2 | 主分区 | 1 |
/dev/hdb2 | 1 | 2 | 主分区 | 2 |
/dev/hdb3 | 1 | 2 | 主分区 | 3 |
/dev/hdb4 | 1 | 2 | 主分区 | 4 |
一旦驱动器被分区,分区将以名称末尾的数字表示。例如,第二个驱动器上的第二个分区将是/dev/hdb2。第 3.3 节为了清晰起见,上面的表格中列出了分区类型(主分区),尽管该概念直到第 3.3 节才进行解释。
SCSI 驱动器遵循类似的模式;它们用 'sd' 而不是 'hd' 表示。因此,第二个 SCSI 驱动器的第一个分区将是/dev/sdb1。在上面的表格中,驱动器编号被任意选择为 6,以引入 SCSI ID 编号在 linux 下不映射到设备名称的概念。
在 (Sun) Solaris 和 (SGI) IRIX 下,赋予 SCSI 驱动器的设备名称与您插入的位置有关。在 linux 下,只有哀嚎和咬牙切齿。
之前
SCSI ID #2 SCSI ID #5 SCSI ID #7 SCSI ID #8 /dev/sda /dev/sdb /dev/sdc /dev/sdd |
之后
SCSI ID #2 SCSI ID #7 SCSI ID #8 /dev/sda /dev/sdb /dev/sdc |
SCSI 驱动器的 ID 编号从 1 到 15。较低的 SCSI ID 编号被分配较低顺序的字母。例如,如果您有两个编号为 2 和 5 的驱动器,则 #2 将是/dev/sda,而 #5 将是/dev/sdb。如果您移除其中任何一个,所有编号较高的驱动器将在下次启动时被重命名。
如果您的 linux 机器中有两个 SCSI 控制器,您需要检查 /bin/dmesg 的输出,以查看每个驱动器被分配了什么名称。如果您移除两个控制器中的一个,剩余的控制器可能会将其所有驱动器重命名。Grrr...
有两种解决方法;两者都涉及使用程序为每个分区贴上标签(请参阅第 6 节)。即使设备被物理移动,标签也是持久的。然后,您可以通过标签直接或间接地引用分区。
上表说明了名称分配中一个神秘的跳跃。这是由于使用了逻辑分区(请参阅第 3.4 节),逻辑分区总是从 5 开始,原因稍后解释。
这就是您处理 linux 磁盘设备所需知道的全部内容。为了完整起见,请参阅下面 Kristian 关于设备编号的讨论。
设备文件唯一重要的是其主设备号和次设备号,它们代替文件大小显示
$ ls -l /dev/hda |
当访问设备文件时,主设备号选择要调用哪个设备驱动程序来执行输入/输出操作。此调用使用次设备号作为参数完成,并且完全取决于驱动程序如何解释次设备号。驱动程序文档通常描述驱动程序如何使用次设备号。对于 IDE 磁盘,此文档位于 /usr/src/linux/Documentation/ide.txt。对于 SCSI 磁盘,人们会期望在 /usr/src/linux/Documentation/scsi.txt中找到此类文档,但实际上并不在那里。必须查看驱动程序源代码才能确定( /usr/src/linux/driver/scsi/sd.c:184-196)。幸运的是,在 /usr/src/linux/Documentation/devices.txt中,有 Peter Anvin 的设备编号和名称列表;请参阅块设备的条目,IDE 的主设备号为 3、22、33、34,SCSI 磁盘的主设备号为 8。主设备号和次设备号各占一个字节,这就是为什么每个磁盘的分区数量受到限制的原因。