Bug 58222

Summary: подтома var-cache, var-tmp при установке на btrfs по умолчанию
Product: Sisyphus Reporter: Arseny Maslennikov <arseny>
Component: installerAssignee: Антон Мидюков <antohami>
Status: NEW --- QA Contact: qa-sisyphus
Severity: enhancement    
Priority: P5 CC: antohami, boyarsh, klark, mcpain, mike, rider, sem, zerg
Version: unstable   
Hardware: all   
OS: Linux   
See Also: https://bugzilla.altlinux.org/show_bug.cgi?id=59705
https://bugzilla.altlinux.org/show_bug.cgi?id=59746

Description Arseny Maslennikov 2026-03-13 15:01:35 MSK
(прошу перевесить куда следует)

В документации пишут:

> Подтома (подразделы, subvolumes) создаются ниже вершины дерева BtrFS по мере необходимости, например, для / и /home создаются подтома с именами @ и @home. Это означает, что для монтирования подтомов необходимы определенные параметры вместо корня системы BtrFS по умолчанию:
> 
>     подтом @ монтируется в / с помощью опции subvol=@;
>     подтом @home (если он используется) монтируется с помощью параметра монтирования subvol=@home.

Здесь не написано, но @ и @home не вложены друг в друга — и это удобно, их можно независимо снепшотить, btrfs send/receive, ...

Предлагаю создавать ещё и @var-cache, @var-tmp.
 # mount VOLUME -o subvol=@var-cache /var/cache
 # mount VOLUME -o subvol=@var-tmp /var/tmp

Тогда эти два каталога, например, не будут попадать в снепшоты @.
Comment 1 Leonid Krivoshein 2026-03-14 03:43:56 MSK
(In reply to Arseny Maslennikov from comment #0)
> Тогда эти два каталога, например, не будут попадать в снепшоты @.
Нет смысла отделять их от системы, да и весят они копейки.
Comment 2 Arseny Maslennikov 2026-03-14 13:59:47 MSK
(In reply to Arseny Maslennikov from comment #0)
> Предлагаю создавать ещё и @var-cache, @var-tmp.
>  # mount VOLUME -o subvol=@var-cache /var/cache
>  # mount VOLUME -o subvol=@var-tmp /var/tmp
> 
> Тогда эти два каталога, например, не будут попадать в снепшоты @.
Ещё можно рассмотреть точно так же поступать с /var/log; там свои аргументы за и против.
Самый яркий аргумент "за" — прям не хочется, чтобы после восстановления @ из снимка логи отбрасывались до момента фиксации @ в прошлом.
Comment 3 Arseny Maslennikov 2026-03-14 14:00:49 MSK
(In reply to Leonid Krivoshein from comment #1)
> (In reply to Arseny Maslennikov from comment #0)
> > Тогда эти два каталога, например, не будут попадать в снепшоты @.
> Нет смысла отделять их от системы, да и весят они копейки.
Не могу здесь согласиться.

Понятное дело, отделять можно по владению/принадлежности (могут ли две установки ОС соиспользовать раздел?), а можно по дисциплине хранения (часть установки ОС, но на другом разделе с другой ФС или даже такой же)

Отделять целый /var по принадлежности не рекомендуется, а по хранению смысла нет; про этот путь я бы размышлял так же.

Отделять /var/cache, /var/tmp от системы с т. з. принадлежности смысла скорее нет (т. е. если на btrfs-устройство поставить два гнулинукса dual-boot, то им нужны независимые /var/cache и /var/log и, ябсказал, даже /var/tmp). А вот по дисциплине хранения очень даже есть.

У меня даже не умозрительный, а популярный пример есть.
Проводим мы апгрейд, качаем пакеты, перед установкой делаем ro-снимок, ставим пакеты. откатываемся и получаем все эти гигабайты *.rpm в /var/cache/apt/archives.

Отдельные subvolumes администратор потом сможет и в qgroup добавить.
Comment 4 Arseny Maslennikov 2026-03-14 14:07:43 MSK
> (In reply to Arseny Maslennikov from comment #0)
> > Тогда эти два каталога, например, не будут попадать в снепшоты @.
На это можно взглянуть и с другой стороны: должно ли их содержимое перезаписываться при восстановлении снимков других мест? Если нет, то можно вынести.
Comment 5 Антон Мидюков 2026-06-24 11:52:16 MSK
Это нужно сделать в пакетах:
volumes-profile-alt-workstation
volumes-profile-kdesktop
volumes-profile-regular
Comment 6 Sergey V Turchin 2026-07-02 10:50:50 MSK
В OpenSUSE
@
@/var
@/usr/local
@/srv
@/root
@/opt
@/home
Comment 7 Arseny Maslennikov 2026-07-06 19:02:36 MSK
(In reply to Sergey V Turchin from comment #6)
> В OpenSUSE
> @
> @/var
> @/usr/local
> @/srv
> @/root
> @/opt
> @/home
Пожалуй, можно /srv и /usr/local тоже отцепить в @srv и @usr-local.

/srv — точно идея хорошая по той же причине, по которой /home. Поддерживаю полностью.
/usr/local — параллельный отдельно управляемый* /usr. Отдельное им управление требует мозгов, но и применение /usr/local как таковое тоже требует мозгов. Пусть багу создаст кто-нибудь ещё, кто согласен.

Зачем отселять /root и /opt, я затрудняюсь обосновать. Видимо, о вкусах и вайбах не спорят.
Есть мнение (исповедуемое авторами пакета rootfiles), что /root — это не просто хомяк рута, а системный каталог.

____
* не пакетным менеджером, а иными средствами или пальцами.
Надо бы завести багу на среднесрочное будущее, чтобы вся болванка /usr/local/* создавалась динамически через tmpfiles.d(5) и отсутствовала в filesystem, будучи %ghost.
Comment 8 Arseny Maslennikov 2026-07-06 19:05:04 MSK
(In reply to Sergey V Turchin from comment #6)
> В OpenSUSE
> @
> @/var
> <...>
А вот /var целиком вынести — это лишнее. Чтобы так делать, нужно, чтобы /var согласно политике дистрибутива был готов к тому, что он не часть базовой системы, и его можно сделать, например, пустым, не приведя софт в неконсистентное или неожиданное состояние. Гарантировать это для _всех_ пакетов в репозитории, а лучше и вообще всего совместимого ПО.
Не знаю, как SuSE, а мы вряд ли потянем.

Внутренности /var/cache и /var/tmp подходят, а всего каталога /var — вообще говоря, нет.
Comment 9 Sergey V Turchin 2026-07-07 12:01:29 MSK
(Ответ для Arseny Maslennikov на комментарий #8)
> А вот /var целиком вынести — это лишнее.
Да. /var/lib/rpm/ может разъехаться с системой.