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

Добавление swap‑файла в Linux

• 9 min read • Linux • Обновлено 21 Nov 2025
Добавление swap‑файла в Linux
Добавление swap‑файла в Linux

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

  • Swap‑файлы vs swap‑разделы
  • Перед началом: Btrfs и SSD
  • Проверка текущего swap
  • Сколько swap нужно?
  • Создание swap‑файла
  • Подготовка swap‑файла
  • Включение swap‑файла
  • Добавление в /etc/fstab
  • Проверка использования swap
  • Приоритет swap
  • Быстрый рецепт

NVMe SSD SanDisk на столе.

Добавьте swap‑пространство на Linux‑машину или увеличьте существующее — без сложных операций с разделами. Ниже — понятный пошаговый алгоритм, советы по безопасности и сценарии, когда лучше выбрать альтернативы.

Swap‑файлы vs swap‑разделы

Когда может понадобиться добавить swap:

  • Swap постоянно заполняется.
  • При установке случайно не создали swap.
  • Было много оперативной памяти, а теперь нужно больше виртуальной памяти.
  • Унаследовали систему без swap.

Самый простой вариант — создать swap‑файл: это обычный файл, который ядро использует как область подкачки. Swap‑файл работает вместе с любым существующим swap (файлом или разделом).

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

Важно: swap — не просто «последнее убежище» при нехватке RAM. Без swap ядру сложнее управлять памятью грамотно: кеши и буферы становятся менее гибкими, а системы — более хрупкими.

Перед началом: Btrfs и SSD

Два коротких, но важных замечания.

Btrfs и swap

Btrfs исторически имел ограничения для swap‑файлов из‑за copy‑on‑write. С ядра 5.0 swap‑файлы на Btrfs возможны при соблюдении условий:

  • Файл создан без copy‑on‑write (NOCOW).
  • Файл не сжат.
  • Файл не располагается одновременно на разных физических дисках.

Если ваш корневой FS — ext4, беспокоиться не о чем. На XFS и некоторых других FS также возможны особенности: заранее проверьте документацию и версии ядра.

SSD и ресурсоёмкая подкачка

Раньше советовали избегать swap на SSD из‑за износа. Сейчас это уже не критично: современные SSD при нормальной эксплуатации выдерживают годы работы. Swap на SSD часто намного быстрее, чем swap‑раздел на механическом HDD.

Тем не менее, если система активно свопит (большие постоянные нагрузки), возможно лучше увеличить RAM или добавить выделенный swap‑раздел/выделенный носитель для длительных рабочих нагрузок.

Важно: не путайте частую подкачку (thrashing) с нормальным использованием swap — при сильном thrashing лучше разбираться с причинами (утечки памяти, неэффективные процессы), а не только увеличивать swap.

Проверка текущего swap

Перед созданием swap‑файла посмотрите, есть ли уже swap:

  • Команда free показывает использованную и свободную память. Опция -h делает вывод удобочитаемым:
free -h

Вывод команды free -h в терминале

Колонка Swap покажет общий объём и текущую загрузку области подкачки.

  • Другой способ — swapon:
swapon --show

Если команда ничего не выводит — swap не настроен.

Ещё один вывод: /proc/swaps

cat /proc/swaps

Если swap уже есть, учитывайте его объём при планировании нового файла.

Сколько swap нужно?

Строгого правила нет. Классическое «в два раза RAM» уже устарело для современного объёма памяти. Подходы — эвристические:

  • На старых или лёгких системах (RAM ≤ 2 ГБ) — разумно выделить 1–2× RAM.
  • На рабочих станциях и серверах с большим объёмом RAM (≥ 16–32 ГБ) рекомендуют небольшие дополнения (например, несколько ГБ) и/или эксплуатировать swap как резерв.
  • Для гибернации (suspend‑to‑disk) swap должен быть >= объёма RAM, чтобы сохранить содержимое RAM на диск.

Практическая рекомендация:

  • Если планируется гибернация — выделите swap ≥ RAM.
  • Если нет гибернации — начните с 2–8 ГБ в зависимости от типа нагрузки и мониторьте.
  • Swap можно всегда удалить и пересоздать другого размера — это безопасно и просто.

Руководствуйтесь мониторингом: после настройки следите за swappiness и реальным использованием swap в течение недели и корректируйте.

Создание swap‑файла

Не используйте fallocate по умолчанию — man swapon предупреждает, что файлы с дырами или COW‑файлы могут быть не поддержаны. Самый переносимый способ — dd с /dev/zero.

Пример: создаём swap‑файл 1 ГБ (1 ГБ = 1024 × 1024 КБ в этом примере):

sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576

Параметры:

  • if — входной файл (/dev/zero для нулевых байтов).
  • of — путь к создаваемому файлу (/swapfile).
  • bs — размер блока, здесь 1024 байт.
  • count — количество блоков (bs × count = размер файла).

Альтернатива (быстрее на некоторых FS и ядрах):

  • Для XFS и новых ядер fallocate может быть поддержан, но используйте с осторожностью. Если вы уверены в FS и ядре, можно применить fallocate для более быстрой операции.

Подготовка swap‑файла

Запустите mkswap для подготовки файла:

sudo mkswap /swapfile

mkswap подготовит метаданные swap. Обратите внимание на предупреждение о правах доступа — файл должен быть доступен только root.

Включение swap‑файла

Сначала ограничьте права доступа — только root должен читать и писать файл:

sudo chmod 600 /swapfile

Включите файл как swap:

sudo swapon /swapfile

Проверьте, что файл активирован:

swapon --show

или

free -h

Если нужно временно отключить swap:

sudo swapoff /swapfile

И затем удалить файл:

sudo rm /swapfile

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

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

/swapfile none swap sw 0 0

Пример с приоритетом pri=10:

/swapfile none swap sw,pri=10 0 0

Пояснение полей fstab:

  • Файловая система: путь к swap‑файлу.
  • Точка монтирования: none (файл не монтируется как обычная FS).
  • Тип: swap.
  • Опции: sw и дополнительные опции (например, pri=10). Не ставьте пробел между опциями.
  • Dump и Pass: обычно 0 0.

После внесения строки протестируйте:

sudo swapon -a
swapon --show

И перезагрузите для проверки автозапуска.

Файл /etc/fstab с выделенной строкой swapfile

Проверка использования swap

Команды для проверки:

free -h
swapon --show
cat /proc/swaps
vmstat 1 5

Колонки swapon –show:

  • Name — путь к swap‑ресурсу.
  • Type — partition/file.
  • Size — объём.
  • Used — использованный объём.
  • Prio — приоритет.

Приоритет swap

Каждому swap‑ресурсу назначается приоритет (pri). По умолчанию автоматически назначенные приоритеты отрицательны. Ручной диапазон — 0..32767, чем выше значение, тем раньше будет использован ресурс.

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

/swapfile none swap sw,pri=10 0 0

Если два ресурса имеют одинаковый приоритет, система будет чередовать их использование.

Быстрый рецепт

Кратко, все команды вместе:

sudo dd if=/dev/zero of=/swapfile2 bs=1024 count=1048576
sudo mkswap /swapfile2
sudo chmod 600 /swapfile2
sudo swapon /swapfile2
swapon --show

Добавьте в /etc/fstab для постоянности.

Создание swapfile2 через dd в терминале

Бум — задача решена.

Снятие и изменение swap‑файла

Чтобы удалить swap‑файл:

sudo swapoff /swapfile
sudo sed -i '\|/swapfile|d' /etc/fstab
sudo rm /swapfile

Чтобы заменить на файл другого размера — выключите, удалите, создайте новый dd/mkswap, включите и обновите fstab.

Настройка swappiness и производительность

Swappiness — параметр ядра vm.swappiness (0–100), который управляет тем, насколько агрессивно ядро использует swap вместо освобождения страниц кеша.

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

cat /proc/sys/vm/swappiness

Временно изменить:

sudo sysctl vm.swappiness=10

Постоянно (в /etc/sysctl.conf или /etc/sysctl.d/99-sysctl.conf):

vm.swappiness=10

Значение 10–30 обычно подходит десктопам; серверы с большим количеством RAM могут использовать 1–10. Экспериментируйте и измеряйте.

Когда swap‑файл не лучший выбор

Контрпримеры/ограничения:

  • Системы с очень интенсивной подкачкой: swap на SSD убыстрит операции, но лучше увеличить RAM.
  • Если требуется максимально предсказуемая задержка I/O (RT‑системы) — выделенный swap‑раздел или быстрый отдельный диск могут вести себя стабильнее.
  • На старых Btrfs без поддержки некопирующихся (NOCOW) файлов swap может быть невозможен.

Альтернативы:

  • Добавить RAM физически.
  • Использовать swap‑раздел на отдельном диске.
  • Настроить zram/zswap (сжатие в памяти) для снижения I/O на swap.

Дополнительные инструменты и методы

  • zram/zswap: компрессия страниц в RAM или в кэше устройства, уменьшает обращение к диску, полезно для систем с ограниченной оперативной памятью.
  • systemd‑swap: менеджер swap‑файлов/разделов, динамически управляет swap в зависимости от нагрузки.
  • tmpfs для временных данных: аккуратно с объёмом и swap, tmpfs использует RAM и может приводить к большей подкачке.

Риски и меры снижения

РискПоследствиеМеры снижения
Неправильные права на swap‑файлеДоступ для не root → безопасностьУстановить chmod 600; проверять владельца root:root
Swap на COW/сжатом Btrfsswapon может отказатьСоздать файл с NOCOW, отключить сжатие для файла
Частые записи на SSDИзнос носителяОценить нагрузку; предпочесть zram или добавить RAM
Удаление строки в fstab без выключенияВо время загрузки — ошибкиПрежде чем править fstab — создать резервную копию; тестировать swapon -a

Критерии приёмки

  • swapon –show отображает новый swap‑файл.
  • free -h показывает ожидаемый объём Swap.
  • После перезагрузки swap автоматически активен.
  • Права файла — 600 и владелец root.

Мини‑методология (SOP): быстрый чеклист администратора

  1. Проверить текущий swap: free -h; swapon –show.
  2. Если swap нужен — решить размер (см. эвристики выше).
  3. Создать файл через dd (или fallocate с оговорками).
  4. mkswap, chmod 600.
  5. swapon /path/to/swapfile.
  6. Проверить swapon –show и free -h.
  7. Добавить строку в /etc/fstab (с pri= при необходимости).
  8. Настроить vm.swappiness при необходимости.
  9. Наблюдать 7–14 дней и при необходимости корректировать.

Роль‑ориентированные чек‑листы

Администратор:

  • Проверить журнал (journalctl) на ошибки swapon.
  • Защитить swap‑файл правами 600 и владельцем root.
  • Убедиться, что fstab корректен и протестирован.

Разработчик/пользователь сервера:

  • Сообщить администратору о заметной утечке памяти.
  • При тестировании нагрузки фиксировать показатели RAM и swap.

Оператор облака/DevOps:

  • Автоматизировать создание swap через конфигурационные инструменты (Ansible, Terraform provisioners).
  • Добавлять мониторинг метрик swap и алерты при росте использования.

Тестовые случаи и приёмка

  • Тест 1: Создание swap — swapon –show должен показать файл; free указывает объём.
  • Тест 2: Перезагрузка — swap активен автоматически.
  • Тест 3: swapoff — ресурс корректно отключается без зависших процессов.
  • Тест 4: Неправильный fstab — загрузиться в rescue‑режим и исправить.

Мермайд: дерево решений при выборе размера swap

flowchart TD
  A[Определите объём RAM] --> B{Планируете гибернацию?}
  B -- Да --> C[Выделите swap ≥ объёма RAM]
  B -- Нет --> D{RAM ≤ 2 ГБ?}
  D -- Да --> E[swap 1–2× RAM]
  D -- Нет --> F{RAM ≥ 16 ГБ?}
  F -- Да --> G[swap 2–8 ГБ, мониторинг]
  F -- Нет --> H[swap 4–8 ГБ]
  C --> I[Тестировать и мониторить]
  E --> I
  G --> I
  H --> I

Однострочные определения

  • swap: пространство на диске, используемое как расширение оперативной памяти.
  • swappiness: параметр ядра, контролирующий склонность к использованию swap.
  • pri: приоритет swap‑ресурса, чем выше — тем раньше его используют.

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

  • Swap может содержать данные из оперативной памяти; на многопользовательских серверах рассмотрите шифрование раздела/файла swap или использование LUKS, если хранение чувствительной информации в swap — риск.
  • Для swap‑файла рекомендуется ограничить доступ правами 600.

Локальные особенности и советы

  • На системах с Btrfs: отмечайте NOCOW и отключение сжатия для swap‑файла. Создайте файл с chattr +C, чтобы отключить COW перед заполнением файла.
  • На системах с systemd и автоматической генерацией swap (например, Ubuntu): проверьте, не перезаписывается ли /etc/fstab системной службой.

Шаблон записи в /etc/fstab

# swap file
/swapfile none swap sw,pri=10 0 0

Подведение итогов

Swap‑файл — гибкий и простой способ добавить или расширить виртуальную память в Linux без переразбивки дисков. Создаётся в несколько команд, безопасен при соблюдении прав доступа и совместимости с файловой системой. Настройте приоритеты и swappiness под конкретные задачи и следите за реальным использованием, чтобы принять решение о необходимости увеличения RAM или других оптимизаций.

Ключевые выводы:

  • Создание swap‑файла безопасно и быстро.
  • Btrfs требует дополнительных настроек (NOCOW, без сжатия).
  • Swap на SSD обычно приемлем и часто быстрее HDD.
  • Для гибернации swap должен быть ≥ RAM.
Поделиться: 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 быстро