设备文件
根据维基百科:设备文件在类 Unix 系统中是一个设备驱动程序的接口,并如常规文件一样出现在文件系统中。
根据文件系统层次结构标准 (FHS),设备文件在 /dev
目录中。
在 Arch Linux 上设备节点由 udev 管理。
块设备[编辑 | 编辑源代码]
块设备是一种特殊文件,能通过缓冲区访问硬件设备。有关详细说明和虚拟文件系统设备之间的比较,请参阅维基百科。
块设备名[编辑 | 编辑源代码]
设备名的开头指定了内核操作块设备时使用的驱动子系统。
SCSI[编辑 | 编辑源代码]
支持 SCSI 命令 (SCSI、SAS、UASP)、ATA (PATA、SATA) 的存储设备或 USB 大容量存储设备,比如机械硬盘、固态硬盘和闪存驱动器,均由内核 SCSI 驱动子系统处理。这些设备的命名规范一致。
这些设备的名称以 sd
开头。之后是一个从 a
开始的小写字母,a
表示第一个发现的设备,b
表示第二个发现的设备,以此类推。
例如:
/dev/sda
- 设备a
,第一个发现的设备。/dev/sde
- 设备e
,第五个发现的设备。
NVMe[编辑 | 编辑源代码]
通过 NVM Express(NVMe) 连接的设备,比如固态硬盘,名称以 nvme
开头。之后是一个从 0
开始的数字,表示设备控制器号。nvme0
表示第一个发现的 NVMe 控制器,nvme1
表示第二个发现的,以此类推。然后是字母 "n" 和一个从 1
开始的数字,表示控制器上的设备号。比如 nvme0n1
表示第一个控制器上第一个发现的设备,nvme0n2
表示第一个控制器上第二个发现的设备,以此类推。
例如:
/dev/nvme0n1
- 控制器0
上的设备1
,第一个控制器上第一个发现的设备。/dev/nvme2n5
- 控制器2
上的设备5
,第三个控制器上第五个发现的设备。
MMC[编辑 | 编辑源代码]
SD 卡、多媒体存储卡 (MMC 卡) 和 eMMC 存储设备由内核的 mmc
驱动处理。这些设备的名称以 mmcblk
开头,之后是一个从 0
开始的数字表示设备号。比如 mmcblk0
表示第一个发现的设备,mmcblk1
表示第二个发现的设备,以此类推。
例如:
/dev/mmcblk0
- 设备0
,第一个发现的设备。/dev/mmcblk4
- 设备4
,第五个发现的设备。
SCSI 光盘驱动器[编辑 | 编辑源代码]
通过受 SCSI 驱动子系统支持的接口连接的光盘驱动器,其名称以 sr
开头。之后是一个从 0
开始的数字,表示设备号。比如 sr0
表示第一个发现的设备, sr1
表示第二个发现的设备,以此类推。
Udev 也提供到 /dev/sr0
的符号链接,名为 /dev/cdrom
。符号链接的名称 /dev/cdrom
与驱动器支持的光盘类型和插入的介质无关。
例如:
/dev/sr0
- 光盘驱动器0
,第一个发现的光盘驱动器。/dev/sr4
- 光盘驱动器4
,第五个发现的光盘驱动器。/dev/cdrom
- 到/dev/sr0
的符号链接。
virtio-blk[编辑 | 编辑源代码]
连接到 virtio 块设备 (virtio-blk) 接口的驱动器,其名称以 vd
开头。之后是一个从 a
开始的小写字母,a
表示第一个发现的设备 (vda
),b
表示第二个发现的设备 (vdb
),以此类推。
例如:
/dev/vda
- 设备a
,第一个发现的设备。/dev/vde
- 设备e
,第五个发现的设备。
分区[编辑 | 编辑源代码]
分区设备名是驱动器设备名与在分区表中分配的分区编号的组合 (可表示为 /dev/drivepartition
) 。对于设备名以数字结尾的驱动器,需要用字母 "p" 分隔驱动器名和分区编号 (可表示为 /dev/driveppartition
)。
例如:
/dev/sda1
-/dev/sda
上的分区1
。/dev/nvme2n5p3
-/dev/nvme2n5
上的分区3
。/dev/mmcblk3p4
-/dev/mmcblk3
上的分区4
。/dev/vda1
-/dev/vda
上的分区1
。/dev/loop0p2
-/dev/loop0
上的分区2
。
实用工具[编辑 | 编辑源代码]
lsblk[编辑 | 编辑源代码]
util-linux包 软件包提供了列出块设备的实用工具 lsblk(8),例如:
$ lsblk --fs
NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 vfat C4DA-2C4D /boot ├─sda2 swap 5b1564b2-2e2c-452c-bcfa-d1f572ae99f2 [SWAP] └─sda3 ext4 56adc99b-a61e-46af-aab7-a6d07e504652 /
在上述例子中,只有一个设备可用 (sda
)。此设备有 3 个分区 (从 sda1
到 sda3
),每个分区都有不同的文件系统。
wipefs[编辑 | 编辑源代码]
wipefs 能列出或擦除指定设备上的文件系统、RAID 或分区表签名 (魔术字符串),从而使签名对 libblkid(3) 不可见。它不会擦除文件系统自身,也不会擦除设备上的任何其他数据。
更多信息请参阅 wipefs(8) 。
例如,以下命令将擦除设备 /dev/sdb
的所有签名,并给每个签名创建签名备份文件 ~/wipefs-sdb-offset.bak
:
# wipefs --all --backup /dev/sdb
伪设备[编辑 | 编辑源代码]
无物理设备的设备节点。
- /dev/random,参见 random(4)
- /dev/shm
- /dev/null,参见 /dev/zero 和 null(4)
- /dev/full,参见 full(4)
- /dev/ttyX (其中 X 是一个数字)