我有一台装有 FreeBSD 10.3 的服务器,突然无法重新启动。该服务器已经正常工作了 6 个多月,但从大约 5 个月前到现在,它都没有重新启动过。我最终进入了“mountroot”并出现错误unknown file system
。
当我启动“Rescue”(服务器位于 Hetzner.de 上,也有一个 KVM)时,我能够使用以下命令挂载整个池:zpool import -o altroot=/mnt zroot
。看来池子没问题。
以下所有命令均在 zpool 导入后从 Rescue 运行:
[root@rescue /mnt]# cat /mnt/boot/loader.conf
kern.geom.label.gptid.enable="0"
zfs_load="YES"
vfs.root.mountfrom="zfs:zroot/ROOT/default"
[root@rescue /mnt/boot]# mount
zroot/ROOT/default on /mnt (zfs, local, noatime, nfsv4acls)
zroot/tmp on /mnt/tmp (zfs, local, noatime, nosuid, nfsv4acls)
zroot/usr/home on /mnt/usr/home (zfs, local, noatime, nfsv4acls)
zroot/usr/ports on /mnt/usr/ports (zfs, local, noatime, nosuid, nfsv4acls)
zroot/usr/src on /mnt/usr/src (zfs, local, noatime, nfsv4acls)
zroot/var/audit on /mnt/var/audit (zfs, local, noatime, noexec, nosuid, nfsv4acls)
zroot/var/crash on /mnt/var/crash (zfs, local, noatime, noexec, nosuid, nfsv4acls)
zroot/var/log on /mnt/var/log (zfs, local, noatime, noexec, nosuid, nfsv4acls)
zroot/var/mail on /mnt/var/mail (zfs, local, nfsv4acls)
zroot/var/tmp on /mnt/var/tmp (zfs, local, noatime, nosuid, nfsv4acls)
zroot on /mnt/zroot (zfs, local, noatime, nfsv4acls)
[root@rescue /mnt]# cat /mnt/etc/rc.conf
hostname="stream"
keymap="swedish.iso.kbd"
ifconfig_em0="DHCP"
ifconfig_em0_ipv6="inet6 accept_rtadv"
sshd_enable="YES"
powerd_enable="YES"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="AUTO"
zfs_enable="YES"
lighttpd_enable=YES
游泳池:
[root@rescue /mnt]# zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
zroot 8.12T 5.71T 2.42T - 23% 70% 1.00x ONLINE /mnt
[root@rescue ~]# zfs list -o name,canmount,mountpoint -r zroot/ROOT
NAME CANMOUNT MOUNTPOINT
zroot/ROOT on none
zroot/ROOT/default on /mnt
[root@rescue /mnt]# gpart show
=> 34 17578327997 mfid0 GPT (8.2T)
34 6 - free - (3.0K)
40 1024 1 freebsd-boot (512K)
1064 984 - free - (492K)
2048 4194304 2 freebsd-swap (2.0G)
4196352 17574129664 3 freebsd-zfs (8.2T)
17578326016 2015 - free - (1.0M)
[root@rescue /mnt/boot]# zfs list
NAME USED AVAIL REFER MOUNTPOINT
zroot 5.71T 2.16T 96K /mnt/zroot
zroot/ROOT 5.71T 2.16T 96K none
zroot/ROOT/default 5.71T 2.16T 5.71T /mnt
zroot/tmp 112K 2.16T 112K /mnt/tmp
zroot/usr 688M 2.16T 96K /mnt/usr
zroot/usr/home 5.51M 2.16T 5.51M /mnt/usr/home
zroot/usr/ports 682M 2.16T 682M /mnt/usr/ports
zroot/usr/src 96K 2.16T 96K /mnt/usr/src
zroot/var 5.91M 2.16T 96K /mnt/var
zroot/var/audit 96K 2.16T 96K /mnt/var/audit
zroot/var/crash 96K 2.16T 96K /mnt/var/crash
zroot/var/log 520K 2.16T 520K /mnt/var/log
zroot/var/mail 5.03M 2.16T 5.03M /mnt/var/mail
zroot/var/tmp 96K 2.16T 96K /mnt/var/tmp
断电后 FreeBSD 10 无法启动到 ZFS 根目录与此问题类似,但他的池比我的大得多,我没有看到他遇到的错误。有什么建议吗?
更新:我们设法通过创建一个小型交换分区启动池并从中启动来解决问题。问题似乎是由于启动池太大造成的。启动块无法处理这么大的池,只能读取其中的一部分,并说它不一致。以前当池没有那么满时,它可以正常工作。