实际上我已经在 ZFS 磁盘 ada0 上安装了日常工作的 FreeBSD 13.1-RELEASE 系统:
=> 40 976773088 ada0 GPT (466G)
40 532480 1 efi (260M)
532520 1024 2 freebsd-boot (512K)
533544 984 - free - (492K)
534528 4194304 3 freebsd-swap (2.0G)
4728832 972044288 4 freebsd-zfs (464G)
976773120 8 - free - (4.0K)
相反,在磁盘 ada2 上,我安装了在驱动器 ada0 上安装的大部分服务和应用程序,有时我切换到此系统(它与 13.1-RELEASE 相同,但在 UFS2 fs 上):
=> 40 625142368 ada2 GPT (298G)
40 532480 1 efi (260M)
532520 616030208 2 freebsd-ufs (294G)
616562728 8388608 3 freebsd-swap (4.0G)
624951336 191072 - free - (93M)
有时,当我在安装在磁盘 ada2 上的系统上时,我想挂载安装在 /dev/ada0p4 上的系统的根分区(磁盘 ada0 上的 FreeBSD-ZFS),为此,我使用以下命令:
zfs mount -a
mount -t zfs -fw zroot/ROOT/31-03-2022-b /mnt/freebsd-zfs
有什么问题 ?问题是它工作了很多时间,但不是每次都有效,我不明白原因。有时,就像现在一样,它会给出以下错误。有没有更安全的方法来挂载 ZFS 分区,使其 100% 正常工作?谢谢。
mount: zroot/ROOT/31-03-2022-b: No such file or directory
更新:我尝试了这个,它几乎成功了,但不幸的是我没有看到磁盘上存储的每个文件和文件夹:
# zpool import -f -R /mnt/freebsd-zfs zroot
ls /mnt/freebsd-zfs tmp
usr var zroot
这也不起作用:
# zpool import -f -R /mnt/freebsd-zfs zroot/ROOT/31-03-2022-b
cannot import 'zroot/ROOT/31-03-2022-b': no such pool available
我想挂载路径“zroot/ROOT/31-03-2022-b”:
# sudo zfs list
NAME USED AVAIL REFER MOUNTPOINT
zroot 216G 230G 96K /mnt/freebsd-zfs/zroot
zroot/ROOT 203G 230G 96K none
zroot/ROOT/31-03-2022-a 512K 230G 43.4G /mnt/freebsd-zfs
zroot/ROOT/31-03-2022-b 203G 230G 175G /mnt/freebsd-zfs
zroot/tmp 10.6M 230G 10.6M /mnt/freebsd-zfs/tmp
zroot/usr 11.7G 230G 96K /mnt/freebsd-zfs/usr
zroot/usr/home 192K 230G 192K /mnt/freebsd-zfs/usr/home
zroot/usr/ports 8.33G 230G 8.33G /mnt/freebsd-zfs/usr/ports
zroot/usr/src 3.36G 230G 3.36G /mnt/freebsd-zfs/usr/src
zroot/var 1.26G 230G 96K /mnt/freebsd-zfs/var
zroot/var/audit 96K 230G 96K /mnt/freebsd-zfs/var/audit
zroot/var/crash 1.11G 230G 1.11G /mnt/freebsd-zfs/var/crash
zroot/var/log 3.59M 230G 3.59M /mnt/freebsd-zfs/var/log
zroot/var/mail 130M 230G 130M /mnt/freebsd-zfs/var/mail
zroot/var/tmp 18.1M 230G 18.1M /mnt/freebsd-zfs/var/tmp
答案1
尝试将altroot
池上的属性设置为/mnt/freebsd-zfs
前导入它或zfs mount
-ing任何数据集。
从man zpoolprops
:
altroot
备用根目录。如果设置,此目录将添加到池中的任何安装点之前。当检查安装点不可信的未知池时,或者在典型路径无效的备用引导环境中时,可以使用此功能。
altroot
不是持久属性。仅当系统启动时有效。设置
altroot
默认为 usingcachefile=none
,尽管这可以使用显式设置覆盖。
请注意,它说“不是持久属性每次您想要导入池并将其数据集挂载到 ufs2 引导环境中时,您都需要执行此操作。