Гид по технологиям

Swapfile в Linux: что это и как настроить

• 8 min read • Linux • Обновлено 06 Dec 2025
Swapfile в Linux: настройка и лучшие практики
Swapfile в Linux: настройка и лучшие практики

Схема: файл подкачки (swapfile) на диске и его взаимодействие с оперативной памятью

Быстрые ссылки

  • Что такое файл подкачки (swapfile)?
  • Преимущества и недостатки swapfile
  • Важные соображения
  • Как создать и включить swapfile
  • Как загрузить swap при старте системы
  • Как удалить swapfile
  • Чеклист, рекомендации и отладка

Что такое файл подкачки (swapfile)?

Когда системе Linux не хватает оперативной памяти, ядро может использовать специальный механизм — OOM (Out Of Memory) — для завершения процессов и освобождения памяти. Чтобы избежать аварийных завершений и частичных сбоев сервисов, можно выделить часть дискового пространства под «виртуальную» память: это и есть swapfile. По сути, swapfile — обычный файл на файловой системе, который система использует как дополнительную область памяти.

Определение: swapfile — файл на диске, помеченный и отформатированный специальной меткой, чтобы ядро Linux могло использовать его как область подкачки при недостатке оперативной памяти.

Swap не увеличивает скорость выполнения кода: доступ к диску значительно медленнее, чем к оперативной памяти. Swap полезен как страховка при коротких пиках потребления ОЗУ или для hibernation (гибернация), но при постоянной сильной подкачке система станет заметно медленнее.

Преимущества и недостатки swapfile

Преимущества:

  • Предотвращает немедленные OOM-убийства процессов при кратковременных всплесках памяти.
  • Гибкость: легко создать, изменить размер или удалить без переразметки диска.
  • Позволяет экономично использовать дисковое пространство вместо дорогостоящего увеличения ОЗУ в некоторых случаях.

Недостатки:

  • Производительность: чтение/запись на диск значительно медленнее оперативной памяти, особенно на HDD.
  • Износ SSD: интенсивная запись в swap может увеличить износ флеш-памяти; на большинстве современных SSD это не критично, но стоит учитывать при высоких нагрузках.
  • Неправильный размер или конфигурация может скрывать коренные проблемы с памятью и приводить к деградации производительности.

Важно: swap — это не замена оперативной памяти для постоянных нагрузок. Если сервер регулярно использует swap и работает медленно, лучше увеличить объем ОЗУ.

Важные соображения при использовании swapfile

  • HDD vs SSD: на SSD подкачка работает быстрее, но влияет на износ. На HDD задержки будут гораздо больше.
  • Размер: исходите из конкретных сценариев использования — кратковременные пики, гибернация, аварийная «подушка». Часто разумно закладывать 1–2× частых пиков.
  • Swappiness: параметр ядра vm.swappiness определяет склонность системы к использованию swap. Значение 0–100; по умолчанию обычно 60. Для серверов с быстрым SSD можно снизить до 10–30.
  • Приоритет swap: можно указать при включении swapon приоритет (priority) для нескольких swap-устройств.
  • Безопасность: файл должен иметь права 0600, чтобы только root мог читать его содержимое.

На многих системах используется swap-раздел

Некоторые установки Linux создают отдельный раздел swap при установке системы. Функционально swap-раздел и swapfile эквивалентны, но swapfile легче изменить или создать позже без переразметки.

Проверить текущее состояние swap можно с помощью:

htop

или

free -m
swapon --show
cat /proc/swaps

Обратите внимание на два счётчика: объём оперативной памяти и объём swap. Если оба почти заполнены, система, скорее всего, активно свопит и испытывает деградацию производительности.

Как создать и включить swapfile (пошагово)

Ниже пример, который работает как на Debian-подобных дистрибутивах (Ubuntu, Mint), так и на Red Hat-подобных (CentOS, RHEL). В примере мы создаём swapfile объёмом ~1 ГБ и называем его /swapfile123, чтобы не перезаписать стандартный /swapfile.

Внимание: команды нужно вводить аккуратно, особенно dd и операция с файловой системой. Если сомневаетесь, создайте резервную копию или проверьте свободное место на диске.

sudo su
if [ -r /swapfile123 ]; then echo "Stop please! /swapfile123 already exists!"; fi
dd if=/dev/zero of=/swapfile123 bs=1024 count=1024000
chmod 0600 /swapfile123
mkswap /swapfile123
swapon /swapfile123

После этого вы должны увидеть соответствующий вывод ядра и команд. Пример вывода показан на скриншоте:

Вывод команды, подтверждающий активацию swapfile в Linux

Пояснение шагов:

  • dd: создаёт файл из нулей нужного размера. bs и count вместе задают общий размер в килобайтах (в примере 1024 × 1 024 000 = ~1 024 000 KB ≈ 1 GB). Можно использовать fallocate на некоторых ФС для ускорения:
fallocate -l 1G /swapfile123
  • chmod 0600: защищает файл от чтения другими пользователями.
  • mkswap: делает файл доступным как область подкачки.
  • swapon: включает swap динамически.

Проверить занятость swap можно командой:

free -m
swapon --show

Вывод free -m, показывающий изменение объёма swap при отключении

На рисунке показано, как объём swap уменьшается при деактивации файла: изменение на 1000M соответствует ожидаемому размеру.

Включение swap при загрузке системы

Чтобы swapfile автоматически подключался при старте, добавьте строку в /etc/fstab. Откройте файл в редакторе (например, nano):

nano /etc/fstab
cat /etc/fstab

И добавьте в конец:

/swapfile123  swap  swap  defaults  0  0

Сохраните файл. Проверьте корректность содержимого командой cat, чтобы не испортить другие записи — ошибки в /etc/fstab могут привести к проблемам при загрузке.

После перезагрузки проверьте наличие swap:

free -m
swapon --show

Удаление swapfile

Если нужно удалить swapfile или заменить его на другой размер, сначала отключите его, затем удалите файл и очистите запись в /etc/fstab:

sudo swapoff /swapfile123
sudo rm /swapfile123
# затем удалите строку из /etc/fstab

Изменения применяются динамически — перезагружать систему не обязательно.

Практические рекомендации и эвристики

  1. Размер swap
  • Если система редко достигает пиков и пиковые всплески кратковременные, swap на 1–2 ГБ часто достаточен.
  • Для лёгких рабочих станций и контейнеров подойдёт 1–4 ГБ.
  • Для серверов с редкими, но большими пиками подумайте о стратегии: если пиковый профиль требует значимого объёма памяти регулярно, лучше добавить оперативную память.
  1. Swappiness
  • Посмотреть текущий swappiness:
cat /proc/sys/vm/swappiness
  • Временное изменение:
echo 10 > /proc/sys/vm/swappiness
  • Постоянное изменение: в /etc/sysctl.conf добавьте строку:
vm.swappiness=10

Значение 10–20 обычно подходит для серверов, где важно минимизировать swap; десктопы часто используют 60.

  1. SSD и износ
  • Для современных SSD износ от swap обычно не критичен, но при высоком уровне свопинга стоит использовать мониторинг SMART и планировать расширение RAM.
  1. I/O и приоритеты
  • Если у вас несколько swap-областей (раздел + файл), можно задать приоритеты при swapon: опция -p.
  1. Hibernation (гибернация)
  • Для гибернации размер swap должен быть не меньше RAM плюс небольшая надбавка. В системах, где используется гибернация, swapfile может быть предпочтительнее swap-раздела, но настройка требует дополнительных шагов при загрузчике (initramfs, resume).

Чеклист перед созданием swapfile (роль: системный администратор)

  • Достаточно ли свободного места на диске?
  • Есть ли текущий swap-раздел или swapfile? (swapon –show)
  • Проверены права доступа (chmod 600)?
  • Учтён swappiness и политика использования swap?
  • Добавлена запись в /etc/fstab (если нужно авто-включение)?
  • Поняты последствия для SSD (износ) и производительности?
  • Есть план увеличения RAM, если swap используется постоянно?

Быстрая шпаргалка по командам (cheat sheet)

  • Создать файл (быстро): fallocate -l 1G /swapfile
  • Создать файл (совместимо): dd if=/dev/zero of=/swapfile bs=1M count=1024
  • Права: chmod 0600 /swapfile
  • Форматировать: mkswap /swapfile
  • Включить: swapon /swapfile
  • Отключить: swapoff /swapfile
  • Показать: swapon –show; free -m; cat /proc/swaps
  • Изменить swappiness временно: echo 10 > /proc/sys/vm/swappiness
  • Изменить swappiness навсегда: добавить vm.swappiness=10 в /etc/sysctl.conf

Когда swapfile плохо работает — признаки и контрмеры

Симптомы проблем:

  • Система постоянно медленно отвечает.
  • CPU простаивает, а дисковая подсистема загружена (I/O wait растёт).
  • В журнале — активный OOM или частые завершения процессов.

Контрмеры:

  • Уменьшите swappiness, чтобы система реже использовала swap.
  • Добавьте оперативной памяти, если своп используется постоянно.
  • Переместите swap на более быстрый диск (NVMe/SSD) при необходимости.
  • Ограничьте или рестартуйте тяжёлые процессы, использующие память.

Отладка и тест-кейсы (Критерии приёмки)

Критерии приёмки для корректного включения swapfile:

  • После swapon –show файл отображается в списке swap.
  • При выполнении free -m суммарный swap увеличился на ожидаемый объём.
  • Файл имеет права 0600.
  • После добавления строки в /etc/fstab и перезагрузки swap автоматически включается.

Тесты:

  • Создать swapfile 1G, включить, убедиться в наличии через swapon –show.
  • Отключить swap, убедиться в исчезновении, удалить файл.
  • Изменить swappiness и воспроизвести поведение при нагрузке.

Решение: когда добавлять RAM, а когда хватит swap

Правило: если использование swap возникает редко и кратковременно, swapfile экономичен и безопасен. Если же система регулярно использует swap и наблюдается деградация, инвестиция в физическую память окупается — это возвращает производительность и стабильность.

Модель принятия решений (Mermaid)

flowchart TD
  A[Нехватка памяти?] --> B{Кратковременные пики}
  B -- Да --> C[Создать небольшой swapfile '1-4 ГБ']
  B -- Нет --> D{Регулярное использование swap}
  D -- Да --> E[Добавить оперативную память]
  D -- Нет --> F[Оптимизировать приложения/утечки памяти]
  C --> G[Мониторинг и настройка swappiness]
  E --> G
  F --> G

Безопасность и приватность

  • Swap хранит снимки страниц памяти: потенциально там могут оказаться чувствительные данные. Убедитесь, что доступ к файлу ограничен (0600) и диск шифруется, если требуется высокий уровень безопасности.
  • На общих хостах и в облаке лучше предусмотреть шифрование диска или отдельные политики, чтобы избежать утечки данных через swap.

Совместимость и миграция

  • Swapfile работает на большинстве современных файловых систем (ext4, xfs, btrfs с учётом особенностей). Для btrfs лучше использовать swapfile с выделенным флагом и учитывать специфику COW.
  • При переносе виртуальных машин и образов проверьте настройки /etc/fstab и наличие соответствующего swapfile, либо используйте swap-раздел на уровне гипервизора.

Резюме

Swapfile — удобный и гибкий инструмент для страхования коротких пиков потребления памяти. Он предотвращает аварийные завершения процессов и даёт время на устранение проблем, но не заменяет необходимость в адекватном объёме оперативной памяти для постоянных нагрузок. Настройте swappiness, следите за производительностью диска и правами на файл, и добавляйте RAM, если своп используется постоянно.

Важно: всегда проверяйте /etc/fstab после изменений и тестируйте изменения в контролируемой среде.

Часто задаваемые вопросы

Можно ли использовать swapfile на SSD?

Да, можно. SSD даст более быструю подкачку, чем HDD, но при интенсивном использовании возможен больший износ флеш-памяти. Для большинства современных SSD это обычно не критично.

Чем отличается swapfile от swap-раздела?

Функционально они равнозначны. Swapfile проще создать и изменить без переразметки диска; swap-раздел иногда предпочтителен для гибернации и старых сценариев.

Какой размер swapfile выбрать?

Зависит от сценариев. Для страховки 1–4 ГБ часто достаточно. Для гибернации — не меньше объёма ОЗУ. Если swap используется постоянно — лучше добавить RAM.

Нужно ли перезагружать систему после создания swapfile?

Нет, swapon включает swap динамически. Чтобы swap автоматически подключался при старте, добавьте запись в /etc/fstab.


Краткое резюме: swapfile — лёгкий способ добавить «буфер» памяти, но не решение для постоянных перегрузок. Настраивайте размер, swappiness и безопасность с учётом профиля нагрузки.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро