/sys/class/bdi为诸如readahead和设备的脏页比率等设置。它是由bdi标识符组织的,bdi标识符主要是:次要设备号或由文件系统设置的st_dev值。我的/sys/class/bdi包含:
$ ls /sys/class/bdi/
0:184 0:342 0:345 0:374 0:39 0:40 0:404 0:405 0:42 253:0 253:1 7:0 7:1 8:0 8:16 8:32 default我的问题是:我如何知道0:条目对应的设备/文件系统?具有非零主要数字的条目是在例如/proc/devices中列出的设备,但是我不知道其他条目是用于什么的。
发布于 2022-08-20 09:46:29
如果您确实需要从虚拟目录/sys/class/bdi中检测随机BDI标识符,我建议您执行以下操作
$ sudo find /sys -type l -exec ls -la {} + | grep -E '(bdi|block)/8:32'
lrwxrwxrwx 1 root root 0 Aug 20 12:33 /sys/class/bdi/8:32 -> ../../devices/virtual/bdi/8:32
lrwxrwxrwx 1 root root 0 Aug 20 12:33 /sys/devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0/block/sdc/bdi -> ../../../../../../../../virtual/bdi/8:32
lrwxrwxrwx 1 root root 0 Aug 20 12:33 /sys/devices/virtual/bdi/8:32/subsystem -> ../../../../class/bdi
lrwxrwxrwx 1 root root 0 Aug 20 12:33 /sys/dev/block/8:32 -> ../../devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0/block/sdc如果您想知道的标识符是8:32。但是,如果您已经知道BDI指向阻塞设备,则可以简单地读取虚拟目录/sys/dev/block中的链接。例如
$ readlink /sys/dev/block/8:32
../../devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0/block/sdc这会让你很好地理解那是什么装置。在本例中,它是连接到第三个ATA接口的设备sdc。
但是,如果您对任何给定设备的BDI设置感兴趣,可以简单地读取虚拟目录中的虚拟文件,例如:
$ grep . /sys/block/sda/bdi/*
/sys/block/sda/bdi/max_ratio:40
/sys/block/sda/bdi/min_ratio:0
grep: /sys/block/sda/bdi/power: Is a directory
/sys/block/sda/bdi/read_ahead_kb:128
/sys/block/sda/bdi/stable_pages_required:0
grep: /sys/block/sda/bdi/subsystem: Is a directory我想这在大多数情况下也适用:
$ readlink /sys/dev/*/8:32
../../devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0/block/sdc它使用外壳外显卡扩展自动计算出正确的设备类。
https://unix.stackexchange.com/questions/710610
复制相似问题