← Linux: файловая система вглубь
12 мин · средне · Урок 5 из 7

Разделы и swap

Разделы диска и swap.

Зачем делить диск на разделы

Раздел (partition) — это выделенный кусок физического диска, который система видит как отдельное блочное устройство. Один диск можно разбить на несколько разделов, и каждый живёт своей жизнью.

Главная причина деления — изоляция переполнения. Если логи забьют раздел под /var/log, они займут всё место только внутри своего раздела. Корневой раздел, где лежит система, останется свободным, и машина продолжит работать.

$ df -h /var/log /
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        20G   20G     0 100% /var/log
/dev/sda2        30G   12G   16G  43% /

Тут /var/log заполнен на 100%, но корень / живёт. Будь это один общий раздел, переполнение логами повалило бы всю систему сразу.

Вторая причина: разным данным нужны разные параметры. На раздел с пользовательскими файлами можно повесить флаг монтирования noexec, чтобы оттуда нельзя было запускать программы. Один раздел можно держать на ext4, другой на XFS, если под нагрузку это выгоднее.

Как разделы попадают в дерево каталогов

Раздел сам по себе — просто область на диске. Чтобы данные из него стали видны, его монтируют (mount) в какую-то точку дерева каталогов.

$ lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda      8:0    0  100G  0 disk
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0   30G  0 part /
├─sda3   8:3    0   20G  0 part /var/log
└─sda4   8:4    0    4G  0 part [SWAP]

lsblk рисует диски и разделы деревом. Колонка со списком точек монтирования показывает, куда каждый раздел смонтирован. С util-linux 2.37 она называется MOUNTPOINTS во множественном числе: одно устройство может быть примонтировано сразу в несколько мест, и теперь видно все. В старых выводах на её месте MOUNTPOINT.

Ручной mount живёт до перезагрузки. Постоянные монтирования описывают в файле /etc/fstab: устройство, точка монтирования, тип файловой системы и опции.

$ cat /etc/fstab
# device                                     mountpoint fstype options  dump pass
UUID=8f3a1c2e-4b7d-4a19-9c30-5e6f2a1b7c84    /          ext4   defaults 0    1
UUID=b21d7e40-9c58-4f6a-8e11-3d0c7a94f2b5    /var/log   ext4   noexec   0    2
UUID=c9e04a13-77f2-4b8c-a6d5-1f2e83b04d97    none       swap   sw       0    0

Устройство здесь указано не как /dev/sda2, а через UUID файловой системы. Имена вроде sda и nvme0n1 ядро раздаёт в порядке обнаружения дисков, и после добавления нового контроллера или переноса виртуалки они могут поменяться местами. UUID привязан к самой файловой системе и переживает такие перестановки. Посмотреть их:

$ lsblk -o NAME,UUID,MOUNTPOINTS
$ blkid

При старте система читает /etc/fstab и монтирует всё описанное автоматически.

swap: страховка на нехватку памяти

swap — это раздел или файл, куда kernel выгружает неактивные страницы памяти, когда RAM начинает заканчиваться. Страница памяти, к которой давно не обращались, отправляется на диск, а освободившийся RAM отдаётся тому, кто работает прямо сейчас.

$ free -h
               total        used        free      shared  buff/cache   available
Mem:           3.8Gi       2.9Gi       180Mi        64Mi       780Mi       620Mi
Swap:          4.0Gi       1.1Gi       2.9Gi

Строка Swap показывает: из 4 гигабайт выгружено 1.1. Это те самые давно не используемые страницы, которые kernel убрал из RAM.

$ swapon --show
NAME      TYPE      SIZE USED PRIO
/dev/sda4 partition   4G 1.1G   -2

swapon --show перечисляет активные области swap: устройство, тип (раздел или файл), размер и сколько занято.

Две ловушки про swap

Первая: «swap — это медленная оперативная память для программ». Нет. Программа не работает прямо из swap. kernel выгружает туда неактивные страницы, а когда к ним снова обращаются, возвращает обратно в RAM. Диск в тысячи раз медленнее памяти, поэтому если активные данные постоянно ходят в swap и обратно (это называется thrashing), система тормозит так, что работать невозможно.

Вторая: «чем больше swap, тем быстрее». Тоже нет. Размер swap не ускоряет систему. Он лишь задаёт запас, за счёт которого машина переживёт всплеск потребления памяти вместо того, чтобы kernel убил процесс через OOM killer. Огромный swap на медленном диске скорее растянет агонию, чем поможет.

Что важно запомнить

Раздел — выделенная область диска, которую видно как отдельное блочное устройство.

Деление на разделы изолирует переполнение и даёт разным данным разные файловые системы и опции монтирования.

Разделы монтируются в точки дерева каталогов; постоянные монтирования лежат в /etc/fstab.

lsblk, free -h, swapon --show — чем смотреть разделы и swap.

swap — выгрузка неактивных страниц на диск ради запаса, а не быстрая память и не ускоритель.

В следующем уроке — RAID: как диски объединяют в массивы ради скорости и отказоустойчивости.

Дрилл · вопросы как на собесе

Проверь себя без подсказок

Сформулируй ответ вслух или письменно, потом раскрой и честно отметь: знал или нет.

01

Что такое swap и что туда попадает?

LIN-135
02

Правда ли, что чем больше swap, тем быстрее работает система?

LIN-137

Прошли материал до конца? Отметьте урок пройденным.