Google Compute Engine实例重启失败 报Unrecognized mount option "NOFAIL_OPTION"错误
故障根因
错误日志明确显示第二块磁盘挂载失败是因为fstab配置中使用了无效的挂载参数NOFAIL_OPTION,EXT4文件系统无法识别该参数,导致磁盘挂载失败。由于swapfile存放在该磁盘上,依赖失败触发系统启动流程卡住,最终实例无法正常访问。本次故障仅为配置参数错误,不会损坏两块磁盘上的现有数据。
恢复操作步骤
方式一:通过串行控制台紧急模式修复(优先选择)
系统挂载失败时通常会自动进入紧急模式,串行控制台会提示输入root密码,输入密码进入shell后执行以下操作:
- 编辑fstab配置文件:
vi /etc/fstab - 找到挂载点为
/mnt/disks/rajtek的配置行,将其中的NOFAIL_OPTION替换为正确的参数nofail(该参数作用为磁盘挂载失败不阻塞系统启动)- 修正前示例:
UUID=63be8-b463-45c0-ad15-ce57fbf70a8d /mnt/disks/rajtek ext4 defaults,NOFAIL_OPTION 0 2 - 修正后示例:
UUID=63be8-b463-45c0-ad15-ce57fbf70a8d /mnt/disks/rajtek ext4 defaults,nofail 0 2
- 修正前示例:
- 找到swapfile对应的配置行,同样添加
nofail参数避免后续挂载异常卡启动,修正后示例:/mnt/disks/rajtek/swapfile none swap defaults,nofail 0 0 - 保存退出fstab文件,执行
mount -a验证所有挂载配置无报错 - 执行
systemctl daemon-reload重载systemd配置,再执行reboot重启实例即可恢复正常访问
方式二:挂载系统盘到临时实例修复(无法进入紧急模式时使用)
如果串行控制台无法进入紧急shell,执行以下操作:
- 停止当前故障实例,卸载实例绑定的20GB系统启动盘
- 新建一个正常运行的临时实例,将卸载的系统盘作为数据盘挂载到临时实例,挂载路径设置为
/mnt/recovery - 编辑fstab配置:
vi /mnt/recovery/etc/fstab,按照方式一的规则修正挂载参数 - 保存退出后执行
umount /mnt/recovery卸载恢复盘 - 将恢复盘重新挂载回原故障实例作为启动盘,启动实例即可恢复正常
后续验证
实例启动成功后执行以下命令确认状态正常:
- 执行
df -h确认/mnt/disks/rajtek挂载点正常显示 - 执行
swapon -s确认swapfile正常启用
内容的提问来源于stack exchange,提问作者Chinna Subbaraju Uppalapati
相关产品推荐
相关产品推荐

