“mount -t zfs -fw”无法 100% 地挂载 ZFS 卷

“mount -t zfs -fw”无法 100% 地挂载 ZFS 卷

实际上我已经在 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默认为 using cachefile=none,尽管这可以使用显式设置覆盖。

请注意,它说“不是持久属性每次您想要导入池并将其数据集挂载到 ufs2 引导环境中时,您都需要执行此操作。

相关内容