ZFS:备份与备份计算机冲突的挂载点的磁盘?

ZFS:备份与备份计算机冲突的挂载点的磁盘?

我正在努力备份一台在 ZFS 上运行 Ubuntu 的笔记本电脑。我有一个备份服务器,也在一些辅助卷(不是根卷)上运行 ZFS。

我制作了今天的快照bpool并使用命令将其发送到备份服务器zfs send / recv

export SNAPSHOT=first-backup-2022-01-27
zfs snapshot -r bpool@$SNAPSHOT
zfs send -LRc bpool@$SNAPSHOT | pv | ssh [email protected] zfs recv -F susepool0/sets/1M/os-images/Ubuntu-thinkpad-t460s/bpool@$SNAPSHOT

这对于第一次备份来说工作正常,但是当我进入存储备份的服务器时,挂载点仍然设置为/boot

zfs list | grep t460s
susepool0/sets/1M/os-images/Ubuntu-thinkpad-t460s/bpool@first-backup-2022-01-27                      591M  3.83T       96K  /boot
susepool0/sets/1M/os-images/Ubuntu-thinkpad-t460s/bpool/BOOT@first-backup-2022-01-27                 591M  3.83T       96K  none
susepool0/sets/1M/os-images/Ubuntu-thinkpad-t460s/bpool/BOOT/ubuntu_qjvcro@first-backup-2022-01-27   591M  3.83T      162M  /boot

我如何才能最好地配置此备份,以使其挂载点不与存储它们的服务器冲突? 有rpool所有内容,例如/usr,,/var-/etc如果允许远程重新安装它们,我可以看到那真是一团糟。

编辑:有人要求我在源和目标上发布 ZFS 挂载点,因为他们认为这可能会有帮助,所以我很乐意效劳:

编辑编辑(2021 年 1 月 30 日):我被要求减少这些列表的篇幅,因此这些列表仅包含最相关的文件系统挂载,以演示我所说的如果发送包含相同挂载的快照映像,zfs 挂载点将如何与 unix 文件路径冲突

我认为一个可能的解决方案是在发送快照之前或之后为快照设置一个备用根,但我不确定如何做到这一点或什么命令负责。

客户端(源)——这是运行 ZFS 根目录的机器(Ubuntu 21.10):

❯ for i in bpool rpool/ROOT; do echo ' '; zfs list -t filesystem -o name,mountpoint -d 4 $i; done

NAME                      MOUNTPOINT
bpool                     /boot
bpool/BOOT                none
bpool/BOOT/ubuntu_qjvcro  /boot

NAME                                              MOUNTPOINT
rpool/ROOT                                        none
rpool/ROOT/ubuntu_qjvcro                          /
rpool/ROOT/ubuntu_qjvcro/srv                      /srv
rpool/ROOT/ubuntu_qjvcro/usr                      /usr
rpool/ROOT/ubuntu_qjvcro/usr/local                /usr/local
rpool/ROOT/ubuntu_qjvcro/var                      /var
rpool/ROOT/ubuntu_qjvcro/var/games                /var/games
rpool/ROOT/ubuntu_qjvcro/var/lib                  /var/lib
rpool/ROOT/ubuntu_qjvcro/var/lib/AccountsService  /var/lib/AccountsService
rpool/ROOT/ubuntu_qjvcro/var/lib/NetworkManager   /var/lib/NetworkManager
rpool/ROOT/ubuntu_qjvcro/var/lib/apt              /var/lib/apt
rpool/ROOT/ubuntu_qjvcro/var/lib/dpkg             /var/lib/dpkg
rpool/ROOT/ubuntu_qjvcro/var/lib/machines         /var/lib/machines
rpool/ROOT/ubuntu_qjvcro/var/log                  /var/log
rpool/ROOT/ubuntu_qjvcro/var/mail                 /var/mail
rpool/ROOT/ubuntu_qjvcro/var/snap                 /var/snap
rpool/ROOT/ubuntu_qjvcro/var/spool                /var/spool
rpool/ROOT/ubuntu_qjvcro/var/www                  /var/www

服务器(目标) - 注意,这台机器使用 btrfs 作为其根文件系统,但这并不意味着rpool/ROOT尝试挂载到/它时不会出现问题:

❯ ssh osuse-leap zfs list -t filesystem,volume -o name,mountpoint -d 2
NAME                                  MOUNTPOINT
susepool0                             /mnt/susepool0
susepool0/sets                        /mnt/susepool0/sets
susepool0/sets/16K                    /mnt/susepool0/sets/16K
susepool0/sets/1M                     /mnt/susepool0/sets/1M
susepool0/sets/4K                     /mnt/susepool0/sets/4K
susepool0/sets/64K                    /mnt/susepool0/sets/64K
susepool0/sets/chipmunk-user-folder   /mnt/ubuntu/home/avery
susepool0/snapper-backup              /mnt/snapper
susepool0/snapper-backup/vols         /mnt/snapper/vols
susepool0/vols                        /mnt/susepool0/vols
susepool0/vols/endpoint-bob-image     -
susepool0/vols/macosvol0              -
susepool0/vols/real-endpoint-bob      -
susepool0/vols/testvol                -
susepool0/vols/vmfspool0              -

答案1

首先,我对此一无所知BTFS,也无法判断发送ZFS快照是否透明。这可能会导致您的问题。

其次,关于ZFS 安装相关 特性

  • mountpoint可以使用继承
  • canmount管理是否默认挂载池
  • overlay管理挂载点在挂载前存在的情况

就你的情况而言,我不明白你的源/目标数据集是什么,也看不到用作父母在目的地。如果你发送rpool/ROOT/ubuntu_qjvcro,它将被安装在/目的地。

您可以组合上述属性以避免安装在/

但更聪明的方法是使用子数据集……

  • rpool/ROOT/ubuntu_qjvcro/srv
  • rpool/ROOT/ubuntu_qjvcro/var/www
  • ETC。

…到目标数据集正确设置挂载点:

  • susepool0/backup/qjvcro例如mountpoint=/mnt/backup/qjvcro/

在这种情况下,类似的源rpool/ROOT/ubuntu_qjvcro/srv将安装在目标上/mnt/backup/qjvcro/srv

相关内容