分层快照的奇怪行为

分层快照的奇怪行为

我已将驱动器分成两个 btrfs 分区:一个安装为/ (dev/sda1),另一个安装为/home (/dev/sda2)

我制作了初始快照/home

mkdir -p /home/snapshots/mnt
mount -o subvolid=0 /dev/sda2 /home/snapshots/mnt
btrfs subvolume snapshot /home /home/snapshots/mnt/snapshots/init

之后,我将init快照设为默认并重新启动系统。因为我希望init快照保持干净,所以我决定制作快照并将其命名为current

mount -o subvolid=0 /dev/sda2 /home/snapshots/mnt
btrfs subvolume snapshot /home /home/snapshots/mnt/snapshots/current

它起作用了,但是在创建current默认子卷并重新启动系统后,我注意到它ls/home/snapshots了我意想不到的结果:

# ls /home/snapshots 
init mnt
# ls /home/snapshots/init
#

问题是:为什么init文件夹可见?我的直觉是init快照是在 ID 为 0 的子卷上创建的,并且应该仅从那里可见。

答案1

当对给定的子卷进行快照时,其中包含的所有子卷(在文件树中附加的意义上)都被视为空目录。因此有这样的行为。您可以直接将它们从快照中删除,这里不会丢失数据 :)

相关内容