Что делать, если при перезагрузке системы раздел @var монтируется в каталог user под именем @?

При установке я монтировал раздел так: <pre><code>mount -o noatime,compress=lzo,space_cache=v2,ssd,subvol=@var /dev/sdb4 /mnt/var</code></pre>. При этом на корневой файловой системе всё работает нормально — в чём может быть причина проблем с /var?
  • 16 марта 2026 г. 2:07
Ответы на вопрос 2
Коротко — причина почти всегда в том, что неправильно выбран субволюм или «не та» партиция в fstab (или субволюм был создан вложенным и его путь отличается). Btrfs при неудачном subvol-монтировании просто монтирует «по-умолчанию» (или верхний уровень), поэтому вы видите субволюм @ в неожиданном каталоге.

Что проверить и как исправить

1. Посмотреть, какие субволюмы действительно есть на файловой системе
- Смонтируйте раздел (без указания subvol) или зайдите в систему, где он уже доступен, и выполните:
  btrfs subvolume list -a /mnt
  btrfs filesystem show /dev/sdb4
Эти команды покажут список субволюмов и их пути. Обратите внимание на путь: он может быть, например, "@/@var" (т. е. вы создали @var внутри @), а не просто "@var" на верхнем уровне.

2. Проверить, что в fstab используется та же партиция и тот же subvol
- Узнайте UUID партиции:
  blkid /dev/sdb4
- Откройте /etc/fstab и убедитесь, что строка для /var указывает UUID (а не /dev/sdb4) и правильный subvol:
  UUID=ВАШ_UUID /var btrfs defaults,noatime,compress=lzo,space_cache=v2,ssd,subvol=@var 0 0
Если в выводе btrfs subvolume list путь был "@/@var", то в fstab нужно указать subvol=@/@var.

3. Исправить (или пересоздать) субволюм, если он создан вложенным
- Вариант 1 — поменять строку в fstab на subvol=@/@var (если субволюм реально лежит под "@"):
  UUID=... /var btrfs ... ,subvol=@/@var 0 0
- Вариант 2 — переместить субволюм на верхний уровень (удобнее):
  # смонтируйте FS в /mnt (без subvol)
  btrfs subvolume snapshot /mnt/@/@var /mnt/@var
  btrfs subvolume delete /mnt/@/@var   (если не нужен старый)
  Тогда в fstab можно оставить subvol=@var.

4. Тест после правок
- Примените монтирование:
  mount -a
  или перезагрузитесь.
- Убедитесь через mount или findmnt, что /var смонтирован нужным субволюмом:
  findmnt -no SOURCE,TARGET,OPTIONS -t btrfs

5. Обратите внимание на порядок монтирования
- /var монтируется раньше многих сервисов, поэтому в fstab желательно указывать правильные опции и использовать UUID. Если нужны системд-зависимости, можно добавить x-systemd.requires=… или другие опции, но обычно это не требуется.

Итого: посмотрите список субволюмов (btrfs subvolume list), убедитесь, что указали правильный путь subvol в fstab (и используете UUID, а не /dev/sdX). Частая ошибка — создать @var внутри @, тогда нужно либо указать subvol=@/@var, либо переместить @var на верхний уровень.
Сначала проверь, монтируется ли /var вообще отдельно: <code>findmnt /var</code> . Если пусто — в /etc/fstab нет записи для /var или она с ошибкой, и ты просто видишь каталог /var из корневого подтома @. Добавь или исправь строку в fstab: устройство через UUID (узнаешь из <code>blkid /dev/sdb4</code> ), опции те же, обязательно <code>subvol=@var</code> . После правки — <code>sudo mount -a</code> и ребут.
Похожие вопросы