ESC

Start typing to search across invoices, services, domains, tickets, and more...

Search... Ctrl+K
Linux-сервер

Как добавить swap в Linux: создание файла подкачки и настройка swappiness

6 шагов 9 мин чтения 2 просмотров 0
Содержание

На VPS с небольшим объёмом RAM сборка программ, работа базы данных или резкий всплеск трафика могут исчерпать память и вызвать OOM killer, который завершает процессы вроде MySQL. Добавление swap в Linux позволяет ядру выгружать редко используемые данные на диск при нехватке памяти и служит страховочным буфером. В статье описано, как создать файл подкачки, включить его при загрузке и настроить swappiness на KVM VPS и выделенных серверах с Debian/Ubuntu или CentOS/Rocky/AlmaLinux.

Swap намного медленнее оперативной памяти — это аварийный буфер, а не её замена. Если сервер постоянно активно использует swap, рассмотрите увеличение RAM.

Шаг 1: Проверьте текущее использование памяти и swap

Командой free -h посмотрите память и текущий swap, swapon --show покажет, включён ли swap, а df -h — достаточно ли места на корневом разделе. Рекомендуемые размеры:

Объём RAMРекомендуемый swap
до 1 ГБ1–2 ГБ
2–4 ГБ2 ГБ
от 8 ГБ2–4 ГБ (по необходимости)
free -h
swapon --show
df -h /

Шаг 2: Создайте файл подкачки с помощью fallocate

fallocate мгновенно выделяет файл нужного размера. Если появляется сообщение, что операция не поддерживается (на некоторых старых файловых системах), используйте dd — медленнее, но работает везде. В примерах создаётся файл /swapfile размером 2 ГБ.

# Create a 2 GB swap file
fallocate -l 2G /swapfile

# If fallocate fails ("Operation not supported"), use dd instead
dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress

Шаг 3: Задайте права и включите swap

В файл подкачки могут попадать конфиденциальные данные из памяти, поэтому доступ к нему должен быть только у root (600). Отформатируйте его через mkswap и сразу включите swapon — free -h покажет размер swap.

chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
swapon --show
free -h

Шаг 4: Автоматическое включение swap через /etc/fstab

swapon действует только до перезагрузки. Добавьте строку в fstab, чтобы swap подключался автоматически. Предварительно сделайте копию fstab.

cp /etc/fstab /etc/fstab.bak
echo '/swapfile none swap sw 0 0' >> /etc/fstab

Шаг 5: Настройте swappiness

Параметр swappiness (0–100) определяет, насколько активно ядро использует swap. На серверах обычно лучше сначала использовать RAM, а swap — только при необходимости, поэтому подойдёт значение около 10. Чтобы настройка сохранялась, запишите её в /etc/sysctl.d/.

cat /proc/sys/vm/swappiness      # usually 60 (Debian/Ubuntu) or 30 (some RHEL images)
sysctl vm.swappiness=10          # apply now

# Make it permanent
echo 'vm.swappiness=10' > /etc/sysctl.d/99-swappiness.conf
sysctl --system

Шаг 6: Как удалить файл подкачки

Если swap больше не нужен или требуется изменить размер, отключите его, удалите строку из fstab и сам файл. Для изменения размера просто повторите шаги 2–4.

swapoff /swapfile
sed -i '\|^/swapfile |d' /etc/fstab
rm -f /swapfile
free -h

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

swapon выдаёт «Invalid argument» или «Operation not permitted».

«Invalid argument» обычно означает, что файл создан fallocate на файловой системе, не поддерживающей такой swap, — пересоздайте его через dd. «Operation not permitted» чаще всего говорит о контейнерной виртуализации, где добавлять swap нельзя; уточните у поддержки.

Чем больше swap, тем лучше?

Нет. Огромный swap не ускоряет работу и лишь занимает диск, а при активном использовании swap система сильно тормозит. Ориентируйтесь на таблицу выше, а при реальной нехватке памяти увеличьте тариф.

Как узнать, какие процессы используют swap?

Выполните grep VmSwap /proc/*/status | sort -k2 -n | tail, чтобы увидеть главных потребителей, или включите столбец SWAP в htop.

Если проблема не решилась, создайте тикет — техническая поддержка IMIDC работает круглосуточно 24/7. Укажите IP-адрес сервера, операционную систему, выполненные команды и приложите скриншот ошибки: так инженер разберётся быстрее.

Помог ли вам данный ответ?

Похожие руководства