Linux

Настройка swap-пространства в Linux: подробное руководство

Это руководство поможет вам добавить или изменить swap-пространство в Linux, чтобы повысить стабильность системы при нехватке оперативной памяти. Вы научитесь создавать swap-файлы, настраивать их параметры и управлять подкачкой.

Обновлено 16 февраля 2026 г.
10-15 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 20.04+Debian 11+CentOS 8+RHEL 8+Fedora 35+Any modern Linux distribution

Введение / Зачем это нужно

Swap-пространство (area of swap, подкачка) — это область на диске, которая используется как расширение оперативной памяти (ОЗУ). Когда физической памяти становится недостаточно, ядро Linux перемещает неактивные страницы памяти в swap, освобождая ОЗУ для более важных процессов. Это помогает избежать аварийного завершения программ из-за нехватки памяти (OOM killer) и повышает общую стабильность системы, особенно на серверах с небольшим объёмом ОЗУ или на десктопах, где одновременно работают многие тяжёлые приложения.

В этом гайде вы научитесь создавать и настраивать swap-файл — наиболее гибкий и современный способ добавления swap-пространства в Linux. Вы сможете контролировать его размер, включать/отключать без перезагрузки и настраивать поведение системы при использовании подкачки.

Требования / Подготовка

Перед началом убедитесь, что:

  1. У вас есть доступ к системе с правами sudo или root.
  2. На целевом диске (обычно / или /home) достаточно свободного места. Рекомендуемый размер swap: от 2 ГБ до размера вашей ОЗУ (см. FAQ).
  3. Вы знаете путь к разделу, на котором будет размещаться файл. Проверить можно командой df -h.
  4. Установлены базовые утилиты: fallocate (обычно в пакете util-linux) или dd. Если fallocate недоступен, используйте dd.

Шаг 1: Проверка текущего swap-пространства

Сначала давайте посмотрим, есть ли уже активный swap и сколько он занимает. Выполните команду:

sudo swapon --show

Или используйте утилиту free:

free -h

В выводе ищите строку Swap:. Если она показывает 0B или раздел swap отсутствует в списке, значит, активного swap нет, и вам нужно его создать.

Также можно проверить, есть ли уже swap-раздел в системе, с помощью:

lsblk -f

Ищите тип swap в колонке FSTYPE.


Шаг 2: Создание swap-файла

Мы создадим swap-файл в корневом каталоге (/). Вы можете выбрать другое место, например /swapfile или /var/swap. Размер укажем в гигабайтах. Для примера создадим файл размером 4 ГБ.

Способ A: С помощью fallocate (быстро, рекомендовано)

sudo fallocate -l 4G /swapfile

Эта команда мгновенно создаёт файл заданного размера, резервируя место на диске. Если fallocate не работает на вашей файловой системе (например, на некоторых старых версиях ext4 с включённым -o discard), используйте Способ B.

Способ B: С помощью dd (медленнее, но универсальнее)

sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress

Здесь bs=1M — блок в 1 мегабайт, count=4096 — количество блоков (4096 * 1М = 4ГБ). status=progress показывает ход выполнения (доступно в современных версиях dd).

⚠️ Важно: Убедитесь, что на целевом разделе достаточно места. Команда df -h покажет свободное пространство.


Шаг 3: Настройка прав дочения и превращение в swap

По умолчанию созданный файл доступен на чтение и запись всем. Это небезопасно для swap-файла. Установим правильные права:

sudo chmod 600 /swapfile

Теперь только пользователь root может читать и записывать в этот файл.

Далее инициализируем файл как swap-область:

sudo mkswap /swapfile

Вывод команды будет примерно таким:

Setting up swapspace version 1, size = 4 GiB (4294967296 bytes)
no label, UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Запомните или сохраните UUID (уникальный идентификатор) — он понадобится для настройки /etc/fstab.



Шаг 4: Активация swap-файла

Теперь включим новое swap-пространство в текущей сессии:

sudo swapon /swapfile

Снова проверьте его наличие:

sudo swapon --show

Вы должны увидеть ваш /swapfile в списке с указанием размера и типа file.

Также команда free -h покажет общий объём swap в строке Swap:.


Шаг 5: Настройка параметров и постоянное включение

5.1 Добавление в /etc/fstab

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

/swapfile none swap sw 0 0

Если вы хотите использовать UUID (более надёжный способ, особенно если путь к файлу может измениться), укажите:

UUID=ваш-uuid-из-шага-3 none swap sw 0 0

Сохраните файл и закройте редактор.

5.2 Настройка vm.swappiness (опционально)

Параметр vm.swappiness контролирует, насколько агрессивно ядро будет использовать swap. Значение от 0 до 100.

  • 0 — ядро будет избегать swap, пока не будет полностью исчерпана ОЗУ.
  • 100 — ядро будет активно использовать swap.
  • По умолчанию в большинстве дистрибутивов — 60.

Проверить текущее значение:

cat /proc/sys/vm/swappiness

Временно изменить (до перезагрузки):

sudo sysctl vm.swappiness=10

Постоянно изменить: добавьте строку в /etc/sysctl.conf или создайте отдельный конфиг в /etc/sysctl.d/99-swappiness.conf:

vm.swappiness=10

Примените изменения без перезагрузки:

sudo sysctl -p

Для большинства десктопных систем рекомендуемое значение — 10-30. Для серверов с большим объёмом ОЗУ можно оставить 60 или даже понизить до 10.


Проверка результата

  1. Перезагрузите систему (sudo reboot), чтобы убедиться, что swap активируется автоматически.
  2. После загрузки выполните:
    sudo swapon --show
    free -h
    
    В выводе должен присутствовать ваш swap-файл.
  3. Проверьте, что запись в /etc/fstab не вызывает ошибок при загрузке. Можно выполнить:
    sudo mount -a
    
    Если команда завершится без ошибок, конфигурация верна.
  4. Следите за использованием swap в реальном времени:
    watch -n 2 free -h
    
    Или используйте утилиту htop (если установлена), где swap отображается вверху.

Возможные проблемы

Проблема: fallocate не работает, файл создаётся с нулевым размером

Решение: Используйте dd (Способ B). Это может происходить на файловых системах, не поддерживающих fallocate (например, некоторые конфигурации NFS или старые ext4).

Проблема: При активации появляется ошибка swapon: /swapfile: swapon failed: Invalid argument

Решение: Скорее всего, файл создан неправильно или имеет неверные права. Убедитесь, что:

  1. Файл существует и имеет размер больше нуля (ls -lh /swapfile).
  2. Права установлены в 600 (sudo chmod 600 /swapfile).
  3. Файл инициализирован через sudo mkswap /swapfile.

Проблема: Swap не активируется после перезагрузки

Решение:

  1. Проверьте синтаксис записи в /etc/fstab. Лучше использовать UUID.
  2. Проверьте вывод sudo mount -a на наличие ошибок.
  3. Убедитесь, что файл /swapfile существует по указанному пути и не был удалён.

Проблема: Система не использует swap, хотя память заканчивается

Решение: Проверьте значение vm.swappiness. Если оно равно 0, система будет стараться не использовать swap. Увеличьте его до 10 или 20. Также проверьте, не переполнен ли swap (free -h показывает Swap: 4.0G 0B 4.0G — это нормально, если используется 0Б).

Проблема: Производительность падает при активном использовании swap

Решение: Swap на HDD (обычный жёсткий диск) сильно замедляет систему. Рассмотрите возможность:

  1. Добавления большего объёма ОЗУ (наиболее эффективное решение).
  2. Использования swap-файла на SSD (гораздо быстрее, но износ накопителя увеличится).
  3. Настройки vm.vfs_cache_pressure и других параметров в /etc/sysctl.conf для оптимизации кэширования.
  4. Увеличения vm.swappiness до 0, если swap используется только как аварийный запас.

Проблема: Недостаточно места на диске для создания swap-файла

Решение: Очистите место, удалив ненужные файлы (/var/log, кэш пакетов, старые ядра). Либо создайте swap-файл на другом разделе/диске, где есть свободное место. В крайнем случае можно создать swap-раздел (через fdisk/gdisk и mkswap), но это потребует переразметки диска и перезагрузки.

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

Swap-файл или swap-раздел: что выбрать?
Какой размер swap-пространства оптимален?
Можно ли изменить swappiness после создания swap?
Что делать, если система не использует swap, хотя память заканчивается?

Полезное

Проверка текущего swap-пространства
Создание swap-файла
Настройка прав доступа и превращение в swap
Активация swap-файла
Настройка параметров и постоянное включение