XFS 文件系统挂载不上,提示 wrong fs type, bad option, bad superblock

起因

  这些天一直在折腾小主机,由于看不见,所以我经常拿来云映像,改完 root 密码,允许 root 通过 SSH 登录之后就直接刷入小主机。这都没啥,但是如果要在小主机上继续改造云映像呢?好吧问题就这样让你发现了。

  也许是偷懒的缘故吧,我更喜欢在小主机上安装红帽系的 Linux。虽然红帽后台的大老板 IBM 骚操作不断,频频引起公愤,但 10 年的支持周期的确有点诱人。我又不是直接用小主机跑各种业务软件,系统的库文件版本老就老呗,我不用隔上几年就钻到洞里面拆装硬盘就心满意足了。

遇到问题

  今天我又要改造一个云映像了,当然是拿先前刷进小主机的映像继续改。我心想反正是一样的系统版本,改造起来可以避免由于版本差异带来的问题。这个想法很美好,可惜好事多磨呀。

mount: /mnt: wrong fs type, bad option, bad superblock on /dev/nbd0p5, missing codepage or helper program, or other error. 把这句话机翻之后得到的是:mount: /mnt: 错误的文件系统类型、错误的选项、/dev/nbd0p5 上的错误超级块、缺少代码页或帮助程序或其他错误。

尝试解决

  时间仓促也不管是什么问题了,拿到一台 Debian 机器就开始挂载,结果一切成功,没有任何报错。奇怪吧?不过去 Debian 系统挂载显然是权宜之计,而且非常反直觉。百思不得其解,于是我去 Google 一顿搜索,关键词就是上面那段报错信息,唯一的不同就是我把设备路径和挂在路径隐去了。结果搜出来的全是 Ubuntu 上的问答,答案无外乎就是说需要格式化分区。我在报错信息之前添加 CentOS XFS,然后就搜索出了答案。

  原来,XFS 为了防止同一个文件系统被多次挂载,在格式化硬盘并创建文件系统时会给文件系统打上 UUID。挂载分区时,XFS 检测到当前挂载了相同 UUID 的分区,就会拒绝执行挂载。当时就是用同一份云映像刷写了小主机,所以在小主机上就不能挂载这个云映像了。

解决问题

  知道了产生问题的原因,怎么解决问题呢?只需要在挂载时使用 nouuid 参数即可。就像这样:mount -o defaults,nouuid /dev/nbd0p5 /mnt

好了,其实只要在遇到问题时,多看看日志,相对来说就更容易定位到问题,mount 所说的原因太过于笼统。

参考资料

Server Fault – mount: wrong fs type, bad option, bad superblock on /dev/xvdf1, missing codepage or helper program, or other error

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注