gpart 显示

gpart 显示

服务器重启后控制台上产生以下输出:

ZFS: i/o error - all block copies unavailable
ZFS: failed to read pool zroot directory object
qptzfsboot: failed to mount default pool zroot

FreeBSD/x86 boot
ZFS: i/o error - all block copies unavailable
ZFS: can't fild dataset 0
Default: zroot/<0x0>
boot:

我从 usb livecd 启动主机并将 /etc 目录挂载在 /tmp 下以启用 ssh 访问:

ifconf -a # get available i/f names
ifconf em0 inet 192.168.216.46
route add default 192.168.216.1
hostname vhost06.internal
mkdir /tmp/etc
mount_unionfs /tmp/etc /etc
echo 'PermitRootLogin yes' >> /etc/sshd_config
passwd
Changing local password for root
New Password:
Retype New Password:
service sshd onestart

没有可供导入的 zfs 池:

root@vhost06:~ # zpool status
no pools available
root@vhost06:~ # zpool list
no pools available
root@vhost06:~ # zfs list
no datasets available

gpart显示此几何形状:

gpart 显示

=>         40  15628053088  ada0  GPT  (7.3T)
           40         1024     1  freebsd-boot  (512K)
         1064          984        - free -  (492K)
         2048     16777216     2  freebsd-swap  (8.0G)
     16779264  15611273216     3  freebsd-zfs  (7.3T)
  15628052480          648        - free -  (324K)

=>         40  15628053088  ada1  GPT  (7.3T)
           40         1024     1  freebsd-boot  (512K)
         1064          984        - free -  (492K)
         2048     16777216     2  freebsd-swap  (8.0G)
     16779264  15611273216     3  freebsd-zfs  (7.3T)
  15628052480          648        - free -  (324K)

=>         40  15628053088  ada2  GPT  (7.3T)
           40         1024     1  freebsd-boot  (512K)
         1064          984        - free -  (492K)
         2048     16777216     2  freebsd-swap  (8.0G)
     16779264  15611273216     3  freebsd-zfs  (7.3T)
  15628052480          648        - free -  (324K)

=>         40  15628053088  ada3  GPT  (7.3T)
           40         1024     1  freebsd-boot  (512K)
         1064          984        - free -  (492K)
         2048     16777216     2  freebsd-swap  (8.0G)
     16779264  15611273216     3  freebsd-zfs  (7.3T)
  15628052480          648        - free -  (324K)

=>         40  15628053088  diskid/DISK-VAGWJ6VL  GPT  (7.3T)
           40         1024                     1  freebsd-boot  (512K)
         1064          984                        - free -  (492K)
         2048     16777216                     2  freebsd-swap  (8.0G)
     16779264  15611273216                     3  freebsd-zfs  (7.3T)
  15628052480          648                        - free -  (324K)

=>         40  15628053088  diskid/DISK-VAGWV89L  GPT  (7.3T)
           40         1024                     1  freebsd-boot  (512K)
         1064          984                        - free -  (492K)
         2048     16777216                     2  freebsd-swap  (8.0G)
     16779264  15611273216                     3  freebsd-zfs  (7.3T)
  15628052480          648                        - free -  (324K)

=>         40  15628053088  diskid/DISK-VAHZAD2L  GPT  (7.3T)
           40         1024                     1  freebsd-boot  (512K)
         1064          984                        - free -  (492K)
         2048     16777216                     2  freebsd-swap  (8.0G)
     16779264  15611273216                     3  freebsd-zfs  (7.3T)
  15628052480          648                        - free -  (324K)

=>         40  15628053088  diskid/DISK-VAH3PXYL  GPT  (7.3T)
           40         1024                     1  freebsd-boot  (512K)
         1064          984                        - free -  (492K)
         2048     16777216                     2  freebsd-swap  (8.0G)
     16779264  15611273216                     3  freebsd-zfs  (7.3T)
  15628052480          648                        - free -  (324K)

=>       1  30240767  da0  MBR  (14G)
         1      1600    1  efi  (800K)
      1601   2012560    2  freebsd  [active]  (983M)
   2014161  28226607       - free -  (13G)

=>      0  2012560  da0s2  BSD  (983M)
        0       16         - free -  (8.0K)
       16  2012544      1  freebsd-ufs  (983M)

=>       1  30240767  diskid/DISK-00241D8CE51BB011B9A694C1  MBR  (14G)
         1      1600                                     1  efi  (800K)
      1601   2012560                                     2  freebsd  [active]  (983M)
   2014161  28226607                                        - free -  (13G)

=>      0  2012560  diskid/DISK-00241D8CE51BB011B9A694C1s2  BSD  (983M)
        0       16                                          - free -  (8.0K)
       16  2012544                                       1  freebsd-ufs  (983M)

我怎样才能从这里恢复过来?

<------ 原始问题结束

我取得了一些进展,并成功导入和挂载了一个根数据集 - iocage。这是一个在 zfs 系统上启动但是我找不到包含根文件系统的数据集,所以我无法访问 /var/log 来查看其中是否有任何内容:

mkdir /tmp/zroot                       # /tmp is a writable file system
zpool -f zroot                         # force the zpool import
zfs set mountpoint=/tmp/zroot  zroot   # mount the imported pool in a writable fs
zfs mount -a                           # find and mount all the datasets
ll /tmp/zroot
total 12
drwxr-xr-x  9 root  wheel  11 Feb 27 13:09 iocage/

幸运的是,所有绝对关键的东西都已存在,/zroot/iocage因为主机只是充当监狱的平台。然而,缺少根数据集对我来说很麻烦。

Azpool status显示 zroot 没有错误。

接下来我使用将 iocage 数据集传输到另一个系统zfs send

zfs snapshot -r zroot/iocage@vh6iocsend1
zfs send -R zroot/iocage@vh6iocsend1 | ssh 192.168.216.45 zfs receive zroot/iocagev6

这花了一段时间但已成功完成。

现在我需要启动有问题的主机。昨天中午重新启动了该主机,没有任何问题。我不记得运行过freebsd-update fetch,但即使我运行过,fetch 也没有任何内容可以传送,因为系统已经处于 12.1p2

我仍然需要帮助来启动主机。

<----------

补充笔记:

zpool我能够使用altroot以下选项挂载整个zpool import

  1. 启动进入 live cd shell。
  2. 导入 zfs 池但不允许import自动挂载任何数据集:zpool import -o altroot=/tmp/altroot -N -a
  3. /首先挂载根数据集: zfs mount zroot/ROOT/default
  4. 现在安装剩余的数据集:zfs mount -a

zroot现在可以通过 访问整个池的文件系统/tmp/altroot

我曾用它将zfs send的内容移至/var另一台主机。实际上,我发送了整个池。

但原有系统仍然无法启动。

答案1

作为最后的手段,我从无法启动的主机上拔下了四个硬盘,并将它们放在配置相同的服务器上。该服务器从这些硬盘启动。显然是硬件问题。

新主机上仍存在异常:如果托架 1 被占用,则只有托架 0 或托架 2 中至少有一个被占用时,系统才会启动。配置 0-、1A、2-、3B 将无法启动。我不知道为什么会这样。

答案2

此错误(当服务器无法从 zfs 根池启动,但在另一台机器上导入时池似乎完好无损时)通常表示引导块(加载器正在搜索的内核部分和其他文件,而不是实际的加载器块)已经迁移到假定的 1024 千兆字节之外的某个地方,已知引导加载器能够到达它们,而现在它们位于某个很远的地方,引导加载器无法到达。

这是众所周知的 FreeBSD gptzfs 引导加载程序问题。不幸的是,这些引导块在安装后被放置在分区的开始处附近,因此它就像一颗定时炸弹,爆炸时间未知。

因此,建议(不幸的是,经验丰富的人建议 - 不是手册也不是 bsdinstall)将 zfs 根池设置为小于 1 TB。据了解,这些小根池不会受到影响。

另一个解决方案似乎是(至少据报道)切换到 UEFI 引导加载程序:在处理大磁盘时,它更大并且功能更强大;但gptzfsboot它非常小并且缺乏所需的所有功能。

相关内容