8 октября 2026 г.

Файл подкачки на VPS: когда он нужен и как добавить за пять минут

Памяти впритык, а сборка падает с Killed. Показываем, как добавить swap-файл, как включить его насовсем и когда он не спасёт.

Сервер работает, но при установке пакетов или сборке проекта процесс вдруг умирает с коротким словом Killed. Чаще всего это значит, что закончилась память, а подушки в виде файла подкачки (swap) нет. Показываем, как добавить его за несколько команд, как сделать так, чтобы он пережил перезагрузку, и в каких случаях он не поможет.

Коротко. Создаём файл (fallocate -l 512M /swapdemo), закрываем права (chmod 600), размечаем (mkswap) и включаем (swapon). Чтобы файл включался после перезагрузки, добавляем строку в /etc/fstab. Проверка: swapon --show и free -h. Swap - подушка на случай пика, а не замена памяти: если памяти не хватает постоянно, нужен тариф побольше.

Проверяем, есть ли swap

Сначала посмотрим на память. Команда free -h показывает размеры понятными единицами, а строка Swap - подкачку. На нашем сервере её не было:

Нули в строке Swap значат, что подкачки нет. Подтверждает это команда swapon --show: когда swap отсутствует, она ничего не выводит. Обратите внимание на available: чуть больше 1 ГБ из 3,8 ГБ, то есть запас небольшой, и при пике нагрузки процессы начнут падать.

Создаём файл

Для примера возьмём 512 МБ. Команда fallocate мгновенно резервирует место на диске под файл нужного размера. Название файла любое, мы назвали его swapdemo, в обычной жизни привычно /swapfile:

sudo fallocate -l 512M /swapdemo

Файл подкачки содержит куски памяти, в том числе пароли и ключи, поэтому читать его должен только root. Закрываем права:

sudo chmod 600 /swapdemo

Права -rw------- значат: читать и писать может только владелец. Теперь размечаем файл как область подкачки:

Размер и идентификатор команда выводит сама, ошибок быть не должно. Если вместо fallocate файл создаётся на файловой системе без его поддержки, воспользуйтесь командой dd: sudo dd if=/dev/zero of=/swapdemo bs=1M count=512.

Включаем и проверяем

sudo swapon /swapdemo

Команда ничего не печатает, если всё получилось. Проверим:

В строке Swap появились 511 МБ, занято пока ноль: файл подключён, но ядро им не пользуется, пока хватает памяти. Это нормальное состояние подушки.

Чтобы swap пережил перезагрузку

После перезагрузки файл сам не включится. Чтобы система подключала его на старте, добавьте в файл /etc/fstab такую строку:

/swapdemo none swap sw 0 0

В нашем примере мы строку не добавляли и файл после показа убрали, поэтому подставьте настоящее имя своего файла. После правки fstab проверьте командой sudo swapon --show и перезагрузкой в удобное время.

Сколько брать и что такое swappiness

Для небольшого VPS обычно хватает 1-2 ГБ, а больше размера оперативной памяти брать смысла нет. Своп лежит на диске, поэтому работает медленнее памяти: он спасает от падения, но не ускоряет сервер. Параметр vm.swappiness задаёт, насколько охотно ядро использует подкачку. По умолчанию он равен 60, это видно командой sysctl vm.swappiness. Чтобы ядро реже трогало своп, можно временно поставить sudo sysctl vm.swappiness=10, а для постоянного значения добавить строку в файл в каталоге /etc/sysctl.d/.

Если команда ругается

Два типичных случая. Если swapon пишет про небезопасные права на файл, вы пропустили chmod 600: выполните его и повторите команду. Если появляется ошибка вроде «read swap header failed», файл не размечен: запустите mkswap и включайте снова. Перед правками сверяйтесь с реальным текстом сообщения: он может немного отличаться в разных версиях системы.

Как следить, что своп не мешает

Пока серверу хватает памяти, занятое место свопа остаётся близким к нулю. Если оно растёт, посмотрите статистику: vmstat 1 3 печатает её три раза с интервалом в секунду. Столбцы si и so показывают, как много данных ушло в подкачку и вернулось из неё. Единичные ненулевые значения не страшны, а постоянные - сигнал, что памяти мало и пора выбирать больший тариф.

Когда swap не поможет

Если сервер использует подкачку постоянно, а процессор простаивает в ожидании диска, сервер «буксует»: страницы гоняются между памятью и диском. Это решается не файлом побольше, а тарифом с большей памятью или оптимизацией приложения. Причины падений процессов подробнее разобраны в статье про OOM killer и load average, а общий порядок поиска узкого места - в разборе медленного сервера.

Как убрать swap-файл

Сначала отключаем, потом удаляем. Одной командой это делается так:

sudo swapoff /swapdemo && sudo rm /swapdemo

После этого swapon --show снова ничего не выведет, а строку из /etc/fstab нужно удалить, если вы её добавляли.

Частые вопросы

Как добавить swap на Ubuntu VPS?

Создайте файл через fallocate, закройте права chmod 600, разметьте mkswap и включите swapon. Для автозапуска добавьте строку в /etc/fstab.

Сколько swap нужно?

Обычно 1-2 ГБ для маленького сервера, не больше объёма оперативной памяти. Больше не имеет смысла: своп медленнее памяти.

Можно ли обойтись без swap?

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

Как проверить, что swap включён?

Командой swapon --show или по строке Swap в выводе free -h.

Итог

  • Нет строки Swap в free -h и пустой swapon --show - подкачки нет.
  • Четыре команды: fallocate, chmod 600, mkswap, swapon.
  • Для автозапуска нужна строка в /etc/fstab.
  • Брать 1-2 ГБ и не больше объёма памяти.
  • Постоянная нехватка памяти лечится тарифом, а не свопом.
PUBLISHED
8 октября 2026 г.
AUTHOR
HIP-HOSTING
LANGUAGES
EN · RU