![将 MAJ:MIN – 设备号转换为真实磁盘名称](https://linux22.com/image/215825/%E5%B0%86%20MAJ%3AMIN%20%E2%80%93%20%E8%AE%BE%E5%A4%87%E5%8F%B7%E8%BD%AC%E6%8D%A2%E4%B8%BA%E7%9C%9F%E5%AE%9E%E7%A3%81%E7%9B%98%E5%90%8D%E7%A7%B0.png)
从 saX 文件上的 sar 命令我们可以获得磁盘利用率,如下所示
sar -d -f /var/log/sa/sa18 | grep Average
Average: dev8-0 1.24 0.00 150.06 121.40 0.04 30.40 4.72 0.58
Average: dev253-0 0.32 0.00 3.75 11.83 0.01 17.95 3.48 0.11
Average: dev253-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: dev253-2 1.12 0.00 146.31 130.68 0.04 31.79 4.46 0.50
Average: dev8-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: dev8-32 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: dev8-48 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: dev253-3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
我们可以看到定义为 MAJ:MIN 的磁盘为( dev8-16 、 dev8-48 等)
是否可以获得真实的磁盘名称,如 sdb 、 sdc sdc 等?使用sar
CLI ( sar -d -f /var/log/sa/sa18 | grep Average
)
答案1
该文档man sar
告诉您如何获取以下名称的查找sar -d
:
-d
报告每个块设备的活动。显示数据时,设备名称将按其(应该)出现在 中的方式显示/dev
。sar
使用数据/sys
根据主设备号和次设备号确定设备名称。如果此名称解析失败,sar
将使用由/etc/sysstat/sysstat.ioconf
文件控制的名称映射。如果-j
使用选项,也可以打印持久设备名称[...]
总之,
- 它应该已经发生了
- 如果没有,您可以将它们添加到
/etc/sysstat/sysstat.ioconf
- 您可能更喜欢使用其中一种
-j {option}
选项,例如LABEL
.
我最近在我的 Pi 上启用了系统记帐。显然,统计运行并不重要,但我已经可以看到在这台机器上磁盘名称正确显示:
sar -d -f /var/log/sysstat/sa18
Linux 4.9.35-v7+ (pi) 18/01/23 _armv7l_ (4 CPU)
12:16:05 LINUX RESTART (4 CPU)
12:40:01 DEV tps rkB/s wkB/s dkB/s areq-sz aqu-sz await %util
12:42:08 mmcblk0 3.37 14.35 19.58 0.00 10.06 0.08 23.15 0.58
12:42:08 dm-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: mmcblk0 3.37 14.35 19.58 0.00 10.06 0.08 23.15 0.58
Average: dm-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
我想知道您是否已将sa*
文件复制到不同的服务器进行分析?在这种情况下,您可能确实需要编辑sysstat.ioconf
来命名它们。
答案2
尝试这个:
#! /bin/bash
devrez()
{
l=/sys/dev/block/`echo "$1" | sed 's/dev//g;s/-/:/g'`
test ! -L "$l" && echo "[$1] not found" && return -1
readlink -f "$l" | awk -F / '{ORS="";print "\t"$NF}'
}
export -f devrez
sar -d -f /var/log/sa/sa18 | awk '{OFS="\t";ORS="";print $1; system("/bin/bash -c '\''devrez "$2"'\''");$1="";$2="";print "";print;print "\n"}'