Я новичок в 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 ответ1

0

Имейте в виду, что дерево каталогов 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. Соответствующая строка в моем /etc/fstab выглядит следующим образом:

UUID=<UUID of my /dev/sda1 here>    /mnt/ssd            btrfs   defaults,subvol=/       0   2

Даже без вышеприведенной строки я все еще мог монтировать корневой том Btrfs вручную:

mount -o rw,relatime,ssd,space_cache,subvol=/ /dev/sda1 /mnt/ssd

Главный вывод заключается в том, что вам нужно где-то смонтировать корень вашей файловой системы Btrfs с параметром subvol=/ . Таким образом, вы получаете доступ к файловой системе в целом.

Обратите внимание, что не стоит монтировать Btrfs / как вашу ОС / . Если такое монтирование имело место, у вас были каталоги /etc , /bin и т.д. прямо под вашими Btrfs / вместе с подобъемами вроде /timeshift-btrfs . В вашей ОС все эти записи будут отображаться в / после монтирования Btrfs / в ОС / .

Получая корневое дерево вашей ОС от Btrfs /@ вы сохраняете его аккуратным. Вы (и / или соответствующие инструменты) организует подобъемы вне Btrfs /@ , в то время как ОС сохраняет большинство своих / в Btrfs /@ . Большинство, потому что, например, в моем случае /mnt/ssd/@/proc - это просто пустой каталог (после того, как Btrfs /@ смонтирован как / , файловая система proc доступна в ОС /proc); то же самое для /mnt/ssd/@/home (после того, как Btrfs /@ смонтирован как / , подобъем Btrfs /@home монтируется в том, что сейчас является ОС /home).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .