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).

Другие вопросы по тегам