-e 7 是关键一步,因 loop 设备内核主设备号恒为 7,-e 按主设备号过滤,可从设备树层面彻底剔除所有 loop 设备,结果可靠且不依赖用户态状态。

直接用 lsblk -e 7 -d 就能排除 loop 设备、只显示真实磁盘本体,但若要更精准反映物理链路与总线拓扑,需叠加 -t(topology)并合理排除干扰设备。
为什么 -e 7 是关键一步
loop 设备在内核中主设备号固定为 7(如 /dev/loop0 的 brw-rw---- 1 root disk 7, 0),-e 参数按主设备号过滤,不是按设备名。所以:
-
lsblk -e 7会从输出中彻底剔除所有 loop 设备,无论是否被 snap/flatpak 挂载 - 它不依赖用户态进程状态,是内核设备树层面的干净过滤,结果可靠
- 单独使用时仍会显示分区、LVM、加密层等子节点,需配合 -d 控制层级
聚焦真实磁盘:推荐组合 -e 1,7,11 -d
仅排除 loop(7)还不够——RAM 盘(1)、光驱/ROM(11)也非真实存储介质,且默认 lsblk 并不自动排除它们:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
-
-e 1,7,11同时排除 ram、loop、rom/scd 类设备 -
-d强制只显示 TYPE=disk 的顶层设备,跳过所有 part/lvm/rom 子项 - 这样输出只剩 sda、nvme0n1、vdb 等真正承载数据的磁盘设备
查看物理链路与总线拓扑:必须加 -t
-t(--topology)选项会额外显示物理连接参数,这才是识别真实总线路径的核心:
- 输出新增
RM(可移动性)、ROTA(是否旋转介质)、RA(预读值)、RAQ(队列深度)等列 -
RM=0+ROTA=0基本对应 NVMe SSD;RM=0+ROTA=1多为 SATA HDD - 结合设备名规律(
nvme*→ PCIe 总线,sd*→ SCSI/SATA,vd*→ virtio-blk 虚拟总线)可反推底层链路
实用命令与验证方式
一条命令搞定真实磁盘+拓扑:
lsblk -e 1,7,11 -d -t -o NAME,SIZE,TYPE,ROTA,RA,RM,MODEL
说明:
-
-o自定义列,MODEL可显示硬盘型号(部分 NVMe/virtio 设备支持) - 对比执行
lsblk | grep loop和lsblk -e 7 | grep loop,后者应无任何输出 - 若仍有疑似虚拟设备残留,检查
ls -l /sys/block/中设备 symlink 指向,确认是否为 qemu/kvm/virtio 虚拟总线










