![分层快照的奇怪行为](https://linux22.com/image/1387646/%E5%88%86%E5%B1%82%E5%BF%AB%E7%85%A7%E7%9A%84%E5%A5%87%E6%80%AA%E8%A1%8C%E4%B8%BA.png)
我已将驱动器分成两个 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
当对给定的子卷进行快照时,其中包含的所有子卷(在文件树中附加的意义上)都被视为空目录。因此有这样的行为。您可以直接将它们从快照中删除,这里不会丢失数据 :)