ls -l /dev/disk/by-id/ 的核心作用是通过硬件固有标识(如型号、序列号)建立稳定映射,将 ata-/nvme-/usb- 等可读ID与 /dev/sdX 或 /dev/nvmeXn1pY 等内核设备路径一一对应,避免因启动顺序变化导致的设备名漂移;同一物理盘会生成无 -partN 的整盘链接和带 -partN 的分区链接,需结合 readlink -f、lsblk 和 fdisk -l 验证实际识别状态,并用 blkid 与 /dev/disk/by-uuid/ 交叉确认文件系统有效性。

用 ls -l /dev/disk/by-id/ 查物理分区底层拓扑,核心是把“人眼可读的硬件标识”和“内核分配的设备路径”建立一一对应关系,避开 /dev/sdX 这类易变名称带来的混乱。
看清设备型号与序列号的真实映射
执行 sudo ls -l /dev/disk/by-id/ 后,输出里每行是一个软链接,左边是带硬件信息的 ID 名,右边箭头指向实际设备节点(如 /dev/sda1)。重点关注以下几类命名:
-
ata-XXXX-partN:表示 SATA 接口硬盘,含厂商型号(如 WDC_WD10EZEX)和序列号,
-part1表示该盘第一个分区 -
nvme-eui.XXXXXX-partN:NVMe 盘用 EUI 标识,
-partN对应 GPT 分区编号(如nvme0n1p2) - usb-XXXX-partN:USB 移动盘,含厂商、产品名及序列号,适合热插拔场景下稳定识别
区分“盘”和“分区”的层级关系
同一个物理盘会生成多个链接,需横向比对:
- 若看到
ata-WDC_WD10EZEX_XXX(无-part)→ 指整块盘,对应/dev/sdb - 同时看到
ata-WDC_WD10EZEX_XXX-part1→ 指该盘第一个分区,对应/dev/sdb1 - 若某盘有多个分区,会出现
-part1、-part2等,它们都指向同一父盘的不同逻辑段
验证是否与当前系统识别一致
仅看链接不够,要确认它真正在用:
- 用
readlink -f /dev/disk/by-id/ata-XXX-part1查出真实路径,再配合lsblk看该设备是否出现在树状结构中 - 对比
sudo fdisk -l /dev/sdb输出中的 Disk 和 Device 行,确认/dev/sdb1的 Start 扇区、Size 是否匹配预期 - 如果某个
-partN链接指向的设备在lsblk中没出现,说明分区未被内核识别(可能未同步分区表,需partprobe)
结合 UUID 做双重确认
/dev/disk/by-id/ 是基于硬件特征,/dev/disk/by-uuid/ 是基于文件系统内容。两者互补:
- 先用
ls -l /dev/disk/by-id/锁定物理位置(哪块盘、哪个分区) - 再查对应分区的 UUID:
sudo blkid /dev/sdb1,然后比对/dev/disk/by-uuid/下是否有同 UUID 的链接 - 若一致,说明该分区已格式化且被系统正确识别;若不一致或缺失,可能是未格式化、文件系统损坏或未触发 udev 规则

















