Cygwin下/proc/partitions与wmic磁盘条目对应关系及匹配方法问询
Cygwin /proc/partitions 磁盘条目与Windows物理磁盘对应关系解答
参考执行输出
- Cygwin环境执行
cat /proc/partitions获取分区列表输出:
> cat /proc/partitions 8 0 500107608 sda 8 1 266240 sda1 8 2 16384 sda2 8 3 472585216 sda3 C:\ 8 4 26214400 sda4 D:\ 8 5 1024000 sda5
- PowerShell环境执行
wmic diskdrive get Name,Model,SerialNumber,Size,Status获取物理磁盘信息输出:
> wmic diskdrive get Name,Model,SerialNumber,Size,Status Model Name SerialNumber Size Status NVMe SAMSUNG MZVLW512 \\.\PHYSICALDRIVE0 0025_38BB_1410_1481. 512105932800 OK
问题1:单磁盘场景下sda与\.\PHYSICALDRIVE0是否为1:1等价对应
单磁盘无虚拟磁盘挂载、无热插拔操作的常规场景下,二者是1:1对应关系。
从给出的输出可以交叉验证:/proc/partitions中sda的总块数为500107608(单位为1KB),换算为字节是500107608 * 1024 = 512110190592B,和wmic返回的\\.\PHYSICALDRIVE0容量512105932800B的差值来自磁盘保留扇区、统计口径差异,属于正常范围,二者指向同一块物理磁盘。
仅在Cygwin启动前执行过磁盘热插拔、挂载过VHD/VHDX类虚拟磁盘的特殊场景下,可能出现Cygwin设备命名缓存和实际磁盘不匹配的问题,这种情况非常少见。
问题2:多磁盘场景下的快速匹配方法
不要直接靠sda/sdb的字母序号和PHYSICALDRIVE0/1的数字序号硬匹配——当主机同时接了NVMe、SATA、USB等不同类型的存储设备时,Cygwin和Windows的磁盘枚举顺序可能不一样,按序号对很容易出错。
用下面的方法就能快速匹配,不需要装额外工具:
- 最靠谱的匹配依据是磁盘总容量:把
/proc/partitions里不带数字后缀的整盘条目(就是sda、sdb这类,排除sda1、sda2这种分区条目)找出来,用它的块数乘1024算出整盘的字节容量,和wmic返回的Size字段比对,容量差在1MB以内的就是同一块盘,日常使用中多块盘容量完全一样的概率极低。 - 甚至不用切到PowerShell,直接在Cygwin里就能完成全部匹配:
- 执行
cat /proc/partitions | grep -E 'sd[a-z]+ +$',拿到所有Cygwin识别到的整盘设备名和对应块数 - 执行
wmic diskdrive get Name,Size,拿到Windows侧所有物理磁盘的设备名和容量 - 按容量把两边的条目对齐就行,操作简单还不会错。
- 执行
内容的提问来源于stack exchange,提问作者knowads
相关产品推荐
相关产品推荐

