我的家庭文件/媒体服务器(debian 8.11)上有一个有趣的问题,我无法追踪。最近几天,我在 dmesg 中不断看到以下消息:
Buffer I/O error on device sdg, logical block 5
有时我会在日志中看到更多
[331645.357795] Buffer I/O error on device sdg, logical block 7
[331826.255867] sd 14:0:0:0: [sdg] Command timed out
[331826.255875] sd 14:0:0:0: [sdg]
[331826.255879] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[331826.255883] sd 14:0:0:0: [sdg]
[331826.255886] Sense Key : Not Ready [current]
[331826.255892] sd 14:0:0:0: [sdg]
[331826.255896] Add. Sense: Logical unit is in process of becoming
ready
[331826.255899] sd 14:0:0:0: [sdg] CDB:
[331826.255902] Read(10): 28 00 00 00 00 00 00 00 01 00
[331826.255915] end_request: I/O error, dev sdg, sector 0
[331826.257606] Buffer I/O error on device sdg, logical block 0
[331833.213945] sd 14:0:0:0: timing out command, waited 180s
[331833.215687] sd 14:0:0:0: [sdg] Command timed out
[331833.215692] sd 14:0:0:0: [sdg]
[331833.215695] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[331833.215699] sd 14:0:0:0: [sdg]
[331833.215701] Sense Key : Not Ready [current]
[331833.215717] sd 14:0:0:0: [sdg]
[331833.215731] Add. Sense: Logical unit is in process of becoming
ready
[331833.215735] sd 14:0:0:0: [sdg] CDB:
[331833.215737] Read(10): 28 00 00 00 00 01 00 00 07 00
问题是,我找不到 sdg 是什么设备?!?!
我假设它是某种块设备,但是我的服务器中只有 6 个物理驱动器(sda、sdb、sdc、sdd、sde、sdf)
- sda = 操作系统安装驱动器。物理磁盘。
- sdb & sdc - MDADM RAID 0 作为 /dev/md1。物理磁盘。
- sdd & sde - MDADM RAID 0 作为 /dev/md0。物理磁盘。
- sdf——用于夜间备份的外部 USB 驱动器。
我尝试运行fdisk -l /dev/sdg
但命令就挂起了。
ls -all /dev/disk/by-id/ | grep sdg
返回 0 个结果。
我插入了一个 USB 拇指驱动器并将其安装为 /dev/sdh,因此由于某种原因它跳过了 /dev/sdg。
smartctl -a /dev/sdg
返回以下内容:
smartctl 6.4 2014-10-07 r4002 [x86_64-linux-3.16.0-4-amd64] (local
build)
Copyright (C) 2002-14, Bruce Allen, Christian Franke,
www.smartmontools.org
Read Device Identity failed: scsi error device will be ready soon
A mandatory SMART command failed: exiting. To continue, add one or
more '-T permissive' options.
cat /proc/diskstats
返回:
8 96 sdg 596 867 1458 163968604 0 0 0 0 1 68509944 164194776
/etc/fstab 中没有任何内容引用 /dev/sdg。
除了运行 samba/ssh 在我的家庭网络共享文件之外,安装的唯一其他应用程序是 Plex 媒体服务器,但我认为这些应用程序都不会在我的系统上创建块设备。
当得知不是我的保存数据的任何磁盘出现错误时,我感到有点宽慰,但现在的问题是我如何弄清楚 sdg 是什么以及为什么它会抛出这些错误?
关于如何追踪这个 sdg 驱动器,您有什么想法吗?
答案1
理论上lsblk -O /dev/sdg
应该能告诉你很多。但是有两个问题:
- 无论如何,故障设备可能报告的都很少。
通常, 的输出
lsblk -O
是模糊的,因为长行会在终端中换行,整个输出变得不可读。为了解决这个问题:使用具有方便的水平滚动功能的寻呼机,例如:
lsblk -O /dev/sdg | less -S -# 8
或者重定向到一个文件(
lsblk -O /dev/sdg >/tmp/lsblk_sdg
)并在任何可以正确显示非换行和滚动的编辑器中检查该文件;- 或一次查看几列,如
lsblk -o VENDOR,MODEL,SERIAL
(运行lsblk --help
以了解所有可用列)。
或者,cd
看看/sys/class/block/sdg/device
你能找到什么(例如cat model
)。同样,如果设备有故障,你可能无法检索到太多信息。
另外,dmesg
在设备重启后首次被发现时,可以找到其中的条目(或日志中的条目)。它们可能会或可能不会告诉你一些事情。