Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

Linux / DevOps

Создание Swap файла в Ubuntu Linux: спасаем сервер от нехватки RAM

Обновлено: 27.08.2026 · Официальная документация ↗

Зачем серверу нужен Swap-файл?

На недорогих виртуальных серверах (VPS) с 1–2 Гб оперативной памяти запуск тяжелых задач (сборка проекта через npm run build, обновление пакетов, запуск базы данных MySQL) приводит к моментальному исчерпанию RAM. В этот момент срабатывает системный механизм OOM Killer (Out Of Memory) и принудительно «убивает» веб-сервер или СУБД. Создание файла подкачки (Swap) на SSD диске позволяет выделить виртуальную память и защитить сервер от внезапных падений.

Симптомы нехватки оперативной памяти:

ПризнакЧто происходит на сервере
Служба MySQL падает без причинOOM Killer принудительно завершает процесс mysqld.
Ошибка Killed в терминалеПроцесс компиляции или сборщика превысил лимит RAM.
Команда free -h показывает Swap: 0BНа сервере полностью отсутствует подкачка.

Пошаговое создание Swap файла размером 2 ГБ

  1. Шаг 1. Проверяем текущее состояние памяти

    free -h
    sudo swapon --show

    Если строчка Swap пустая, приступаем к созданию.

  2. Шаг 2. Выделяем место под файл подкачки

    Создадим файл размером 2 Гб (или 4G при необходимости) с помощью утилиты fallocate:

    sudo fallocate -l 2G /swapfile
    
    # Если fallocate не поддерживается файловой системой, используем dd:
    # sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
  3. Шаг 3. Устанавливаем строгие права безопасности

    Файл подкачки не должен читаться посторонними пользователями:

    sudo chmod 600 /swapfile
  4. Шаг 4. Форматируем и активируем Swap

    # Размечаем файл как область подкачки:
    sudo mkswap /swapfile
    
    # Включаем Swap в системе:
    sudo swapon /swapfile
  5. Шаг 5. Закрепляем файл в автозагрузке (/etc/fstab)

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

    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
  6. Шаг 6. Настраиваем баланс использования (Swappiness)

    Параметр swappiness (от 0 до 100) определяет, как охотно Linux сбрасывает данные на диск. Для серверов оптимально значение 10 (использовать диск только при реальном дефиците памяти):

    sudo sysctl vm.swappiness=10
    echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
💡 Практика специалистов: Файл подкачки — это подушка безопасности от аварийных падений, но не замена физической памяти. Если ваш сервер постоянно держит Swap заполненным на 100%, скорость работы сайтов катастрофически упадет из-за медленного I/O диска. В таком случае необходимо докупать физическую RAM.

Частые вопросы (FAQ)

Какой объем Swap-файла нужно создавать?

Общее правило: при объеме RAM до 2 Гб делайте Swap равным объему памяти или х2 (2–4 Гб). При объеме RAM от 4 до 8 Гб достаточно 2–4 Гб подкачки. Делать Swap больше 8 Гб на SSD не имеет практического смысла.

Не испортит ли Swap мой быстрый SSD диск?

При установке vm.swappiness=10 система пишет в Swap только в экстренных случаях, когда физическая память заполнена на 90%. Нагрузка на ресурс SSD при такой настройке минимальна.

Как полностью удалить файл Swap, если он больше не нужен?

Отключите его: sudo swapoff -v /swapfile, удалите строку из /etc/fstab и сотрите сам файл: sudo rm /swapfile.

Работает ли файл подкачки внутри Docker-контейнеров?

Контейнеры Docker по умолчанию используют общий Swap хост-системы, если в docker run не были установлены жесткие лимиты флагом --memory-swap.

Полезные материалы
Рекомендуем