Если оперативная память Linux-сервера заканчивается, приложения могут начать тормозить или неожиданно закрываться. Чтобы снизить риск таких проблем, система использует swap — дополнительное пространство для временного хранения данных из оперативной памяти. Разберём, как работает подкачка, когда она действительно полезна и как проверить, создать или настроить swap в Linux.
Что такое swap в Linux простыми словами
Swap (своп, или подкачка) — это специальное пространство, в котором Linux может временно хранить часть данных из оперативной памяти (RAM). Обычно оно находится на SSD или жёстком диске, хотя существуют и варианты со сжатием данных непосредственно в RAM.
Представим небольшой сервер интернет-магазина. На нём работают сайт, база данных и несколько фоновых программ. Для выполнения задач им нужна оперативная память, но её объём ограничен. Если нагрузка резко вырастет, например во время распродажи, памяти может не хватить.
Linux умеет освобождать часть RAM, перемещая редко используемые данные в swap. Когда приложению снова понадобится эта информация, система сможет вернуть её в оперативную память. Так появляется дополнительный запас для работы программ.
Но swap не заменяет настоящую RAM. Даже быстрый SSD обычно значительно медленнее оперативной памяти, поэтому постоянное обращение к подкачке может замедлять сервер. Её задача — помогать системе управлять памятью и переживать временные перегрузки, а не увеличивать производительность за счёт диска.
Как работает swap в Linux
Чтобы понять принцип, представим рабочий стол, на котором лежат документы. Те, которыми вы пользуетесь постоянно, удобно держать под рукой. А папки, которые открываете раз в месяц, можно убрать в шкаф и доставать по необходимости.
Оперативная память похожа на рабочий стол: доступ к данным очень быстрый, но места ограничено. Swap напоминает шкаф, в который можно временно убрать часть информации. Когда она понадобится, её придётся вернуть обратно, а это займёт дополнительное время.
В Linux всё происходит автоматически. Система отслеживает использование памяти и при необходимости выбирает данные, которые можно переместить. Обычно речь идёт о небольших блоках — страницах памяти, а не о переносе целой программы на диск.
Есть важный нюанс: Linux может использовать swap ещё до полного заполнения оперативной памяти. Система учитывает, какие данные сейчас активны, сколько места занимает файловый кеш и насколько выгодно освободить RAM для других задач.
При этом сама по себе занятая подкачка ещё не означает проблему. Например, Linux может оставить в swap давно неиспользуемые страницы памяти, даже если позднее свободной RAM стало больше.

Что происходит, когда памяти действительно не хватает
Допустим, у сервера 4 ГБ RAM и дополнительно настроен swap-файл на 2 ГБ. Программы постепенно увеличивают потребление памяти, а свободных ресурсов становится всё меньше.
Linux пытается освободить RAM: может уменьшить файловый кеш или переместить подходящие страницы памяти в swap. Но если приложения постоянно требуют всё больше ресурсов, подкачка тоже перестанет справляться.
В такой ситуации система может начать тратить слишком много времени на перемещение данных между RAM и диском. Это называют thrashing. Сервер становится медленным, а выполнение обычных операций занимает заметно больше времени.
Если доступной памяти всё равно не хватает, Linux может запустить механизм OOM Killer (Out of Memory Killer). Он завершает выбранный процесс, чтобы освободить ресурсы. Поэтому swap иногда помогает избежать аварийного завершения программ, но не гарантирует защиту от него.
Когда нужен swap в Linux
Swap может пригодиться и на обычном компьютере, и на рабочем сервере. Особенно полезен он там, где потребление памяти иногда ненадолго превышает привычный уровень.
Например, его используют в следующих ситуациях:
- Небольшой VPS. Если на сервере с 2–4 ГБ RAM одновременно работают сайт и несколько служб, swap может помочь пережить кратковременный рост нагрузки.
- Сборка приложений. При компиляции больших проектов или выполнении отдельных задач CI/CD потребление памяти иногда резко увеличивается.
- Рабочий компьютер. Несколько браузеров, редактор кода, контейнеры и другие приложения могут занимать больше RAM, чем обычно.
- Гибернация ноутбука. При переходе в этот режим Linux сохраняет состояние оперативной памяти, чтобы затем восстановить работу. Для этого требуется правильно настроенное пространство хранения и механизм возобновления системы.
При этом swap нужен далеко не каждому серверу в одинаковом объёме. Например, если приложение постоянно использует почти всю доступную память и непрерывно обращается к диску, дополнительный swap может лишь отложить проблему.
Для рабочих проектов важно учитывать характер нагрузки. Сервер с базой данных, виртуальная машина для тестирования и домашний ноутбук могут требовать совершенно разных настроек памяти.
Swap-файл и swap-раздел: в чём разница
В Linux подкачку можно организовать несколькими способами. Два основных варианта — специальный файл и отдельный раздел диска.
Swap-файл (swap file) — обычный по расположению файл, который Linux использует как область подкачки. Его удобно создавать, увеличивать или удалять без изменения разметки диска. Поэтому для небольшого VPS или учебной виртуальной машины такой вариант часто оказывается проще.
Swap-раздел (swap partition) — отдельный раздел накопителя, подготовленный специально для подкачки. Его можно настроить ещё при установке Linux, но менять размер раздела обычно сложнее, чем размер отдельного файла.
| Критерий | Swap-файл | Swap-раздел |
| Где находится | В файловой системе | На отдельном разделе диска |
| Создание | Обычно не требует переразметки диска | Требуется отдельный раздел |
| Изменение размера | Обычно проще | Может потребоваться изменение разделов |
| Применение | Серверы, VPS, рабочие компьютеры | Системы с заранее спланированной разметкой |
Для большинства базовых сценариев нет необходимости специально создавать раздел, если подходящий swap-файл уже настроен.
Есть и другие решения, например zram и zswap. Они используют сжатие данных в оперативной памяти и помогают уменьшить обращения к диску. К ним вернёмся позже.
Как проверить swap в Linux
Прежде чем создавать подкачку, стоит выяснить, есть ли она уже в системе. Это особенно важно на VPS: провайдер или установщик операционной системы мог заранее настроить swap-файл, раздел или zram.
Проверка оперативной памяти через free
Откройте терминал Linux и выполните:
free -hКоманда покажет объём оперативной памяти и swap в удобном формате.
Например, результат может выглядеть так:
total used free shared buff/cache available Mem: 7.7Gi 6.1Gi 410Mi 100Mi 1.2Gi 1.1Gi Swap: 2.0Gi 340Mi 1.7Gi
Это условные значения, приведённые для объяснения.
Строка Mem относится к оперативной памяти, а Swap — к подкачке. В нашем примере система располагает 2 ГБ swap, из которых используются примерно 340 МБ.
Обратите внимание на столбец available в строке RAM. Он показывает, сколько памяти система оценивает как доступную для новых приложений без необходимости задействовать подкачку. Этот показатель обычно полезнее, чем просто free, поскольку Linux использует часть свободной RAM для кеширования файлов.
Если в строке Swap значение total равно нулю, активное пространство подкачки не обнаружено.

Проверка swap-файлов и разделов
Чтобы узнать, где именно находится подкачка, выполните:
swapon --showКоманда выводит список активных областей swap. Например:
NAME TYPE SIZE USED PRIO/swapfile file 2G 340M -2Здесь видно, что система использует файл /swapfile размером 2 ГБ. Столбец USED показывает занятую часть, а PRIO — приоритет этой области подкачки, если в системе их несколько.
Вместо файла может отображаться раздел диска, например /dev/sda3, или устройство /dev/zram0, если применяется подкачка со сжатием в RAM.
Если команда ничего не вывела, активных областей swap нет. Но перед созданием новой подкачки всё равно стоит проверить настройки системы, чтобы не дублировать существующую конфигурацию.
Как узнать, тормозит ли сервер из-за swap
Количество занятого swap не всегда помогает понять, есть ли реальная проблема. Для этого полезно посмотреть, как активно система переносит данные между RAM и подкачкой.
Выполните:
vmstat 1 5Команда покажет пять измерений с интервалом в одну секунду. Нас интересуют два столбца: si и so.
si означает чтение данных из swap обратно в RAM, а so — перенос данных из RAM в swap. Первую строку vmstat лучше не использовать для оценки текущей нагрузки: она отражает средние значения с момента запуска системы.
Если во время работы сервера значения si и so постоянно высокие, а приложения заметно тормозят, это повод проверить нагрузку на память и диск.
Небольшой объём занятого swap сам по себе не требует вмешательства.
Как создать swap-файл в Linux: пошаговая инструкция
Разберём создание файла подкачки размером 2 ГБ на Ubuntu, Debian или другом Linux-дистрибутиве с подходящей файловой системой ext4 либо XFS.
Это пример для учебного сервера или виртуальной машины. На рабочем сервере сначала проверьте настройки памяти и наличие swap, а также убедитесь, что можете восстановить систему при ошибке.
Проверьте файловую систему и свободное место
Узнать тип файловой системы можно командой:
findmnt -no FSTYPE /Для нашего примера подойдут ext4 и XFS. Если используется Btrfs, не применяйте следующие команды без изменений: для неё предусмотрен отдельный способ создания swap-файла.
Теперь проверьте свободное пространство на диске:
df -h /Для файла на 2 ГБ понадобится соответствующее свободное место. Желательно оставить запас для операционной системы, журналов и приложений.
Также убедитесь, что файл /swapfile ещё не существует и не используется системой. Перезаписывать действующий swap-файл нельзя.
Создайте swap-файл
Для выделения места воспользуемся командой:
sudo fallocate -l 2G /swapfileОна создаёт файл /swapfile размером 2 ГБ.
Затем ограничим доступ к нему:
sudo chmod 600 /swapfileТак читать и изменять файл сможет только его владелец — обычно root. Это важно, поскольку в подкачке могут оказаться данные работающих приложений, в том числе конфиденциальная информация.
Подготовьте файл для подкачки
Теперь выполните:
sudo mkswap /swapfileКоманда подготавливает файл для использования Linux в качестве swap. После выполнения она должна показать сведения о созданной области подкачки.
На этом этапе файл ещё не задействован системой. Мы только подготовили его для работы.
Включите swap
Активируйте созданный файл:
sudo swapon /swapfileТеперь Linux сможет использовать его для подкачки.
Проверьте результат двумя командами:
swapon --showfree -hВ списке активных областей должна появиться запись /swapfile размером 2 ГБ, а в строке Swap команды free -h увеличится общий доступный объём подкачки.
Если в столбце USED пока указан ноль, это нормально. Система не обязана сразу переносить данные в новый swap-файл.

Сохраните настройки после перезагрузки
Пока мы включили подкачку только для текущей работающей системы. Чтобы файл автоматически активировался после следующей загрузки Linux, нужно добавить его в /etc/fstab.
Этот файл содержит настройки подключения файловых систем и областей подкачки. Перед изменением полезно сохранить резервную копию:
sudo cp /etc/fstab /etc/fstab.bakЗатем откройте его:
sudo nano /etc/fstabДобавьте строку, если такой записи ещё нет:
/swapfile none swap defaults 0 0Сохраните файл. В Nano это можно сделать через Ctrl+O, подтверждение Enter и Ctrl+X для выхода.
На системах с systemd перечитайте конфигурацию:
sudo systemctl daemon-reloadТеперь swap-файл будет учитываться при загрузке системы. После плановой перезагрузки проверьте его состояние командой swapon —show.
Не добавляйте одну и ту же запись несколько раз. Если swap уже настроен в /etc/fstab, проверьте существующие параметры перед изменением файла.
Курс «Основы администрирования Linux» в Академии IT DMS
Сертификат или удостоверение о повышении квалификации.
AFFTIMES−5 % на первую покупку. Скидка суммируется с любыми акциями школы. Если оплачиваете через менеджера в чате, назовите ему промокод.
Какой размер swap выбрать для Linux
Единого размера, который подойдёт любому серверу, нет. Он зависит от доступной RAM, выполняемых задач, характера нагрузки и необходимости гибернации.
Например, если на небольшом VPS с 4 ГБ оперативной памяти иногда возникают кратковременные скачки нагрузки, можно начать с swap-файла на 2 ГБ и наблюдать за использованием памяти.
Но если этот VPS постоянно обращается к подкачке и приложения тормозят, увеличение файла до 8 ГБ может не решить проблему. Возможно, серверу действительно требуется больше оперативной памяти или оптимизация приложений.
Раньше часто советовали делать swap в два раза больше RAM. Сейчас такое правило слишком грубое: сервер с 2 ГБ памяти и рабочая станция с 64 ГБ требуют разных подходов.
Для гибернации также действуют особые условия. Размер swap должен соответствовать объёму данных, необходимых для сохранения состояния системы, а механизм восстановления должен быть отдельно настроен. Простого создания большого swap-файла для этого недостаточно.
Поэтому размер лучше выбирать по наблюдаемой нагрузке, а не только по количеству установленной RAM.
Что такое swappiness и нужно ли его менять
В Linux есть параметр vm.swappiness, который влияет на то, как система распределяет работу между подкачкой и освобождением файлового кеша.
Посмотреть текущее значение можно командой:
cat /proc/sys/vm/swappinessИли так:
sysctl vm.swappinessВ документации ядра Linux стандартное значение указано как 60, а допустимый диапазон — от 0 до 200. При этом конкретный дистрибутив или администратор может использовать другие настройки.
При меньших значениях система обычно считает операции с swap более затратными. При больших — может активнее использовать подкачку по сравнению с освобождением файлового кеша.
Иногда советуют обязательно поставить swappiness=10 или даже 0, чтобы Linux меньше обращался к диску. Но универсального значения нет. Например, для zram или zswap, где данные сжимаются в оперативной памяти, могут быть полезны настройки выше 100.
Если вы хотите проверить другое значение, временно изменить его можно так:
sudo sysctl vm.swappiness=20После этого стоит понаблюдать за использованием памяти и поведением приложений. Обычно временная настройка не сохраняется после перезагрузки.
При этом значение 0 не означает полного отключения swap. Если вы хотите действительно отключить подкачку, для этого существуют отдельные команды, но на рабочем сервере применять их без предварительной проверки опасно.
Как очистить swap в Linux и почему с этим нужно быть осторожнее
Иногда администратор видит, что занята часть swap, хотя свободной RAM уже достаточно, и пытается очистить её.
Это не всегда нужно. Linux может хранить в swap редко используемые данные, чтобы не занимать ими оперативную память. Если постоянных обращений к подкачке нет, такое состояние обычно не мешает работе.
Для отключения конкретного swap-файла существует команда:
sudo swapoff /swapfileНо она не просто очищает счётчик использования. Linux должен вывести данные из отключаемой области подкачки, в том числе вернуть необходимые страницы в RAM.
Если свободной памяти недостаточно, операция может завершиться ошибкой или усугубить нехватку памяти. На загруженном VPS это способно привести к серьёзным проблемам, вплоть до завершения процессов.
Поэтому не стоит бездумно выполнять распространённую комбинацию swapoff -a и swapon -a только ради того, чтобы увидеть ноль в статистике. Сначала убедитесь, что действительно есть проблема, и проверьте её причину.
Если нужно удалить swap-файл окончательно, это делают в запланированное время: проверяют доступную память, отключают конкретную область подкачки, убирают запись из /etc/fstab и только после успешного отключения удаляют файл.
Чем отличаются swap, zram и zswap
В современных Linux-системах подкачка не всегда означает запись данных на SSD.
Обычный swap хранит страницы памяти в файле или разделе накопителя. Это позволяет освободить RAM, но обращение к диску медленнее работы с оперативной памятью.
zram создаёт специальное устройство в RAM, в котором данные хранятся в сжатом виде. Оно использует процессор для сжатия и распаковки, зато позволяет более эффективно расходовать оперативную память без обязательной записи на накопитель.
zswap работает как сжатый кеш для страниц, отправляемых в swap. Он пытается сохранить их в сжатом виде в RAM, а при определённых условиях может передавать данные в основную область подкачки.
| Решение | Где хранятся данные | Особенность |
| Swap-файл или раздел | На накопителе | Дополнительный запас памяти, но обращения к диску могут замедлять работу |
| zram | В сжатом виде в RAM | Экономит память за счёт сжатия |
| zswap | Сначала в сжатом кеше RAM | Может уменьшать число обращений к дисковому swap |
Если команда swapon —show показывает /dev/zram0, это означает, что система использует виртуальное устройство zram. Создавать поверх него ещё один swap-файл без анализа конфигурации необязательно.
Отдельно стоит учитывать файловую систему Btrfs. Swap-файлы на ней поддерживаются, но требуют специальных условий, в частности отключения copy-on-write для файла. В современных версиях Btrfs для создания подходящего файла предусмотрена команда btrfs filesystem mkswapfile. Обычную инструкцию с fallocate для ext4 нельзя автоматически переносить на любую файловую систему.
Когда swap не поможет серверу
Swap особенно полезен при временных скачках потребления памяти. Но если приложение постоянно требует больше ресурсов, чем способен предоставить сервер, подкачка может превратиться в источник задержек.
Например, если база данных регулярно использует почти всю оперативную память, а сервер постоянно читает данные из swap и записывает их обратно, стоит проверить настройки базы, количество одновременных запросов и объём RAM.
При работе с Docker и другими контейнерными технологиями есть ещё один нюанс: контейнеры могут иметь собственные ограничения памяти. Даже если на хосте есть свободная RAM или swap, приложение внутри контейнера может столкнуться с установленным лимитом и завершиться.
Поэтому при диагностике полезно соблюдать последовательность: сначала проверить использование RAM и swap через free -h, затем посмотреть активные области с помощью swapon —show, оценить текущий обмен данными через vmstat и выяснить, какие процессы потребляют больше всего памяти.
Если система постоянно испытывает нехватку ресурсов, обычно приходится искать причину в приложениях, настройках или размере сервера. Увеличивать swap без такой проверки — не самое надёжное решение.
FAQ
Swap — это пространство для временного хранения страниц оперативной памяти. Обычно оно находится в специальном файле или разделе диска и помогает Linux освобождать RAM.
Swap может быть полезен как запас при кратковременной нехватке памяти. Linux иногда использует подкачку даже при наличии свободной RAM.
Команда free -h показывает общий и используемый объём swap. Команда swapon --show выводит список активных областей подкачки.
На подходящей файловой системе создайте файл через fallocate, задайте права chmod 600, выполните mkswap и активируйте его командой swapon. Для автоматической активации после перезагрузки добавьте запись в /etc/fstab.
Для отключения конкретной области swap применяется команда swapoff, но перед её использованием необходимо проверить доступную оперативную память. Просто занятый swap обычно не требуется очищать.
Да. Однако без swap при недостатке RAM система может раньше столкнуться с ошибками выделения памяти и завершением процессов. Решение зависит от нагрузки сервера.





