/sys/class/bdi
具有设备的预读和脏页比率等设置。它由bdi标识符组织,bdi标识符是major:minor设备号或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:
对应的设备/文件系统?主编号非零的条目是eg 中列出的设备/proc/devices
,但我无法弄清楚其他条目的用途。
答案1
如果您确实需要从虚拟目录中检测随机 BDI 标识符/sys/class/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
这应该可以让您很好地了解那是什么设备。在此示例中,它是sdc
连接到第三个 ATA 接口的设备。
但是,如果您对任何给定设备的 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
它使用 shell 通配符扩展来自动找出正确的设备类别。