AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 701517
Accepted
Simon Baldwin
Simon Baldwin
Asked: 2022-05-06 03:01:59 +0800 CST2022-05-06 03:01:59 +0800 CST 2022-05-06 03:01:59 +0800 CST

如何在 FreeBSD 中挂载 ZFS 卷以进行克隆

  • 772

我正在尝试将 FreeBSD 安装克隆到新硬盘驱动器上,需要挂载它,然后找到挂载点才能继续进行克隆过程。

我要克隆到的内部驱动器当前具有 Windows 10 安装和我想要克隆的不太优化的 FreeBSD 安装。

我很高兴为 FreeBSD 使用当前的 UFS 分区方案。

我将从一个实时的 FreeBSD USB 记忆棒启动,以便运行适当的命令。我遇到的问题是我要从中克隆的磁盘是使用 ZFS 分区的,我无法弄清楚如何挂载它以及如何找到挂载点。该磁盘使用 USB-SATA 适配器连接到我的计算机。

freebsd zfs
  • 1 1 个回答
  • 813 Views

1 个回答

  • Voted
  1. Best Answer
    Jim L.
    2022-05-06T08:54:23+08:002022-05-06T08:54:23+08:00

    我将假设您的“源”安装完全在 ZFS 上,并且直接从 ZFS 池引导。

    由于您要在两种不同的文件系统类型之间进行克隆,因此您可能需要使用类似的工具rsync来完成此操作。您将在一个挂载点挂载源层次结构(您的 ZFS 池),并在不同的挂载点挂载目标层次结构(一个或多个 UFS 文件系统)。最后,您将使用rsync将源层次结构复制到目标。

    从阅读zpool手册页开始。 zpool有许多子命令,每个子命令都有自己的手册页。对于初学者,请注意以下zpool import命令:

     zpool-import(8)
             Make disks containing ZFS storage pools available for use on the
             system.
    

    并参考man zpool-import:

    zpool import [-D] [-d dir|device]…
             Lists pools available to import.
    

    请注意,参数是可选的。您可能不需要它们。明智的做法是从 USB 记忆棒启动来完成这项工作。从 USB 记忆棒启动后,zpool import将显示可供您使用的池。首先验证您的源 ZFS 池,我将tank在本示例中引用它。

    # zpool import
       pool: tank
         id: 11588110742206048524
      state: ONLINE
     action: The pool can be imported using its name or numeric identifier.
     config:
    
            tank                    ONLINE
              gpt/zfs-57SCK7S0FVLC  ONLINE
              gpt/zfs-57SCK7S1FVLC  ONLINE
    

    挂载“外部”ZFS 池时要小心——与挂载它们的系统的操作没有直接关系的池。很容易无意中将外部 ZFS 池或文件系统挂载到正在运行的系统文件系统的顶部,如果不重新启动,该操作可能不可逆。

    一旦您确定您的源 ZFS 池可供您使用,您就可以挂载源 (ZFS) 和目标 (UFS) 文件系统并开始了。

    挂载源 ZFS 文件系统

    再次来自man zpool-import:

             -R root
                     Sets the cachefile property to none and the altroot
                     property to root.
    

    zpool import -R /mnt tank允许您将池的整个 ZFS 层次结构tank挂载在不同的挂载点下,在本例中为/mnt. 将源池也保持为只读可能是个好主意。命令

    # zpool import -o readonly=on -R /mnt tank
    # zfs list -r tank
    # zfs mount
    

    将以只读模式挂载您的源池,/mnt然后列出存在的各个 ZFS 文件系统以及已挂载的文件系统。您可能会看到以下消息:

    cannot import 'tank': pool was previously in use from another system.
    Last accessed by <unknown> (hostid=0) at Tue Apr 19 03:29:13 2022
    The pool can be imported, use 'zpool import -f' to import the pool.
    

    如果发生这种情况,那么正如它所说,只需将-f选项添加到您的zpool import命令中:

    # zpool import -f -o readonly=on -R /mnt tank
    

    这就是你的源代码树。

    挂载目标文件系统

    我将/mnt.new用作您的目标文件系统的挂载点,您说它可能是 UFS。请注意,如果您将使用非 ZFS 文件系统作为/mnt.new结构,则需要在您将使用的每个磁盘分区( 、 等)上运行“newfs /dev/ada0p1” /dev/ada0p2。与往常一样,请确保您知道哪个设备是哪个设备,并且确保它们是正确的。

    使用 使文件系统保持原始状态后newfs,挂载将成为您的/文件系统的分区,/mnt.new并创建任何目录,作为您的 UFS 层次结构的下一级挂载点。然后挂载下一级磁盘分区,每个分区都挂载在正确的位置。例如,如果您的新 UFS 文件系统根目录是 /dev/ada0p1,/usr在 /dev/ada0p2上,/usr/home在 /dev/ada0p3 上,那么您需要:

    mkdir /mnt.new
    mount /dev/ada0p1 /mnt.new
    mkdir /mnt.new/usr
    mount /dev/ada0p2 /mnt.new/usr
    mkdir /mnt.new/usr/home
    mount /dev/ada0p3 /mnt.new/usr/home
    

    请注意,在完成对/mnt.new挂载点的克隆后,您同样需要编辑/mnt.new/etc/fstab并确保它正确挂载包含文件系统的磁盘分区。

    这是基本的 UFS 文件系统管理,所以我不会更详细地介绍。

    将您的源层次结构 Rsync 到目标

    一旦您将源 ZFS 树安装在/mnt并安装在目标 UFS 树下,/mnt.new您就可以简单地将文件从一个复制到另一个。 rsync是一个很好的工具。

    # rsync -HAXav /mnt/ /mnt.new/
    

    尾部的斜线/mnt/很重要,包含在/mnt.new/“团结一致”中。给定的命令将在复制时列出每个文件名。如果您不想看到该详细信息,请v从命令中省略 。

    复制文件后,您仍然需要进行一些手动更改。如前所述,您将需要检查/mnt.new/etc/fstab并进行所需的任何更改,以确保您的 UFS 文件系统在新系统启动时正确挂载。您还应该查看/mnt.new/etc/rc.conf以注释掉类似的行zfs_enable='yes'以及类似的条目/mnt.new/boot/loader.conf。

    卸载源和目标层次结构并重新启动

    当您认为新系统已准备好尝试时,请导出您的源 ZFS 池:

    zpool export tank
    

    并从以下位置卸载您的 UFS 设备/mnt.new:

    umount /mnt.new/usr/home
    umount /mnt.new/usr
    umount /mnt.new
    

    现在您可以交叉手指并重新启动到 UFS 驱动器。将 USB 记忆棒放在手边,以便在您的 UFS 磁盘在第一次尝试时无法启动时进行故障排除。

    • 1

相关问题

  • 如果禁用校验和,ZFS 使用非 ECC RAM 是否更安全?

  • Freebsd setfacl

  • 为什么 ZFS 不报告磁盘已降级?

  • ps -vxa 不对内存进行排序

  • FreeBSD 的 sh:列出函数

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve