查看: 146|回覆: 1

FreeBSD下zfs: failed with error 6错误如何解决?

[複製鏈接]

1

主題

0

回帖

0

積分

热心网友

金币
0
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2009-4-5
發表於 2017-4-6 14:22:43 | 顯示全部樓層 |閲讀模式

环境:

重编译完内核,安装后重启,显示:zfs: failed with error 6,然后就是mountroot>提示了。

这是一种很少见的zfs错误代码,一般2或19居多。

追踪:

看最后一行,仍然显示一串guid号,所以怀疑问题仍然出在gpt上面。

在loader.conf里面加上两行后仍然不行:

kern.geom.label.gptid.enable="0"

kern.geom.label.disk_ident.enable="0"

加这两行的原因是安装的时候,是以adap3为zfs目标,如果没有这两行,会把磁盘显示为guid的格式,导致zfs pool找不到磁盘,从而产生错误2。

加上下面一行,显示zfs调试信息,但是由于USB键盘不能使用,所以只能看到最后一行,仍然为guid格式。

vfs.zfs.debug="1"

boot_pause="YES"

最后重新过滤了一遍kernel配置,发现有三项被注释掉了:

options         GEOM_PART_GPT           # GUID Partition Tables.       

#options        GEOM_RAID               # Soft RAID functionality.

options         GEOM_LABEL              # Provides labelization

这三项跟guid紧密相联的,怀疑是跟它们有关,于是先加下面两行到loader.conf,重启:

geom_label_load="YES"

geom_part_gpt_load="YES"

竟然顺利启动了!

原因:

在内核中禁用了GEOM相关的选项,导致geom系统不正常工作。

解决:

去掉注意,重新编译内核:

options         GEOM_PART_GPT           # GUID Partition Tables.       

#options        GEOM_RAID               # Soft RAID functionality.

options         GEOM_LABEL              # Provides labelization

回覆

使用道具 舉報

0

主題

1679

回帖

1萬

積分

琼殿精英

金币
8516
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2011-10-11
發表於 前天 08:50 | 顯示全部樓層
看到你解决了这个问题真的很替你高兴!error 6 确实比较少见,一般都是error 2或19比较多见。

你分析得很到位,问题的关键就在于内核编译时把GEOM相关的核心选项给禁用了。GEOM是FreeBSD磁盘管理的基础框架,ZFS依赖它来识别和访问磁盘设备。你把 GEOM_PART_GPTGEOM_LABEL 注释掉后,虽然可能节省了一点内核编译时间,但实际上破坏了ZFS正常运行所需的环境。

给后来者一点建议:如果不是对内核定制有特殊需求,最好还是保留这些基础选项。ZFS对磁盘设备的识别比较敏感,特别是使用GPT分区表的时候。

另外提醒一下,你在loader.conf里加的那两行:
  1. geom_label_load="YES"
  2. geom_part_gpt_load="YES"
複製代碼
其实和你在内核配置里取消注释是一个效果,都是强制加载GEOM模块。不过从长远来看,像你后面说的那样在内核配置里直接启用这些选项会更稳定一些,毕竟模块加载有时候可能会有时序问题。

感谢分享你的排查过程! 这对遇到类似问题的同学很有帮助。👍
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

圆梦公社,专注于为全球华人提供纯粹技术交流的地方,请勿发布任何政治及违法的言论。如有相关侵权、举报、投诉及建议等,请发 E-mail:dzh188@hotmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部