当 /home 未设置为子卷时,创建 BTRFS 快照

当 /home 未设置为子卷时,创建 BTRFS 快照

我已经建立了一个备份服务器,用于每天创建 BTRFS/快照/backup/

btrfs subvolume snapshot -r / /backup/$(date +%s)  # simplified example

我发现这有问题,因为快照会因 中的临时卷而变得臃肿/var/lib/docker。现在我想/home仅创建 的快照。但这不起作用:

# btrfs subvolume snapshot -r /home /backup/$(date +%s)
ERROR: Not a Btrfs subvolume: Invalid argument

所以我明白我需要创建/home一个子卷。我不确定这是否意味着/home必须单独安装。我看过其他问题,例如如何制作 btrfs 快照?但他们已经/home为此做好了准备。我该如何迁移?我需要采取哪些步骤?

我当前的设备:

# blkid
/dev/sda1: UUID="39520d46-2e30-4b51-b093-2a3671eb8f52" TYPE="swap" PARTUUID="c9b515af-26c9-4809-aee1-680ca5ee7153"
/dev/sda2: UUID="3a994a01-9d92-4e67-8440-284ce24465f8" UUID_SUB="cbb73892-5f50-40f2-b411-37307bcbefc4" TYPE="btrfs" PARTUUID="462e3ffe-2c99-4481-89aa-b3f13f3985dc"
/dev/sdb: UUID="3a994a01-9d92-4e67-8440-284ce24465f8" UUID_SUB="b78ffe6c-c078-4cc5-b4c7-dd3874251394" TYPE="btrfs"
/dev/sda3: PARTUUID="63c9d4dd-0a85-40d6-9e10-3eaffcba4b49"

/卷已镜像到/dev/sda2/dev/sdb

答案1

您无法创建目录的快照,但只能创建子卷的快照。

/home但是将目录转换为单独的快照非常容易。

假设您的//dev/sda2

请先创建系统备份,以防万一!

要将您的/homeLiveUSB 启动转换为子卷并执行以下操作:

sudo mount /dev/sda2 /mnt
sudo btrfs sub create /mnt/@
sudo btrfs sub create /mnt/@home
sudo mv /home /mnt/@home
sudo mv / /mnt/@

现在您已将您的移至/@卷并/home移至@home子卷。

现在您需要编辑/mnt/etc/fstab并添加挂载选项以正确挂载卷。添加subvol=@到挂载的行/。并创建类似的行,如下/home所示:

UUID=3a994a01-9d92-4e67-8440-284ce24465f8 /               btrfs subvol=@ 0       0
UUID=3a994a01-9d92-4e67-8440-284ce24465f8 /home           btrfs subvol=@home 0       0

最后一件事是 chroot 到系统并更新grub

sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys  /mnt/sys
sudo chroot /mnt
sudo update-grub
exit
sudo umount /mnt

如果您所有操作都正确并且我没有犯错,您应该重新启动到正常工作的系统。

答案2

更正:

  $ sudo mv /home /mnt/@home

应该读

  $ sudo mv /home/* /mnt/@home

否则你最终会得到

  $ ls -r/home
  $ ls -r /home/home
  用户1 用户2 用户2..

这将阻止 GDM 登录..

相关内容