/sys/class/bdi/settings对应哪些设备

/sys/class/bdi/settings对应哪些设备

/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 通配符扩展来自动找出正确的设备类别。

相关内容