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

Как добавить файл подкачки (swap) в Linux без изменения разделов

12 min read Linux Обновлено 24 Dec 2025
Как добавить swap в Linux без разделов
Как добавить swap в Linux без разделов

SanDisk NVMe SSD на столе

Ключевые темы

  • Сравнение: swap файл vs swap раздел
  • Особенности Btrfs и SSD
  • Проверка текущего состояния swap
  • Рекомендации по размеру swap
  • Пошаговое создание, подготовка и включение swap файла
  • Добавление в /etc/fstab и установка приоритета
  • Мониторинг, тесты, устранение неполадок и безопасность

Введение

Добавить или увеличить пространство подкачки (swap) в Linux можно быстро и без создания новых разделов — с помощью swap файла. Это удобно для серверов, рабочих станций и ноутбуков, когда изменить разделы сложно или рискованно. Этот материал объясняет, как безопасно создать swap файл, на что обратить внимание при использовании Btrfs и SSD, как настроить приоритет, а также содержит вспомогательные чек-листы, сценарии тестирования и рекомендации по безопасности.

Important: любые операции с системными файлами делайте от имени root или с sudo. Перед редактированием /etc/fstab сохраните его копию.

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

Коротко:

  • Swap раздел — выделенный раздел диска, который используется как swap. Надёжно и просто в некоторых случаях (например, при установке системы).
  • Swap файл — обычный файл в файловой системе, который ядро использует как swap. Гибко: можно создать, изменить, удалить без изменения разделов.

Когда выбирать swap файл:

  • Нужно быстро добавить swap без переразметки диска.
  • Нужно тестировать разные размеры swap и приоритеты.
  • На большинстве современных систем разница в производительности минимальна.

Когда предпочесть раздел:

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

Контекст: раньше swap файл мог быть медленнее из-за особенностей файловых систем и работы с hole-совыми файлами. Современные ядра и файловые системы сделали swap файлы надёжным вариантом в большинстве сценариев.

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

Btrfs

Btrfs имеет особенности, которые ранее мешали использовать swap файлы. С ядра Linux 5.0 появились условия, при которых swap файл на Btrfs поддерживается. Требования:

  • Файл не должен использовать copy-on-write (NOCOW).
  • Файл не должен быть сжат.
  • Файл не должен располагаться одновременно на нескольких устройств (не “straddle”).

Если вы используете Btrfs, создавайте файл с атрибутом NOCOW (chattr +C) или размещайте swap в другом файловом разделе (например, ext4). Пример создания файла с NOCOW будет приведён ниже.

SSD

Ранее советовали не размещать swap на SSD из-за опасений по износу. Сегодня это в большинстве случаев неактуально:

  • Современные SSD имеют ресурс, превышающий срок службы типичной машины.
  • Swap на SSD обычно быстрее, чем swap на механическом диске.

Тем не менее:

  • Если конфиденциальные данные могут попасть в swap, рассмотрите шифрование swap (LUKS/полная шифровка раздела) или использование zram/zswap.
  • Для интенсивных сценариев своппинга (частые своп/ансвоп операции) SSD может изнашиваться быстрее, но для обычного использования это редко критично.

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

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

Используйте команду free с опцией -h:

free -h

Результат free -h в терминале

Полезные поля:

  • “total” — общий объём памяти.
  • “available” — объём памяти, доступный приложениям.
  • “buff/cache” — объём используемой под кеширование памяти, который при необходимости можно освободить.

Для просмотра активных swap устройств используйте:

swapon --show

Если команда возвращает пустой вывод — swap отсутствует.

Важно: учитывайте уже существующий swap при расчёте дополнительного пространства. Можно добавлять несколько swap файлов, и они будут работать параллельно.

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

Нету универсального ответа. Ранее рекомендовалось “в два раза больше RAM” — это устаревшее правило. Советы зависят от целей:

  • Если вы планируете гибернацию (suspend-to-disk), swap должен быть как минимум равен объёму RAM + немного про запас (например, +1–2 ГБ). Гибернация сохраняет содержимое RAM в swap.
  • Для обычных рабочих станций с большим объёмом RAM (16–64 ГБ) swap обычно требуется для аварийного вытеснения и не обязан быть большим: 1–4 ГБ часто достаточно.
  • Для серверов и систем с переменными нагрузками анализируйте фактическое использование: swapon –show, vmstat, sar.

Практическая эвристика:

  • RAM ≤ 4 ГБ: swap 1–2× RAM.
  • RAM 4–16 ГБ: swap 0.5–1× RAM (или 2–8 ГБ).
  • RAM >16 ГБ: swap 1–4 ГБ обычно достаточно, если нет гибернации.

Главное: проще добавить/удалить swap файл, чем перестраивать разделы. Начните с разумного размера и мониторьте использование.

Создание swap файла (без fallocate)

Рекомендуемый способ — использовать dd с /dev/zero. Это гарантирует отсутствие «holes» и совместимость с разными файловыми системами.

Команда и пояснение параметров:

  • if — input file (обычно /dev/zero для нулевых байтов).
  • of — output file (путь к swap файлу, например /swapfile).
  • bs — блок (например, 1K, 4K, 1M).
  • count — количество блоков (size = bs × count).

Пример создания 1 ГБ swap файла (машина с 2 ГБ RAM в оригинальном примере):

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

Примеры с более понятной записью (рекомендуемая практика):

  • 1 ГБ:
sudo dd if=/dev/zero of=/swapfile bs=1M count=1024 status=progress
  • 4 ГБ:
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress

Замечание: параметр status=progress показывает прогресс на современных версиях dd.

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

  • fallocate быстрее, но может создать разрежённый файл (holes) на некоторых файловых системах, что приведёт к ошибке swapon.
  • На XFS с Linux >=4.18 fallocate поддерживается, но чтобы избежать проблем, используйте dd или заранее убедитесь в совместимости.

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

На Btrfs надо отключить COW для файла:

sudo btrfs property set -ts / file COW false

Другой подход — создать файл в каталоге с установленным атрибутом NOCOW:

sudo mkdir /swap-btrfs
sudo chattr +C /swap-btrfs
sudo dd if=/dev/zero of=/swap-btrfs/swapfile bs=1M count=1024 status=progress

После создания файла можно проверить, что у него отсутствует атрибут COW и что файл не сжат.

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

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

sudo mkswap /swapfile

mkswap выведет предупреждение о правах доступа (Ownership/Permissions). Нужно сделать файл доступным только для root:

sudo chmod 600 /swapfile

Пояснение: режим 600 означает, что владелец (root) может читать и писать, а группа и остальные — нет. Это снижает риск несанкционированного чтения содержимого swap файла.

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

Чтобы включить swap немедленно:

sudo swapon /swapfile

Проверка:

swapon --show
free -h

Команды покажут активный swap и сколько из него используется.

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

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

/swapfile none swap sw,pri=10 0 0

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

  • File system: путь к swap файлу.
  • Mount point: none — файл не монтируется как файловая система.
  • Type: swap.
  • Options: например sw или sw,pri=10. pri задаёт приоритет использования.
  • Dump и Pass: обычно 0 0 для swap.

Важное примечание: не оставляйте пробелы внутри поля options между sw и запятой. После правки сохраните /etc/fstab и проверьте корректность:

sudo mount -a

Если mount -a не выдаёт ошибок, запись корректна.

Приоритет swap и как он работает

Каждому swap ресурсу можно задать приоритет (pri). Диапазон 0..32767 для ручного задания; автоматически назначенные приоритеты — всегда отрицательные.

Правила использования:

  • Swap с большим pri будет использоваться раньше.
  • Если два ресурса имеют одинаковый pri, они будут использоваться поочерёдно.

Чтобы задать приоритет, добавьте опцию pri в /etc/fstab: pri=10. После перезагрузки проверьте:

swapon --show

Удаление или замена swap файла

Если нужно удалить swap файл:

sudo swapoff /swapfile
sudo rm /swapfile

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

Чтобы увеличить swap, проще создать новый больший swap файл или добавить ещё один swap файл, чем изменять существующий:

sudo dd if=/dev/zero of=/swapfile2 bs=1M count=2048
sudo mkswap /swapfile2
sudo chmod 600 /swapfile2
sudo swapon /swapfile2

Или удалить старый и создать новый с нужным размером.

Альтернативы и расширенные опции

zram

  • zram создаёт сжатый swap в оперативной памяти. Подходит для систем с малой RAM и где важна скорость.
  • Плюсы: низкая задержка, снижение I/O на диск.
  • Минусы: использует часть RAM как пул для сжатого swap.

zswap

  • zswap — компрессионный кэш swap, который размещается в оперативной памяти. При переполнении сбрасывается на физический диск.

Шифрование swap

  • Swap может содержать конфиденциальные данные. Для защиты используйте шифрование (например, LUKS на разделе swap) или включите автоматическое шифрование swap при загрузке.

Swap на LVM

  • Можно создать логический том (LV) и сделать его swap. Это удобно, если вы управляете LVM и хотите гибко изменять размер swap без работы с файловой системой.

Настройка swappiness и другие тюнинги

Swappiness — параметр ядра, который управляет склонностью использовать swap. Значение в диапазоне 0..100:

  • 0 — минимальная склонность к своппингу (используется только в крайних случаях).
  • 60 — значение по умолчанию в большинстве дистрибутивов.
  • 100 — агрессивное использование swap.

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

cat /proc/sys/vm/swappiness

Временно установить:

sudo sysctl vm.swappiness=10

Постоянно в /etc/sysctl.conf:

vm.swappiness=10

Подбор значения:

  • Для настольных систем с большим объёмом RAM можно понизить swappiness до 10–20.
  • Для серверов с ограниченной RAM и предсказуемыми нагрузками оставьте дефолт или немного выше.

Другие параметры:

  • vm.vfs_cache_pressure — контроль очистки кэшей VFS (по умолчанию 100). Уменьшение значения удерживает кэш дольше.

Мониторинг и тестирование

Команды для мониторинга:

  • free -h
  • swapon –show
  • vmstat 1 5
  • top или htop (посмотрите столбцы VIRT, RES, SWAP для процессов)
  • iostat, iotop — для оценки I/O нагрузки при активном swap

Тесты и критерии приёмки:

  • Swap активирован: swapon –show показывает созданный файл.
  • Swap не используется в постоянном режиме: длительное использование swap — индикатор недостатка RAM или неправильной настройки swappiness.
  • При включении swap не появляются ошибки в dmesg или journalctl.

Примеры тест-кейсов:

  1. Создание 1 ГБ swap файла, включение и проверка swapon –show.
  2. Добавление в /etc/fstab, перезагрузка, проверка активации.
  3. Установка pri и проверка приоритетов при наличии двух swap ресурсов.
  4. Проверка поведения при заполнении swap и наблюдение I/O.

Устранение распространённых ошибок

Ошибка: swapon: /swapfile: swapon failed: Invalid argument

  • Причина: файл может быть разрежённым (holes) или сжат/использует COW (Btrfs). Решения: создайте файл через dd, отключите COW, используйте не сжатый каталог.

Ошибка: При загрузке система зависает или долго грузится

  • Проверьте /etc/fstab на синтаксические ошибки. Перед перезагрузкой выполните sudo mount -a для проверки.

Swap не ведёт себя как ожидалось

  • Проверьте swappiness, vmstat и iotop. Возможно, приложение использует слишком много RAM и активно свопится.

Безопасность и конфиденциальность

  • Swap может содержать данные, которые были в RAM (включая фрагменты файлов, ключи, пароли). Если это важно, используйте шифрование swap или отключайте swap для конфиденциальных систем.
  • Для ноутбуков и портативных устройств с чувствительными данными: используйте шифрование диска (LUKS) или шифрованный swap.
  • Для серверов: рассмотрите использование tmpfs/zram, если допустима потеря в случае перезагрузки.

Роль-based чек-листы

Для администратора сервера:

  • Оценить текущее использование RAM и swap.
  • Решить, нужен ли swap для гибернации.
  • Создать swap файл через dd или LV на LVM.
  • Защитить права на файл chmod 600.
  • Добавить запись в /etc/fstab с pri при необходимости.
  • Настроить swappiness и vm.vfs_cache_pressure.
  • Настроить мониторинг (Prometheus/node_exporter, sysstat).

Для домашнего пользователя/настольного ПК:

  • Создать небольшой swap (1–4 ГБ) если RAM < 16 ГБ.
  • Для гибернации — убедиться, что swap >= RAM.
  • Ограничить swappiness до 10–20.
  • Рассмотреть zram для экономии дискового I/O.

Для разработчика/тестирования:

  • Быстро добавлять и удалять swap файлы для тестов.
  • Логировать поведение при высокой нагрузке памяти.
  • Использовать отдельный диск/раздел для воспроизводимости тестов.

Мини-SOP: быстрый сценарий (шаг за шагом)

  1. Проверить наличие swap:
free -h
swapon --show
  1. Создать файл 2 ГБ:
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress
  1. Подготовить и защитить файл:
sudo mkswap /swapfile
sudo chmod 600 /swapfile
  1. Включить swap:
sudo swapon /swapfile
swapon --show
  1. Добавить в /etc/fstab:
/swapfile none swap sw,pri=10 0 0
  1. Проверить после перезагрузки.

Примеры команд и сниппеты (cheat sheet)

  • Создать 512 МБ swap:
sudo dd if=/dev/zero of=/swapfile512 bs=1M count=512 status=progress
sudo mkswap /swapfile512
sudo chmod 600 /swapfile512
sudo swapon /swapfile512
  • Выключить и удалить swap:
sudo swapoff /swapfile512
sudo rm /swapfile512
  • Временно изменить swappiness:
sudo sysctl vm.swappiness=10
  • Постоянно изменить swappiness:
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf

Совместимость и заметки по версиям ядра

  • swap файлы на Btrfs официально поддерживаются с Linux 5.0 при соблюдении условий (NOCOW, не сжатые).
  • fallocate для swap стал безопасным на XFS начиная с Linux 4.18; на других FS fallocate может привести к созданию разрежённого файла.
  • Всегда проверяйте dmesg/journalctl после попытки swapon, если возникают ошибки.

Decision flowchart

flowchart TD
  A[Нужен ли swap?] -->|Да| B{Есть ли swap сейчас?}
  B -->|Нет| C[Создать swap файл]
  B -->|Да| D{Достаточен ли размер?}
  D -->|Да| E[Настроить swappiness]
  D -->|Нет| F[Добавить swap файл / увеличить]
  C --> G[Использовать dd, mkswap, chmod, swapon]
  F --> G
  G --> H[Добавить в /etc/fstab]
  H --> I[Проверить после перезагрузки]
  E --> I

Частые сценарии и примеры применения

Сценарий: ноутбук с 8 ГБ RAM и планом на гибернацию — создайте swap ≥ 8 ГБ. Для настольного ПК с 32 ГБ RAM, где гибернация не нужна, достаточно 2–4 ГБ.

Сценарий: сервер с 4 ГБ RAM, высокий пиковый спрос — лучше выделить 4–8 ГБ swap и настроить мониторинг; рассмотрите zram как альтернативу при ограниченном дисковом I/O.

Краткое резюме

  • Swap файл — гибкий и безопасный способ добавить подкачку без изменения разделов.
  • Используйте dd для совместимости между файловыми системами; на Btrfs отключите COW и не используйте сжатие.
  • Защитите swap файл правами 600 и при необходимости шифруйте.
  • Настройте swappiness и мониторьте поведение системы.

Notes: если вы не уверены в последствиях, протестируйте пассивно: создайте небольшой swap файл, проверьте поведение и постепенно увеличивайте.

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

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

Команды Linux
Файлыtar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc · tr
Процессыalias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap
Сетьnetstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld

Заключение

Добавление swap файла — несложная операция, но требует внимательности: используйте корректный метод создания (dd), установите права и при необходимости настройте приоритет и шифрование. Наблюдение за системой после изменений поможет понять, нужно ли ещё регулировать размер swap или параметры swappiness.

Boom. Job done.

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

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

Как распознать shovelware в Nintendo eShop
Игры

Как распознать shovelware в Nintendo eShop

Nearby Share на Mac через NearDrop
Руководство

Nearby Share на Mac через NearDrop

Использовать Android как веб‑камеру по USB
How-to

Использовать Android как веб‑камеру по USB

Как контролировать расход мобильных данных на Android
Mobile

Как контролировать расход мобильных данных на Android

Скриншот Touch Bar на Mac — как сделать
macOS

Скриншот Touch Bar на Mac — как сделать

Сделать Alexa помощником на Android
Гайды

Сделать Alexa помощником на Android