linux ata4 serror,linux – 如何将kern.log错误消息中的ataX.0标识符映射到实际的/ dev / sdY设备?...

请考虑以下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,sata

来源: https://codeday.me/bug/20190809/1630749.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值