Technology · 实用指南
Linux 报“Input/output error”?运行 fsck 前先证明故障层
停止写入,把准确路径映射到挂载点与后端,保存第一条内核或服务错误,只修复已证明的层并核对原字节。

“Input/output error”只是 EIO,并不是根因。它可能来自本地设备或线缆、文件系统元数据、网络传输、失效的 FUSE/9p 会话,或实现用户态文件系统的程序。盲目重启或修复可能清除第一条关键证据。
先停止对受影响路径的新写入,记录准确操作和时间,把路径映射到挂载点及后端,保存第一条底层错误与仍可读取的数据,再选择一个分支,并用已知字节验证原路径。
1. 冻结事故并保护唯一可读副本
记录完整命令、路径、时间、退出状态和第一行 stderr。停止所有触碰该挂载点的写入、定时任务、数据库服务和自动清理。
仍有数据可读时,先复制不可替代的部分到独立存储,记录跳过文件和哈希;部分复制不能冒充已验证备份。
2. 把路径映射到真实挂载点与后端
记录路径解析、挂载命名空间、文件系统类型、来源和选项,区分本地块设备、LVM、加密、RAID、远程共享、FUSE、容器挂载与 WSL 9p。
逐层映射路径到挂载点、来源、映射器或阵列,再到物理或远程端点;无关磁盘健康不代表目标路径健康。
3. 保存第一条底层错误
重启前按时间读取内核和服务日志,保存第一条 I/O、传输、文件系统或控制器错误及其设备、块、inode、服务器或会话身份。
远程或用户态文件系统还要保存客户端与服务端日志;若独立只读挂载可读取同一字节而旧会话仍 EIO,应保留会话边界证据。
4. 只修复已证明的责任层
本地块设备先检查线缆、电源、控制器和设备健康;阵列、映射器或远程共享使用对应恢复流程,先稳定硬件再信任元数据修复。
只运行与真实文件系统匹配的检查器,尽量在已验证救援环境和卸载状态执行;不要因 EIO 就对 NTFS、XFS、Btrfs 或网络挂载运行 e2fsck。
5. 验证原路径与数据契约
修复或重挂后,经相同命名空间与服务路径重放原操作,读取已知文件、比较哈希,并确认来源、类型和错误计数稳定。
保存事故账本:首错、责任层、保全结果、修复命令、工具输出和验收证据;若再次出现 I/O 错误,立即回到保全阶段。
