一台FreeBSD系统的机器,前段时间刚刚新加载了第二快硬盘,具体操作见:FreeBSD在zfs挂接第二块ssd 硬盘_zfs不能attach附加硬盘-CSDN博客
问题:FreeBSD在一次掉电后,系统无法启动
启动时显示
FreeBSD/x86 boot
Default: zfs:zroot:/boot/kernel/kernel
zio-read error:45
can't find /boot/kernel/kernel
(Default: zfs:zroot:boot)
Bios发现只看到一块盘。其实上次安装第二块盘的时候就没有留意bios里面,当时是安装好直接启动,到FreeBSD里面直接把第二块盘加入到zfs pool里面去了。
所做的操作:
进入boot后
使用lsdev,只能看到一块盘
disk0
disk0p1 p2 p3 p4
这样怀疑就是没认出第二块盘,也就是第二块盘需要进入FreeBSD才能识别出来
使用FreeBSD光盘启动进入单用户模式
lsdev可以看到所有的硬盘,
zpool import 可以看到zroot 库
zpool import zroot 可以加载zroot ,但是会显示
/home 等目录为只读目录,无法建立挂载点。
重装系统
怒了,重新规划,重装系统。
32G作为启动盘
256G作为 数据盘,
每个盘单独划zfs分区。
重装系统后,启动zfs报error6报错(后来想明白了,可能断电导致这块启动盘有点问题了)
初步判断是另一块盘的zroot对它造成了干扰(这个判断是错误的)。
后来想明白了,可能就是启动盘有点问题了。最一开始,应该进入单用户模式,然后修复启动盘:
zpool clear -F zroot ,这样也许就可以不用重装系统了。
总结
zfs很好很强大,一些基本的修复等功能,需要动手实践和学习。
比如通过zpool import 来查看可以导入的zfs分区,通过 zpool import zroot 来导入zroot分区,通过zpool clear -F zroot来修复zroot分区。 当然后面也可以带具体的盘,就行定点修复。