btrfs: просмотр подсобов
Я новичок в btrfs
и запутался в томах, после прочтения документации и экспериментов в локальной системе. У меня есть система Linux Mint с btrfs
корневой раздел. 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/@
Однако, основываясь на документации, я понимаю, что моментальные снимки можно просматривать, их полное дерево отображается как основное дерево файлов и отображается в виде каталогов для приложения. Я мог бы, например, скопировать один файл из моментального снимка на смонтированный том верхнего уровня. То есть, с точки зрения приложения, создание снимка очень похоже на атомарную, рекурсивную копию.
Тем не менее, я не могу найти ни одного из семи подобъемов, перечисленных выше, в содержании /
или же /home
и ни одна запись не называется timeshift-btrfs
появляется в списке /home
,
Что я недопонимаю? Есть ли список каталогов, который показывает дерево снимков?
1 ответ
Имейте в виду, что дерево каталогов Btrfs (и его подразделы) на вашем устройстве концептуально отличается от структуры каталогов в ОС. Корень любого из них обозначается /
но они разные.
@
подобъем определяется в самой файловой системе Btrfs как @
(или же /@
) но этот путь не доступен напрямую в вашей ОС. Я думаю, что подобъем смонтирован на /
который является корнем дерева каталогов, видимого ОС и программами (примечание: смонтировать пространства имен в стороне).
так же @home
установлен под /home
,
Выход из mount
Команда в моем Kubuntu содержит (среди других строк):
/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)
Так что мои настройки идентичны вашим: /@
подобъем из дерева Btrfs становится /
в дереве ОС. /@home
подобъем из дерева Btrfs становится /home
в дереве ОС.
Но у меня также есть доступ ко всему дереву Btrfs:
/dev/sda1 on /mnt/ssd type btrfs (rw,relatime,ssd,space_cache,subvolid=5,subvol=/)
Это означает, что корень (/
) дерева Btrfs доступно как /mnt/ssd
в моей ОС. Оттуда я могу заглянуть в каждый подобъем и каталог. Я сам установил эту точку монтирования, чтобы точно видеть и управлять всей структурой Btrfs. The relevant line in my /etc/fstab
как следует:
UUID=<UUID of my /dev/sda1 here> /mnt/ssd btrfs defaults,subvol=/ 0 2
Even without the above line I could still mount the root Btrfs volume manually:
mount -o rw,relatime,ssd,space_cache,subvol=/ /dev/sda1 /mnt/ssd
The main conclusion is you should mount the root of your Btrfs filesystem somewhere, with subvol=/
вариант. This way you gain access to the filesystem in its entirety.
Note it's a good idea not to mount Btrfs /
as your OS /
, If such mounting was the case, you had /etc
, /bin
etc. directories directly under your Btrfs /
along with subvolumes like /timeshift-btrfs
, In your OS all these entries would appear under /
after mounting the Btrfs /
to the OS /
,
By deriving your OS's root tree from Btrfs /@
Вы держите это в порядке. Вы (и / или надлежащие инструменты) организует подтомы за пределами Btrfs /@
в то время как ОС сохраняет большинство своих /
в Бтрфс /@
, Большинство, потому что, например, в моем случае /mnt/ssd/@/proc
это просто пустой каталог (после Btrfs /@
смонтирован как /
, файловая система proc доступна в ОС /proc
); то же самое для /mnt/ssd/@/home
(после Btrfs /@
смонтирован как /
Btrfs /@home
Subvolume монтируется на то, что сейчас ОС /home
).