【问题定位】设备强制断电重启后引起的磁盘I/O错误,并且无法读写

背景:

设备正常运行阶段,做了电源硬性OFF->ON操作,设备启动后,发现磁盘分区无法读写。

过程描述:

问题出现启动日志中磁盘I/O相关操作已经报异常:

[ 3894.018424][ 26] EXT4-fs warning (device sda10): ext4_end_bio:323: I/O error 10 writing to inode 12324 (offset 0 size 0 starting block 342551)
[ 3894.031145][ 26] Buffer I/O error on device sda10, logical block 54806
[ 3894.054810][ 26] print_req_error: I/O error, dev sda, sector 685098
[ 3894.061047][ 26] EXT4-fs warning (device sda10): ext4_end_bio:323: I/O error 10 writing to inode 12323 (offset 0 size 0 starting block 342550)
[ 3894.073768][ 26] Buffer I/O error on device sda10, logical block 54805
[ 3894.080271][ 26] JBD2: Detected IO errors while flushing file data on sda10-8
[ 3894.104521][ 26] print_req_error: I/O error, dev sda, sector 576944
[ 3894.134412][ 26] print_req_error: I/O error, dev sdb, sector 3507621328
[ 3894.134416][ 26] EXT4-fs warning (device sdb5): ext4_end_bio:323: I/O error 10 writing to inode 109576257 (offset 0 size 4096 starting block 438452667)
[ 3894.140131][ 26] print_req_error: I/O error, dev sda, sector 576550
[ 3894.146714][ 26] Buffer I/O error on device sdb5, logical block 438451386
[ 3894.160209][ 26] Buffer I/O error on dev sda10, logical block 531, lost sync page write
[ 3894.171469][ 26] print_req_error: I/O error, dev sdb, sector 4966066328
[ 3894.171487][ 26] EXT4-fs error (device sdb5): ext4_read_inode_bitmap:199: comm MergeMutate: Cannot read inode bitmap - block_group = 18947, inode_bitmap = 620757011
[ 3894.171490][ 26] print_req_error: I/O error, dev sdb, sector 721430784
[ 3894.171499][ 26] print_req_error: I/O error, dev sdb, sector 3905818656
[ 3894.171502][ 26] Buffer I/O error on dev sdb5, logical block 488226052, lost sync page write
[ 3894.171554][ 26] print_req_error: I/O error, dev sdb, sector 4966066328
[ 3894.171584][ 26] print_req_error: I/O error, dev sdb, sector 4966066328

进入系统后,查看磁盘情况发现无显示,dmesg信息里出现大量错误信息:

root@localhost:/# fdisk -l  
root@localhost:/# dmesg |tail 
[ 5491.208098][ 24] EXT4-fs error (device sdb5): __ext4_get_inode_loc:4730: inode #23855845: block 95420494: comm gbased: unable to read itable block
[ 5491.208106][ 46] EXT4-fs error (device sdb5) in ext4_do_update_inode:5393: Journal has aborted
[ 5491.208231][ 46] EXT4-fs error (device sdb5) in ext4_reserve_inode_write:5945: Journal has aborted
[ 5491.208416][ 46] EXT4-fs error (device sdb5) in __ext4_new_inode:940: Journal has aborted
[ 5491.208426][ 46] EXT4-fs error (device sdb5) in __ext4_new_inode:940: Journal has aborted
[ 5491.255094][ 42] EXT4-fs error (device sdb5): ext4_journal_check_start:61: Detected aborted journal
[ 5491.255482][ 41] EXT4-fs error (device sdb5) in __ext4_new_inode:940: Journal has aborted
root@localhost:/[ 5491.255497][ 42] EXT4-fs error (device sdb5) in ext4_reserve_inode_write:5945: Journal has aborted
# 
[ 5491.264101][ 41] EXT4-fs (sdb5): Remounting filesystem read-only
[ 5491.317475][ 41] EXT4-fs error (device sda10): ext4_journal_check_start:61: Detected aborted journal
[ 5491.317476][ 41] EXT4-fs (sda10): Remounting filesystem read-only
root@localhost:/[ 5491.350394][ 41] EXT4-fs error (device sdb5): ext4_journal_check_start:61: Detected aborted journal
# 
[ 5491.360789][ 25] EXT4-fs error (device sdb5): mpage_map_and_submit_extent:2607: comm kworker/u134:0: Failed to mark inode 155451465 dirty
[ 5491.405774][ 42] EXT4-fs error (device sdb5) in ext4_do_update_inode:5393: Journal has aborted
root@localhost:/[ 5491.414582][ 27] EXT4-fs error (device sdb5): __ext4_get_inode_loc:4730: inode #23855845: block 95420494: comm gbased: unable to read itable block

使用df可以看到映射,但是无法进行读取操作。

复现验证:

1.通过磁盘修复操作将磁盘修复正常,读写正常,命令参考:fsck.ext4 -a /dev/sdb?
2.做了demo反复对磁盘读写操作中,对设备硬重启。

基于上述3次操作后,又复现了问题;

PS:这里感觉还是跟磁盘品牌有关,因为设备上不止一个磁盘,其中出复现出来的依旧是同一个(没错,是个GC的!)

原因分析:

这里只基于复测情况下进行的问题分析:
a.磁盘在进行读写操作时,需要进行一系列的操作,如寻找磁头、读写磁道、校验数据等等,如果直接断电,磁盘无法正常完成这些操作,可能会导致数据损坏或磁盘损坏。
b.在进行文件写入操作时,数据通常首先被缓存在计算机的RAM中,然后再被写入磁盘,如果在这个过程中强制断电,这可能会导致磁盘上的文件和目录损坏,甚至可能无法访问。
查找资料有个说法:
硬件故障和写入数据丢失是导致磁盘无法访问的常见原因…

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wyh_halo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值