btrfs在阅读文档并在本地系统上进行实验后,我对子卷很陌生,并且对子卷感到困惑。我有一个带有btrfs根分区的 Linux Mint 系统。Mint 方便地包含一个有助于自动化定期快照的工具。我可以轻松列出它制作和保存的内容。
$ sudo btrfs subvolume list /
ID 257 gen 52540 top level 5 path @
ID 258 gen 52540 top level 5 path @home
ID 283 gen 52467 top level 5 path timeshift-btrfs/snapshots/2019-01-15_02-00-51/@
ID 286 gen 50026 top level 5 path timeshift-btrfs/snapshots/2019-01-16_02-00-01/@
ID 288 gen 50026 top level 5 path timeshift-btrfs/snapshots/2019-01-17_02-00-01/@
ID 289 gen 50026 top level 5 path timeshift-btrfs/snapshots/2019-01-18_02-00-01/@
ID 291 gen 50409 top level 5 path timeshift-btrfs/snapshots/2019-01-19_02-00-01/@
Run Code Online (Sandbox Code Playgroud)
然而,根据文档,我了解到可以浏览快照,它们的完整树就像主文件树一样公开,显示为应用程序的目录。例如,我可以将单个文件从快照复制到已安装的顶级卷。也就是说,从应用程序的角度来看,制作快照很像原子的递归副本。
/然而,我在或 的内容中找不到上面列出的七个子卷/home,并且timeshift-btrfs的列表中也没有出现名为 的条目/home。
我有什么误解吗?是否有任何目录列表显示快照树?
请记住,设备上的 Btrfs 目录(和子卷)树在概念上与操作系统中的目录结构不同。任一者的根均已表示,/但它们是不同的。
子@卷在 Btrfs 文件系统本身中被标识为@(或/@),但此路径在您的操作系统中不直接可用。我猜子卷安装到了/操作系统和程序所看到的目录树的根目录(注意:挂载命名空间除外)。
同样@home安装在/home.
我的 Kubuntu 中的命令输出mount包含(以及其他行):
/dev/sda1 on / type btrfs (rw,relatime,ssd,space_cache,subvolid=1902,subvol=/@)
/dev/sda1 on /home type btrfs (rw,relatime,ssd,space_cache,subvolid=258,subvol=/@home)
Run Code Online (Sandbox Code Playgroud)
因此,我的设置与您的设置相同:/@Btrfs 树中的子卷成为/操作系统树中的子卷。/@homeBtrfs 树中的子卷将/home进入操作系统树。
但我也可以访问整个 Btrfs 树:
/dev/sda1 on /mnt/ssd type btrfs (rw,relatime,ssd,space_cache,subvolid=5,subvol=/)
Run Code Online (Sandbox Code Playgroud)
这意味着 Btrfs 树的根 ( )在我的操作系统中/可用。/mnt/ssd从那里我可以查看每个子卷和目录。我自己设置了这个挂载点,正是为了能够查看和管理整个 Btrfs 结构。我的相关行/etc/fstab如下:
UUID=<UUID of my /dev/sda1 here> /mnt/ssd btrfs defaults,subvol=/ 0 2
Run Code Online (Sandbox Code Playgroud)
即使没有上面的行,我仍然可以手动挂载根 Btrfs 卷:
mount -o rw,relatime,ssd,space_cache,subvol=/ /dev/sda1 /mnt/ssd
Run Code Online (Sandbox Code Playgroud)
主要结论是您应该使用subvol=/选项将 Btrfs 文件系统的根目录挂载在某处。这样您就可以访问整个文件系统。
请注意,最好不要将 Btrfs 安装/为您的操作系统/。如果是这样的安装,/etc那么您的 Btrfs 下就有/bin等目录/以及. 在您的操作系统中,将 Btrfs 安装到操作系统后,所有这些条目都会出现在下面。/timeshift-btrfs///
通过从 Btrfs 派生操作系统的根树,/@您可以保持其整洁。您(和/或适当的工具)在 Btrfs 之外组织子卷/@,而操作系统将其大部分保留/在 Btrfs 中/@。大多数,因为在我的例子中,eg/mnt/ssd/@/proc只是一个空目录(在 Btrfs/@挂载为后/,proc 文件系统在操作系统中可用/proc);相同/mnt/ssd/@/home(在 Btrfs/@安装为 后/,Btrfs/@home子卷将安装在现在操作系统的位置/home)。
| 归档时间: |
|
| 查看次数: |
23566 次 |
| 最近记录: |