Linux

Создание swap-файла в Linux: подробное руководство

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

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

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

Файл подкачки (swap) в Linux — это область на диске, которая используется как расширение оперативной памяти (RAM). Когда физической памяти становится недостаточно, система автоматически перемещает неактивные данные из RAM в swap, что предотвращает аварийное завершение процессов из-за нехватки памяти.

Создание swap-файла — это быстрая и гибкая альтернатива выделению swap-раздела. Вы сможете:

  • Стабилизировать работу системы при пиковых нагрузках или при работе с памятью-ёмкими приложениями.
  • Увеличить доступную память без апгрейда железа.
  • Настроить параметры подкачки под конкретные задачи (сервер, десктоп, встраиваемая система).

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

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

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

  1. У вас есть доступ к root-учётной записи или права sudo.
  2. На диске есть незанятое пространство. Размер swap-файла зависит от ваших потребностей:
    • Для систем с 4 ГБ RAM и менее: размер swap = 1.5–2 × RAM.
    • Для систем с 8+ ГБ RAM: достаточно 1–4 ГБ swap (или даже меньше, если RAM >16 ГБ).
    • Для серверов с большими базами данных: может потребоваться swap размером с RAM.
  3. Установлены базовые утилиты: fallocate (обычно в пакете util-linux) или dd (есть везде). Проверить: which fallocate.

Пошаговая инструкция

Шаг 1: Проверьте текущую конфигурацию swap

Прежде чем создавать новый файл, убедитесь, что у вас нет уже активного swap (например, раздела или файла по умолчанию).

free -h

или

swapon --show

Что вы увидите:

              total        used        free      shared  buff/cache   available
Mem:           7.7G        1.2G        5.1G        156M        1.4G        6.1G
Swap:          2.0G          0B        2.0G

Если в строке Swap показан ноль или раздел отсутствует в выводе swapon --show, продолжайте создание файла.

Шаг 2: Создайте файл нужного размера

Рекомендуемый способ — fallocate, так как он создаёт файл мгновенно, без заполнения нулями.

sudo fallocate -l 2G /swapfile

Здесь:

  • -l 2G — размер файла (2 гигабайта). Замените 2G на нужное значение: 1G, 4G, 512M и т.д.
  • /swapfile — путь к файлу. Обычно размещают в корне /.

Альтернатива для старых систем (если fallocate недоступен):

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

bs=1M count=2048 создаст файл размером 2048 МБ (2 ГБ). Этот метод медленнее, так как записывает нули во весь файл.

Шаг 3: Установите корректные права доступа

Swap-файл содержит чувствительные данные (фрагменты памяти процессов). Он должен быть доступен только суперпользователю.

sudo chmod 600 /swapfile

Проверьте права:

ls -lh /swapfile

Вывод должен быть: -rw------- 1 root root ... /swapfile.

Шаг 4: Отформатируйте файл под swap

Подготовьте файл к использованию в качестве пространства подкачки:

sudo mkswap /swapfile

Пример вывода:

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

Запомните UUID (если планируете использовать его в /etc/fstab), но обычно достаточно указать путь к файлу.

Шаг 5: Активируйте swap-файл

Включите файл в систему без перезагрузки:

sudo swapon /swapfile

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

/swapfile none swap sw 0 0

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

Шаг 6: Настройте параметры swappiness (опционально)

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

Для десктопов (чтобы не тормозить приложениях) рекомендуется 10–20.
Для серверов (чтобы оставить больше данных в RAM) — 1–5.

Установите временно (до перезагрузки):

sudo sysctl vm.swappiness=10

Чтобы значение сохранилось, добавьте в /etc/sysctl.conf:

vm.swappiness=10

И примените: sudo sysctl -p.

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

  1. Убедитесь, что swap активен:
    swapon --show
    

    В выводе должен быть ваш /swapfile.
  2. Проверьте общую память:
    free -h
    

    В строке Swap теперь будет показан размер и использование.
  3. Убедитесь, что настройка постоянна (перезагрузите систему и снова выполните free -h).
  4. (Опционально) Проверьте запись в /etc/fstab:
    cat /etc/fstab | grep swap
    

    Должна быть строка с /swapfile.

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

❌ Ошибка fallocate: fallocate failed: No space left on device

  • Причина: На диске недостаточно свободного места.
  • Решение: Освободите место (df -h для проверки) или создайте файл меньшего размера.

❌ Ошибка chmod: changing permissions of ‘/swapfile’: Operation not permitted

  • Причина: Файл находится на смонтированной в режиме noexec или nosuid файловой системе (например, некоторые разделы /home).
  • Решение: Создайте файл в корне / или на разделе, где разрешены изменения прав.

❌ После перезагрузки swap не активируется

  • Причина: Ошибка в /etc/fstab (лишние пробелы, неправильный путь) или файл был перемещён/удалён.
  • Решение: Проверьте синтаксис /etc/fstab командой sudo mount -a (ошибка будет выведена). Убедитесь, что файл /swapfile существует и имеет права 600.

❌ Система «зависает» при активном использовании swap

  • Причина: Слишком высокое значение vm.swappiness (система агрессивно пишет в swap на медленном HDD).
  • Решение: Уменьшите vm.swappiness до 1–5. Для SSD это менее критично, но тоже стоит настроить.

mkswap выдаёт предупреждение о размере файла

  • Причина: Файл создан не целым числом мегабайт (например, 2.5 ГБ).
  • Решение: mkswap обычно работает с любым размером, но для совместимости лучше создавать файл размером, кратным 4 КБ. Пересоздайте файл с размером, кратным 1 МБ (например, 2048M вместо 2G).

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

Зачем нужен swap-файл, если есть RAM?
Можно ли удалить swap-файл после создания?
В чём разница между swap-файлом и swap-разделом?
Как проверить, что swap работает?

Полезное

Проверьте текущую конфигурацию swap
Создайте файл нужного размера
Установите корректные права доступа
Отформатируйте файл под swap
Активируйте swap-файл
Настройте параметры swappiness (опционально)