Подтома btrfs
Подтома (subvolumes) btrfs.
Содержание
1 Именование подтомов
- Для определённости я называю подтома по шаблону
@имя_подтома
.
1.1 Список подтомов
Подтом | Точка монтирования | Описание |
---|---|---|
@ | / | Корневой каталог (системные файлы) |
@home | /home | Домашний каталог с пользовательскими данными |
@root | /root | Домашний каталог пользователя root |
@snapshots | ‒ | Корневой подтом для снапшотов |
@snapshots@root | /.snapshots | Содержит снапшоты корня, которые создает snapper |
@snapshots@home | /home/.snapshots | Содержит снапшоты домашнего каталога, которые создает snapper |
@machines | /var/lib/machines | Если не существует, то создаст systemd |
@portables | /var/lib/portables | Если не существует, то создаст systemd |
@docker | /var/lib/docker | Докер создаёт подтома в ./btrfs/subvolumes либо в ./XXX/btrfs/subvolumes |
@var | /var | Аналогично выше описанному |
@var@lib | /var/lib | Вместо создания @machines , @portables , @docker можно создать только этот, если в /var/lib не будет храниться чего-то важного |
@var@tmp | /var/tmp | Содержит временные файлы. Должен монтироваться с nodatacow |
@var@log или @log | /var/log | Содержит большое количество файлов, которые пишутся маленькими частями. Должен монтироваться с nodatacow |
@swap | /swap или /var/swap , или /var/lib/swap | Подтом для файла подкачки. Должен монтироваться с nodatacow (см. Файл подкачки на btrfs) |
@libvirt | /var/lib/libvirt/images | Образы для libvirt. Должен монтироваться с nodatacow |
1.2 Минимально рекомендуемый набор подтомов
- Минимум нужны два подтома:
@
и@home
.
2 Создание подтомов
- При установки системы я создаю подтома следующим образом:
- Подмонтируем раздел с btrfs:
- Создадим подтома на btrfs:
1cd /mnt/gentoo/ 2btrfs subvol create @ 3btrfs subvol create @var 4btrfs subvol create @var@tmp 5btrfs subvol create @var@log 6btrfs subvol create @vm 7btrfs subvol create @portage 8btrfs subvol create @portage@local 9btrfs subvol create @portage@com 10btrfs subvol create @libvirt 11btrfs subvol create @home
3 Отключение CoW
- Для файловых систем с образами виртуальных машин следует отключить CoW (copy-on-write).
- Так же стоит отключить CoW для часто изменяемых файлов (например, журналов).
- Подмонтируем файловую систему
btrfs
:1mount -tbtrfs -orelatime,discard=async,autodefrag,compress=zstd:9,subvol=@vm /dev/sdc2 /mnt/gentoo/var/vm 2mount -tbtrfs -orelatime,discard=async,autodefrag,compress=zstd:9,subvol=@libvirt /dev/sdc2 /mnt/gentoo/var/lib/libvirt/images 3mount -tbtrfs -orelatime,discard=async,autodefrag,compress=zstd:9,subvol=@var@log /dev/sdc2 /mnt/gentoo/var/log 4mount -tbtrfs -orelatime,discard=async,autodefrag,compress=zstd:9,subvol=@var@tmp /dev/sdc2 /mnt/gentoo/var/tmp
- Отключим для этого подтома CoW:
- Для
/var/vm
- Для
/var/lib/libvirt/images
- Для
/var/log
- Для
/var/tmp
- Для
- Посмотреть результат можно командой:
4 Монтирование подтомов в fstab
- При монтировании я указываю универсальный идентификатор (UUID) файловой системы:
1# /etc/fstab 2UUID="f8963df3-1320-4bc0-a125-62be185b029e" / btrfs relatime,discard=async,autodefrag,compress=zstd:9,subvol=@ 0 0 3UUID="f8963df3-1320-4bc0-a125-62be185b029e" /var btrfs relatime,discard=async,autodefrag,compress=zstd:9,subvol=@var 0 0 4UUID="f8963df3-1320-4bc0-a125-62be185b029e" /var/tmp btrfs relatime,discard=async,autodefrag,compress=zstd:9,subvol=@var_tmp 0 0 5UUID="f8963df3-1320-4bc0-a125-62be185b029e" /var/vm btrfs relatime,discard=async,autodefrag,compress=zstd:9,subvol=@vm 0 0 6UUID="f8963df3-1320-4bc0-a125-62be185b029e" /home btrfs relatime,discard=async,autodefrag,compress=zstd:9,subvol=@home 0 0 7UUID="f8963df3-1320-4bc0-a125-62be185b029e" /usr/portage btrfs relatime,discard=async,autodefrag,compress=zstd:9,subvol=@portage 0 0 8UUID="f8963df3-1320-4bc0-a125-62be185b029e" /usr/local/share/portage btrfs relatime,discard=async,autodefrag,compress=zstd:9,subvol=@portage_local 0 0 9UUID="f8963df3-1320-4bc0-a125-62be185b029e" /com/lib/portage btrfs relatime,discard=async,autodefrag,compress=zstd:9,subvol=@portage_com 0 0 10UUID="f8963df3-1320-4bc0-a125-62be185b029e" /var/lib/libvirt/images btrfs relatime,discard=async,autodefrag,compress=zstd:9,subvol=@libvirt 0 0
- Идентификатор файловой системы можно узнать следующим образом:
1blkid /dev/sdc2
5 Создание нового подтома
- После установки системы может возникнуть необходимость создания дополнительных подтомов на существующем томе.
- Подключим в
/etc/fstab
:1UUID="f8963df3-1320-4bc0-a125-62be185b029e" /data btrfs relatime,discard=async,autodefrag,compress=zstd:9,subvol=@data 0 0