Перед установкой системы администратор решает задачу, цена ошибки в которой растянута на годы: как нарезать диск. Поделишь неудачно - и через полгода /var с логами упрётся в потолок и положит сервис, а свободные 200 ГБ будут болтаться в /home, до которых не дотянуться. В этом уроке разберём, какие каталоги имеет смысл выносить в отдельные разделы, как считать swap и крутить swappiness, чем GPT отличается от MBR на уровне планирования и зачем поверх всего этого городить LVM.

Как это работает
Файловая система Linux - это одно дерево от корня /. Физически разные куски этого дерева могут лежать на разных разделах или дисках, и место их стыковки называется точкой монтирования. Когда вы выделяете /var в отдельный раздел, переполнение логов уже не съест место под /, потому что это физически разные контейнеры. В этом и смысл вынесения: изоляция роста, разные параметры монтирования (например noexec на /tmp), разные ФС под разные нагрузки.
Что обычно выносят. /boot - небольшой раздел (1-2 ГБ) с ядрами и initramfs; нужен, если корень на LVM, RAID или шифровании, которые загрузчик не умеет читать напрямую. EFI System Partition (ESP) - обязательный на UEFI раздел в FAT32 размером 512 МБ - 1 ГБ, монтируется в /boot/efi или /efi, там лежат загрузчики. /home - данные пользователей, удобно держать отдельно, чтобы переустановка системы их не трогала. /var - логи, кэши, базы, очереди почты, контейнеры; главный кандидат на вынос на сервере. /tmp - временные файлы; на современных системах часто это tmpfs в оперативке, отдельный дисковый раздел уже не обязателен.
Swap - это место, куда ядро вытесняет редко используемые страницы памяти, когда RAM под давлением. Это не замена памяти, а страховка от OOM-killer и условие для hibernate (suspend-to-disk), которому нужен swap не меньше объёма RAM. Параметр vm.swappiness (0-200, по умолчанию 60) задаёт, насколько охотно ядро вытесняет анонимные страницы в swap вместо вытеснения файлового кэша. Низкое значение - дольше держим процессы в RAM; на серверах БД часто ставят 10, на десктопах 60 норм.
MBR против GPT - это два формата таблицы разделов. MBR - легаси из эпохи BIOS: максимум 4 первичных раздела (обходится одним extended с логическими внутри) и потолок диска 2 ТБ. GPT - современный стандарт, идёт в паре с UEFI: до 128 разделов из коробки, диски в десятки ТБ, дублирующая таблица в конце диска для надёжности. В 2026 году новые системы это почти всегда GPT+UEFI; MBR встречается на старом железе и в виртуалках с BIOS-загрузкой.
LVM (Logical Volume Manager) - прослойка между физическими дисками и файловыми системами. Физические тома (PV) объединяются в группу (VG), из которой нарезаются логические тома (LV) под точки монтирования. Гибкость в том, что LV можно увеличивать на лету (lvextend плюс resize2fs/xfs_growfs), переносить между дисками и снапшотить, не привязываясь к жёстким границам разделов. Минус - чуть сложнее восстановление при сбое, поэтому /boot обычно держат вне LVM.
Команды и примеры
Посмотреть текущую разметку и тип таблицы:
Код: Выделить всё
lsblk -f # дерево блочных устройств, ФС, метки, UUID
parted -l # таблица разделов и тип (gpt/msdos=MBR)
blkid # UUID и типы ФС - их и пишут в /etc/fstab
swapon --show # активные swap-устройства и их приоритет
free -h # сколько RAM и swap занято
Код: Выделить всё
parted /dev/sdb mklabel gpt
parted -a optimal /dev/sdb mkpart ESP fat32 1MiB 513MiB
parted /dev/sdb set 1 esp on
parted -a optimal /dev/sdb mkpart primary 513MiB 100%
Код: Выделить всё
fallocate -l 4G /swapfile # либо dd, если ФС не поддерживает fallocate
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab
Код: Выделить всё
cat /proc/sys/vm/swappiness # текущее значение
sysctl vm.swappiness=10 # до перезагрузки
echo 'vm.swappiness = 10' > /etc/sysctl.d/99-swappiness.conf # навсегда
Код: Выделить всё
# Debian 13 / Ubuntu 24.04: apt install lvm2
# RHEL 10 / Fedora 41+: dnf install lvm2
pvcreate /dev/sdb2
vgcreate vg_data /dev/sdb2
lvcreate -L 20G -n lv_var vg_data
mkfs.xfs /dev/vg_data/lv_var # RHEL по умолчанию xfs; Debian чаще ext4
Код: Выделить всё
lvextend -L +10G /dev/vg_data/lv_var
xfs_growfs /var # для xfs - только рост, по точке монтирования
resize2fs /dev/vg_data/lv_var # для ext4 - можно указывать устройство
- Слишком маленький /boot. При накоплении ядер обновление падает с No space left. Закладывайте 1-2 ГБ и чистите старые ядра (apt autoremove либо dnf remove old kernels).
- Отдельный жёсткий /usr ломает раннюю загрузку - бинарники нужны уже в initramfs. В 2026 /usr почти всегда часть корня (usr-merge), не выносите его руками.
- Забыли esp-флаг на ESP или сделали его не в FAT32 - UEFI его не увидит и система не загрузится.
- swap-файл с правами не 600 - swapon ругается на небезопасные права (мир может читать вытесненную память).
- swappiness=0 не отключает swap полностью; ядро всё равно вытеснит при крайнем давлении. Чтобы выключить - swapoff и убрать строку из fstab.
- Прописали раздел в fstab по имени /dev/sdb1 - после добавления диска порядок устройств плавает. Используйте UUID из blkid.
- Корень на LVM или LUKS без отдельного /boot - загрузчик не дотянется до ядра.
- На тестовом стенде подключите второй диск (или создайте файл-образ через losetup) и разметьте его в GPT через parted.
- Нарежьте два раздела: один под LVM, второй оставьте под swap.
- Соберите PV-VG-LV, создайте LV на 1 ГБ, отформатируйте в ext4 и смонтируйте в /mnt/test.
- Расширьте LV на 500 МБ командой lvextend и проверьте, что resize2fs увеличил ФС без размонтирования.
- Создайте swap-файл на 512 МБ, активируйте его и убедитесь через swapon --show, что он виден.
- Поменяйте vm.swappiness на 10 через sysctl.d и проверьте после reboot, что значение сохранилось.
- Пропишите LV и swap в /etc/fstab по UUID и выполните mount -a без ошибок.
- Чем отличается ESP от /boot и почему на UEFI-системе нужны оба?
- Какой максимум первичных разделов у MBR и как обходят это ограничение?
- Что делает параметр vm.swappiness и в какую сторону его крутят на сервере БД?
- Какие три уровня абстракции вводит LVM и за счёт чего достигается гибкость?
- Почему /boot обычно держат вне LVM и вне шифрования?
- Какие права обязательны для swap-файла и почему swapon их проверяет?