LINUX.ORG.RU

Установка Debian на subvolume BTRFS

 ,


0

2

Вновь возвращаюсь к теме

Установка Debian «по-умолчанию», поставила директорию /var в отдельный раздел, и APT, после года установок и работы, стал «вылетать» с ошибкой нехватки места: стало ясно что надо ставить системные директории в отдельные места, но создавать для того отдельные разделы с жесткими границами размеров не захотелось, потому обратился к subvolume на BTRFS.

  1. Создал раметку:
Device             Start       End   Sectors   Size Type
/dev/nvme0n1p1      2048    499711    497664   243M EFI System
/dev/nvme0n1p2    499712    999423    499712   244M Linux filesystem
/dev/nvme0n1p3 495235072 500117503   4882432   2.3G Linux swap
/dev/nvme0n1p4    999424 495235071 494235648 235.7G Linux filesystem

где 1 раздел - это собственно «Системный раздел EFI», 2 раздел - это загрузчик grub, который я не сумел переместить в subvolume BTRFS на 4 разделе

  1. Далее в текстовом инсталляторе Debian, после завершения создания раздела, и перед установкой системы, вышел в консоль, и создал подтома BTRFS
  2. Размонтировал EFI,Grub и root-разделы,
  3. Примонтировал раздел с корневой директорией в /mnt. cd /mnt
  4. Cоздаю подтома: btrfs subvolume create {home,var,opt,usr/local,srv,tmp,boot/grub2/x86_64-efi,.snapshots}
  5. Монтирую сначала efi: mount /dev/nvme0n1p1 /target/boot/efi
  6. Монтирую все созданные ранее subvoulume одной и той же командой: mount -o rw,noatime,compress=lzo,space_cache,subvolid=<..вывод из subvolume list> /target/{home,var,opt,usr/localmsrv,tmp,boot/grub2/x86_64-efi,.snapshots}

Далее идёт обычная установка, в результате получается такой /etc/fstab:

# / was on /dev/nvme0n1p4 during installation
UUID=........-....-....-....-........... /               btrfs   defaults,subvol=@rootfs 0       0
UUID=.......-....-....-....-............ /home           btrfs   defaults,subvol=home 0       0
UUID=.......-....-....-....-............ /var            btrfs   defaults,subvol=var 0       0
UUID=.......-....-....-....-............ /opt            btrfs   defaults,subvol=opt 0       0
UUID=.......-....-....-....-............ /usr/local      btrfs   defaults,subvol=usr/local  0       0
UUID=.......-....-....-....-............ /srv            btrfs   defaults,subvol=srv 0       0
UUID=.......-....-....-....-............ /tmp            btrfs   defaults,subvol=tmp 0       0
UUID=.......-....-....-....-............ /boot/grub2/x86_64-efi               btrfs   defaults,subvol=boot/grub2/x86_64-efi 0       0
UUID=.......-....-....-....-............ /.snapshots     btrfs   defaults,subvol=.snapshots 0       0

В итоге не грузятся именно те подтома, которые занёс на btrfs.

[FAILED] Failed to mount home.mount - /home.
[DEPEND] Dependency failed for local-fs target - Local File Systems.
[FAILED] Failed to mount \x2esnapshots.mount - /.snapshots.
[FAILED] Failed to mount opt.mount - /opt.
[FAILED] Failed to mount srv.mount - /srv.
[FAILED] Failed to mount tmp.mount - /tmp.
[FAILED] Failed to mount usr-local.mount - /usr/local.
[FAILED] Failed to mount var.mount - /var.
[DEPEND] Dependency failed for systemd-tpm2-setup.service - TPM SRK
Setup.
[DEPEND] Dependency failed for systemd-random-seed.service - Load/Save OS
Random [DEPEND] Dependency failed for systemd-journal-flush.service - Flush Journal to
[DEPEND] Dependency failed for apparmor.service - Load AppArmor profiles.
[DEPEND] Dependency failed for systemd-pstore.service - Platform Persistent
Stor
[FAILED] Failed to mount var.mount - /var.
[DEPEND] Dependency failed for systemd-rfkill.socket - Load/Save RF Kill
Switch
[FAILED] Failed to mount boot-grub2-x86_64\x2defi.mount - /boot/grub2/x86_64-efi
You are in emergency mode. After logging in, type "journalctl -xb" to view
system logs, "systemctl reboot" to reboot, or "exit"
to continue bootup.
Cannot open access to console, the root account is locked.
See sulogin(8) man page for more details.
Press Enter to continue.

При том, что в ‘journalctl -xb’ - вроде, всё в порядке: там только «session closed for user root».

Что я делаю не так ? Очень попрошу без злословий, просто объясните по проще, желательно с примерами :)

Грубо говоря, ты не смог разместиться в двух больших разделах, поэтому решил накрошить кучу маленьких.

Если проще, место закончится ещё быстрей. Но сложней угадать, где оно закончится. Ещё. Кажущимися удобствами, btrfs сильно транжирит место.

andytux ★★★★★
()
Последнее исправление: andytux (всего исправлений: 1)
Ответ на: комментарий от andytux

накрошить кучу маленьких

Он насоздавал пачку сабвольюмов на одном разделе.

место закончится ещё быстрей

Каким образом? Сабвольюмы на одной ФС делят место друг с другом.

kneedeep
()

Автор темы поставил бессмысленную цель. Для её достижения произвёл пляски с бубном. Ничего не получилось и он интересуется, что делать. Купить другой бубен.

Partisan ★★★★★
()
Ответ на: комментарий от kneedeep

На пальцах. Есть общее пространство «200», делим на два раздела: «50», «150». Есть файл «100». Не помещается на «50», но помещается на «150». «150» делим на три раздела по «50». Место есть «200», но файл никуда не помещается.

andytux ★★★★★
()
Последнее исправление: andytux (всего исправлений: 1)
Ответ на: комментарий от andytux

Поверхностно

Постулируется что магия выбранной fs позволяет динамить начальные квоты разделов и следовательно преодолевать локальный(только) дефицит свободного места

При этом ТС споткнулся на другом стоя гамаке - thats all :|

qulinxao3 ★☆
()

APT, после года установок и работы, стал «вылетать» с ошибкой нехватки места: стало ясно что надо ставить системные директории в отдельные места

Где-то тут пропущена цепочка логических рассуждений.

ya-betmen ★★★★★
()

Привет, я использую btrfs и предполагаю что у меня такой кейс который вы хотите реализовать. Посмотри мой fstab

# /dev/nvme0n1p3
UUID=f0848151-6170-4747-a21e-1ce702d626d0       /               btrfs           rw,noatime,compress=zstd:3,ssd,space_cache=v2,commit=120,subvolid=256,subvol=/@ 0 1

# /dev/nvme0n1p1
UUID=3BC4-3355          /boot           vfat            rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro   0 2

# /dev/nvme0n1p3
UUID=f0848151-6170-4747-a21e-1ce702d626d0       /home           btrfs           rw,noatime,compress=zstd:3,ssd,space_cache=v2,commit=120,subvolid=257,subvol=/@home     0 2

# /dev/nvme0n1p3
UUID=f0848151-6170-4747-a21e-1ce702d626d0       /opt            btrfs           rw,noatime,compress=zstd:3,ssd,space_cache=v2,commit=120,subvolid=259,subvol=/@opt      0 2

# /dev/nvme0n1p3
UUID=f0848151-6170-4747-a21e-1ce702d626d0       /tmp            btrfs           rw,noatime,compress=zstd:3,ssd,space_cache=v2,commit=120,subvolid=260,subvol=/@tmp      0 2

# /dev/nvme0n1p3
UUID=f0848151-6170-4747-a21e-1ce702d626d0       /.snapshots     btrfs           rw,noatime,compress=zstd:3,ssd,space_cache=v2,commit=120,subvolid=261,subvol=/@.snapshots       0 2

# /dev/nvme0n1p3
UUID=f0848151-6170-4747-a21e-1ce702d626d0       /var            btrfs           rw,relatime,compress=zstd:3,ssd,space_cache=v2,commit=120,subvolid=258,subvol=/@var     0 2

# /dev/nvme0n1p2
UUID=590337a3-5074-4ef1-9d42-241c8e2d47a9       none            swap            defaults        0 0

В параметре subvol=… указывается имя субтома относительно корня Btrfs раздела, а не путь в системе.

Обычно в дистрибутивах для системных субтомов используют префикс @ (например, @home, @var). У вас в rootfs он есть, а в остальных — нет. Если при создании вы забыли @, система их не увидит.

Посмотрите как у вас щас устроен список субтомов

[root@Exdora ~]# btrfs subvolume list /mnt
ID 256 gen 390738 top level 5 path @
ID 257 gen 390778 top level 5 path @home
ID 258 gen 390778 top level 5 path @var
ID 259 gen 389333 top level 5 path @opt
ID 260 gen 390778 top level 5 path @tmp
ID 261 gen 340425 top level 5 path @.snapshots
ID 262 gen 264184 top level 258 path @var/lib/portables
ID 263 gen 264184 top level 258 path @var/lib/machines
ID 264 gen 390778 top level 5 path .beeshome
Exordx
()
Последнее исправление: Exordx (всего исправлений: 3)

В итоге не грузятся именно те подтома, которые занёс на btrfs.

Судя по предыдущей цитате fstab, в btrfs у тебя всё, включая корень, но корень грузится? Что тогда эта фраза означала?

firkax ★★★★★
()
Ответ на: комментарий от andytux

Не чел, масло-фс работает не так. Подтома в btrfs мало чем отличаются от директорий. У них общее хранилище. Я даже не уверен что их можно квотировать (не интересовался). Ты сейчас утверждаешь что если фалы свалить в одну директорию то их влезет больше чем если раскидать по разным

MrClon ★★★★★
()
Последнее исправление: MrClon (всего исправлений: 1)
Ответ на: комментарий от Exordx

В параметре subvol=… указывается имя субтома относительно корня Btrfs раздела, а не путь в системе.

Спасибо. Задумался. Понял, что перепутал виртуальный @rootfs и корень физического раздела.

Если при создании вы забыли @, система их не увидит

Не хочу дальше экспериментировать, и не знаю, как установщик дебиана трактует символ «@» в именах стандартных директорий дистрибутива, но, в конце-концов, я создал общий подтом «@» внутри него - прочие необходимые подтома, которые потом примонтировал к корневым точкам на разделе.

moskvich
() автор топика
Последнее исправление: moskvich (всего исправлений: 1)
Ответ на: комментарий от firkax

Судя по предыдущей цитате fstab, в btrfs у тебя всё, включая корень, но корень грузится? Что тогда эта фраза означала?

Эта фраза означала, что /boot/efi на своём собственном разделе с vfat.

moskvich
() автор топика
Ответ на: комментарий от MrClon

На сколько я понимаю / перед названием сабвольюма нужен. Ну типа полный путь,

subvolume - это просто метка тома, вместо можно использовать subvolid, к примеру subvolid=260, genfstab всё равно поставит нужную метку

moskvich
() автор топика
Ответ на: комментарий от moskvich

я создал общий подтом «@» внутри него - прочие необходимые подтома, которые потом примонтировал к корневым точкам на разделе.

Такую схему очень сложно снапшотить и восстанавливать: при откате корневого сабволюма средствами btrfs порвутся связи со вложенными сабволюмами и данные потеряются. Но в такой схеме можно использовать снапшоты как источник файлов, которые копировать руками.

Лучше использовать независимые сабволюмы, которые монтировать в корневой раздел. Это общая практика, пример вам показывали выше.

И не знаю, насколько инсталлятор Debian поддерживает такую разметку. По-моему, самый простой и понятный способ установки Debian на btrfs — debootstrap.

anonymous
()
Ответ на: комментарий от moskvich

Только эта метка тома это ещё и директория относительно корня btrfs (не путать с корнем системы)

MrClon ★★★★★
()
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария