了解 /dev/disk/by- 文件夹

erc*_*rch 8 linux mount fstab uuid

问题/dev/disk/by-path描述什么?这是在哪里记录的?

仔细看看文件夹中显示的内容的含义/dev/disk/by-,我想知道这是正确的吗?

  • by-id → 基于硬件设备的序列号
  • by-label → 为该磁盘手动设置的任何名称
  • by-path?!
  • by-uuid通用唯一标识符:唯一创建的字符串来标识磁盘 [通过系统完成]


[注意:我在 GNU/Linux Debian 7、Crunchbang 上工作,如果这很重要……]

Mir*_*kár 13

Mountpoint/devdevtmpfs文件系统,udev完全由其管理。因此,有关详细信息,我们必须转到udev配置。

2 udev 规则通常处理这个

$ grep -ri '/dev/disk' /usr/lib/udev/rules.d/
/usr/lib/udev/rules.d/60-persistent-storage.rules:# persistent storage links: /dev/disk/{by-id,by-uuid,by-label,by-path}
/usr/lib/udev/rules.d/13-dm-disk.rules:# These rules create symlinks in /dev/disk directory.
Run Code Online (Sandbox Code Playgroud)

60-persistent-storage.rules 提及

# by-path (parent device path)
ENV{DEVTYPE}=="disk", DEVPATH!="*/virtual/*", IMPORT{builtin}="path_id"
ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH}"
ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH}-part%n"
Run Code Online (Sandbox Code Playgroud)

最后ID_PATH是基于其物理硬件位置/连接的设备的唯一标识符(例如 ID_PATH=pci-0000:02:04.0-scsi-0:0:0:0 之类的东西)。

ID_PATH来自调用的内置 udev 程序path_id(例如 for /sys/block/sdc

$ udevadm test-builtin path_id /sys/block/sdc
calling: test-builtin
=== trie on-disk ===
tool version:          204
file size:         5632867 bytes
header size             80 bytes
strings            1260755 bytes
nodes              4372032 bytes
load module index
ID_PATH=pci-0000:00:14.0-usb-0:1:1.0-scsi-0:0:0:0
ID_PATH_TAG=pci-0000_00_14_0-usb-0_1_1_0-scsi-0_0_0_0
Run Code Online (Sandbox Code Playgroud)

我们可以将它与

drwxr-xr-x 6 root root 0 Aug 15 02:30 /sys/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/
Run Code Online (Sandbox Code Playgroud)

最后,如果有人对细节感兴趣,请参阅源代码