linux磁盘读写错误,记一次断电偶然导致Linux磁盘I/O故障无法读写

机房偶然的一次断电中,恢复服务器后出现了 无法读写磁盘。

其他挂载的磁盘均无异常

查询日志得知

[root@huidou03 data]# dmesg|greperror

[Firmware Warn]: GHES: Poll interval is0 for generic hardware error source: 1, disabled.

sas: ata1: end_device-0:0: dev error handler

sas: sas_eh_handle_sas_errors: task0xffff880377ee3840is aborted

sas: sas_eh_handle_sas_errors: task0xffff880377ee35c0is aborted

sas: ata1: end_device-0:0: cmd error handler

sas: ata1: end_device-0:0: dev error handler

sas: sas_ata_task_done: SAS error 8a

ata1.00: failed to IDENTIFY (I/O error, err_mask=0x5)

end_request: I/O error, dev sda, sector 1950622088end_request: I/O error, dev sda, sector 1950622080JBD2: I/O error detected when updating journal superblock for sda1-8.

EXT4-fs error (device sda1) inadd_dirent_to_buf: Journal has aborted

EXT4-fs error (device sda1) inext4_rename: Journal has aborted

EXT4-fs (sda1): previous I/O error to superblock detected

EXT4-fs error (device sda1) inext4_da_writepages: IO failure

EXT4-fs (sda1): previous I/O error to superblock detected

EXT4-fs error (device sda1): ext4_journal_start_sb: Detected aborted journal

JBD2: Detected IO errorswhile flushing file data on sda1-8EXT4-fs error (device sda1): __ext4_get_inode_loc: unable to read inode block - inode=23068673, block=92274720EXT4-fs error (device sda1): __ext4_get_inode_loc: unable to read inode block - inode=33292289, block=133169184EXT4-fs error (device sda1): __ext4_get_inode_loc: unable to read inode block - inode=83623937, block=334495776EXT4-fs error (device sda1): __ext4_get_inode_loc: unable to read inode block - inode=105906177, block=423624736EXT4-fs error (device sda1): __ext4_get_inode_loc: unable to read inode block - inode=94109697, block=376438816EXT4-fs error (device sda1): __ext4_get_inode_loc: unable to read inode block - inode=87818241, block=351272992EXT4-fs error (device sda1): __ext4_get_inode_loc: unable to read inode block - inode=20840449, block=83361824

磁盘挂了。。。

我单纯的以为 可能是系统I/O异常 就reboot 重启了。

发现无法进入系统, 又报 BIOS  异常,又报无法找到启动盘

我晕了。

调整思路开始操作

断电,拆机,重置BIOS,插电,开机

一顿猛如虎的操作,结果依旧异常

后断电静置了10分钟

插电,开机,进救援模式

按 ‘e’ 到第二行里 加了 'selinx=0'

重启,终于能进系统了。

然后就报 UUID:XXXXXX 一堆 error。。。

赶紧把出故障的 磁盘 在  /etc/fstab 里面对应的 UUID 给注释掉, 因为系统启动时会自动 mount UUID 对应的磁盘

因为那个出了故障 所以启动时无限报错,可以 df -h 查询到该磁盘 ,但是无法读取内容

回报故障

ls: cannot access xxx: Input/output error

这时候就要进入 单用户模式 进行修复了

[root@huidou03 data]#init 1[root@huidou03 data]# runlevel

N1

让他自动修复、

fsck.ext4 -a  /dev/sda1

[root@huidou03 data]# fsck.ext4 /dev/sda1

xxxxxxx/dev/sda1 clear xxxxx

再将   /etc/fstab 里面对应的 UUID 给注释去掉

reboot 重启

完美搞定!

fsck简介

fsck不仅可以对文件系统进行扫描,还能修复文件系统的一些问题,要注意:fsck扫描文件系统时一定要在单用户模式下,修复模式下,或者把磁盘umount 后进行。

警告:如果扫描运行中的系统,会造成系统文件的损坏。

文件系统扫描工具有很多,其中fsck默认支持文件系统ext2,如果是其他的文件系统就需要fsck.ext3

最好通过不同的文件系统来调用不同的扫描工具。

必要参数:

-a 非互交模式,自动修复

-c 检查是否存在有损坏的区块。

-C fsck.ext3命令会把全部的执行过程,都交由其逆向叙述,便于监控程序

-d 详细显示命令执行过程

-f 强制进行检查

-F 检查文件系统之前,先清理该保存设备块区内的数据

-l 把文件中所列出的损坏区块,加入标记

-L 清除所有损坏标志,重新标记

-n 非交互模式,把欲检查的文件系统设成只读

-P  设置fsck.ext2命令所能处理的inode大小为多少

-r 交互模式

-R 忽略目录

-s 顺序检查

-S 效果和指定“-s”参数类似

-t  显示fsck.ext2命令的时序信息。

-v 显示详细的处理过程

-y 关闭互动模式

查看当前运行级别:runlevel 切换到单用户模式下:init 1  然后再使用fsck命令修复。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值