银河麒麟系统出现I/O错误、文件复制失败、“只读文件系统”提示、initramfs卡死或dmesg持续报I/O错误,表明硬盘存在物理坏道或ext4/xfs元数据损坏,需立即停止写入并备份。

识别磁盘坏道与文件系统错误的典型症状
银河麒麟系统出现“Input/output error”、文件复制失败、保存文档时弹出“只读文件系统”、启动卡在initramfs界面,或dmesg中持续刷出“end_request: I/O error”,这些都不是偶然报错,而是硬盘存在物理坏道或ext4/xfs元数据损坏的明确信号。此时若强行写入,可能加速数据丢失。
用smartctl快速判断是否为物理坏道
该方法无需卸载磁盘,支持热检测,是排查的第一步。
执行sudo smartctl -a /dev/sda | grep -E "(Reallocated_Sector|Current_Pending|Raw_Read_Error)",重点看三项数值:Reallocated_Sector_Ct超过5、Current_Pending_Sector非零、Raw_Read_Error_Rate持续上升,【说明硬盘已出现不可逆物理损伤,必须立即停止写入并备份】。
若输出为空或提示“SMART support is unavailable”,说明该硬盘不支持S.M.A.R.T.,需跳过此步直接进入badblocks扫描。
使用badblocks定位并屏蔽坏扇区(ext4适用)
这是对已确认存在坏道的硬盘进行数据保全的关键操作,必须在分区未挂载状态下执行。
第一步:运行sudo umount /dev/sda2;若提示“target is busy”,则先执行sudo lsof +D /mount/point查占用进程并kill -9终止。
第二步:执行只读扫描并记录坏块位置:sudo badblocks -v -s /dev/sda2 > /tmp/badsectors.txt 2>&1。该过程耗时较长,-v显示进度,-s实时刷新,切勿中断。
第三步:将坏块列表写入ext4文件系统预留区:sudo e2fsck -l /tmp/badsectors.txt /dev/sda2。这一步会把坏扇区加入内核坏块表,后续分配数据块时自动避开。
第四步:验证屏蔽是否生效:sudo dumpe2fs -h /dev/sda2 | grep -i "bad",确认输出中Bad blocks count大于0。
修复因坏道引发的文件系统结构损坏
当badblocks已发现坏扇区,且系统又报“EXT4-fs error”或无法挂载时,说明关键元数据(如超级块、inode位图)恰好落在坏道上,需组合使用fsck与debugfs。
方法一:强制fsck修复(适用于轻度损坏)
确保分区已卸载后,运行sudo fsck -y -f /dev/sda2。-f参数强制检查,-y自动确认修复,但若报“Group descriptors corrupted”,说明主超级块损坏,需转方法二。
方法二:用debugfs加载备份超级块人工干预
先执行sudo dumpe2fs -h /dev/sda2 | grep -i "superblock backup"获取备份位置(如32768);再运行sudo debugfs -b 4096 -s 32768 /dev/sda2进入交互模式;输入stat /验证根目录inode是否可读;若异常,退出后执行sudo e2fsck -b 32768 -y /dev/sda2指定备份块强制修复。
使用系统修复助手图形化完成坏道隔离与文件系统修复
如果你无法记住命令或担心误操作,银河麒麟官方LiveCD中的“系统修复助手”已集成完整流程,全程中文向导,无需记忆参数。
制作好Kylin LiveCD启动U盘后,重启选择“系统修复助手”→“磁盘修复”→选择目标磁盘→勾选“扫描坏道并标记”和“修复文件系统错误”→点击“开始”。工具会自动执行badblocks扫描、e2fsck修复、xfs_repair(如为XFS)、以及坏块写入文件系统保留区的全部动作。
注意:该工具仅支持ext4和xfs两种文件系统,若为btrfs或其它类型,请勿选择此项。











