linux – 如何将kern.log错误消息中的ataX.0标识符映射到实际的/ dev / sdY设备?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 如何将kern.log错误消息中的ataX.0标识符映射到实际的/ dev / sdY设备?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2334字,纯文字阅读大概需要4分钟。
内容图文
![linux – 如何将kern.log错误消息中的ataX.0标识符映射到实际的/ dev / sdY设备?](/upload/InfoBanner/zyjiaocheng/959/b237b79c32b047c3adc4a09ad80824fb.jpg)
请考虑以下kern.log片段:
ata4.00: failed command: WRITE FPDMA QUEUED
ata4.00: cmd 61/00:78:40:1e:6c/04:00:f0:00:00/40 tag 15 ncq 524288 out
res 41/04:00:00:00:00/04:00:00:00:00/00 Emask 0x1 (device error)
ata4.00: status: { DRDY ERR }
ata4.00: error: { ABRT }
ata4: hard resetting link
ata4: nv: skipping hardreset on occupied port
ata4: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
ata4.00: configured for UDMA/133
ata4: EH complete
如何确定内核在谈到ata4.00时实际意味着哪个硬盘?
如何找到相应的/ dev / sdY设备名称?
解决方法:
您可以通过遍历/ sys树找到相应的/ dev / sdY设备:
$find /sys/devices | grep '/ata[0-9]\+/.*/block/s[^/]\+$' | sed 's@^.\+/\(ata[0-9]\+\)/.\+/block/\(.\+\)$@\1 => /dev/\2@'
使用更有效的/ sys遍历(参见lsata.sh):
$echo /sys/class/ata_port/ata*/../../host*/target*/*/block/s* | tr ' ' '\n' | awk -F/ '{printf("%s => /dev/%s\n", $5, $NF)}'
2磁盘系统的示例输出:
ata1 => /dev/sda
ata2 => /dev/sdb
然后,为了可靠地识别您需要将/ dev / sdY映射到序列号的实际硬件,例如:
$ls /dev/disk/by-id -l | grep 'ata.*sd[a-zA-Z]$'
lssci
lssci实用程序也可用于派生映射:
$lsscsi | sed 's@^\[\([^:]\+\).\+\(/dev/.\+\)$@\1,\2@' | awk -F, '{ printf("ata%d => %s\n", $1+1, $2) }'
请注意,相关的lsscsi枚举从0开始,而ata枚举从0开始.
系统日志
如果没有其他工作,可以查看syslog / journal来派生映射.
/ dev / sdY设备的创建顺序与在kern.log中枚举ataX标识符的顺序相同,同时忽略非磁盘设备(ATAPI)和未连接的链接.
因此,以下命令显示映射:
$grep '^May 28 2' /var/log/kern.log.0 | grep 'ata[0-9]\+.[0-9][0-9]: ATA-' | sed 's/^.*\] ata//' | sort -n | sed 's/:.*//' | awk ' { a="ata" $1; printf("%10s is /dev/sd%c\n", a, 96+NR); }'
ata1.00 is /dev/sda
ata3.00 is /dev/sdb
ata5.00 is /dev/sdc
ata7.00 is /dev/sdd
ata8.00 is /dev/sde
ata10.00 is /dev/sdf
(请注意,不显示ata4,因为上述日志消息来自其他系统.)
我使用/var/log/kern.log.0而不是/var/log/kern.log,因为引导消息已经被轮换.我问到5月28日2,因为这是最后一次启动时间,我想忽略以前的消息.
要验证映射,您可以通过查看以下输出进行一些检查:
$grep '^May 28 2' /var/log/kern.log.0 | grep 'ata[0-9]\+.[0-9][0-9]: ATA-'
May 28 20:43:26 hn kernel: [ 1.260488] ata1.00: ATA-7: SAMSUNG SV0802N, max UDMA/100
May 28 20:43:26 hn kernel: [ 1.676400] ata5.00: ATA-5: ST380021A, 3.19, max UDMA/10
[..]
你可以将这个输出与hdparm输出进行比较,例如:
$hdparm -i /dev/sda
/dev/sda:
Model=SAMSUNG SV0802N [..]
(使用内核2.6.32-31)
内容总结
以上是互联网集市为您收集整理的linux – 如何将kern.log错误消息中的ataX.0标识符映射到实际的/ dev / sdY设备?全部内容,希望文章能够帮你解决linux – 如何将kern.log错误消息中的ataX.0标识符映射到实际的/ dev / sdY设备?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。