Как создать файл подкачки (swap) в Ubuntu
Подкачка — место на диске, куда система выносит часть памяти, когда оперативной не хватает. На сервере с маленькой памятью она спасает программы от внезапной остановки. Ниже — как её создать, проверить и убрать.
Содержание 11
Что сделать прямо сейчас
- Подключитесь к серверу — инструкция.
- Проверьте, есть ли подкачка:
free -h. Нули в строкеSwap:значат, что её нет. Если там уже есть размер — подкачка включена, создавать её не нужно. - Проверьте, хватит ли места на диске:
df -h /. В колонкеAvailдолжно быть заметно больше 2 ГБ. - Создайте файл и включите подкачку — пять команд по очереди:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstabПроверьте: free -h. В строке Swap: в колонке total появится размер файла. Последнюю команду запускайте один раз: каждый запуск дописывает в /etc/fstab ещё одну такую же строку.
Что делает каждая команда
| Команда | Что делает |
|---|---|
fallocate -l 2G /swapfile | создаёт на диске файл размером 2 ГБ |
chmod 600 /swapfile | закрывает файл от всех, кроме root: в нём будет содержимое памяти |
mkswap /swapfile | размечает файл как подкачку |
swapon /swapfile | включает подкачку сейчас |
sudo tee -a /etc/fstab | вместе с echo дописывает строку в /etc/fstab, чтобы подкачка включалась после перезагрузки |
Вместо 2G можно взять другой размер: 1G, 4G. Подкачка не заменяет оперативную память — диск во много раз медленнее. Если памяти не хватает и без пиков нагрузки, нужен тариф с большей памятью, а подкачка лишь даёт запас.
Строка в /etc/fstab
Файл /etc/fstab система читает при загрузке. Строка подкачки состоит из шести полей:
| Поле | Что значит |
|---|---|
/swapfile | путь к файлу подкачки |
none | папки для подключения нет — это не диск с файлами |
swap | тип: подкачка |
sw | параметры: для подкачки пишут sw или defaults |
0 0 | не делать резервную копию и не проверять при загрузке |
Ошибка в /etc/fstab может помешать серверу загрузиться. Перед правкой руками сделайте копию: sudo cp /etc/fstab /etc/fstab.bak. Проверить, что строка одна: grep swapfile /etc/fstab. Если строк две, лишнюю удалите в редакторе: sudo nano /etc/fstab — как пользоваться nano.
Как проверить подкачку
| Команда | Что покажет |
|---|---|
free -h | сколько подкачки всего и сколько занято |
swapon --show | какие файлы подкачки включены и их размер |
cat /proc/swaps | то же, в виде таблицы ядра |
Что значат колонки free, — в статье Команда free.
Как изменить размер
Размер включённого файла не меняют. Его выключают, удаляют и создают заново. Строка в /etc/fstab остаётся прежней, дописывать её не нужно.
sudo swapoff /swapfile
sudo rm /swapfile
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfileswapoff переносит всё, что лежит в подкачке, обратно в оперативную память. Запускайте его, когда в free -h в колонке available больше, чем занято подкачки в колонке used.
swappiness: насколько охотно система берёт подкачку
Ядро решает, когда выносить память в подкачку, по числу swappiness — от 0 до 200, по умолчанию 60, менять его не обязательно. Чем меньше число, тем меньше ядро выносит в подкачку.
| Команда | Что делает |
|---|---|
cat /proc/sys/vm/swappiness | показать текущее значение |
sudo sysctl vm.swappiness=10 | поставить 10 до перезагрузки |
Чтобы значение сохранялось после перезагрузки, запишите его в отдельный файл и примените:
echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swappiness.conf
sudo sysctl --systemКак убрать подкачку
- Выключите её:
sudo swapoff /swapfile. - Удалите строку
/swapfile none swap sw 0 0из /etc/fstab:sudo nano /etc/fstab, строку — Ctrl+K, сохранить — Ctrl+O и Enter, выйти — Ctrl+X. - Удалите файл:
sudo rm /swapfile.
Убирайте и файл, и строку: если оставить строку без файла, при загрузке система будет искать подкачку, которой нет.
Ошибки и как их исправить
| Ответ | Что значит | Что сделать |
|---|---|---|
insecure permissions 0644, 0600 suggested | файл могут читать другие пользователи | sudo chmod 600 /swapfile |
skipping - it appears to have holes | файл подкачки создан с пропусками, такой ядро не примет | создайте файл командой dd — как |
swapon failed: Device or resource busy | этот файл уже включён | проверьте swapon --show |
swapon failed: Invalid argument | файл не размечен как подкачка | выполните sudo mkswap /swapfile и снова swapon |
swapon failed: Operation not permitted с sudo | провайдер не даёт включать подкачку на этом тарифе | спросите поддержку провайдера |
fallocate отвечает No space left on device | на диске не хватает места | возьмите размер меньше или освободите место — No space left on device |
Если fallocate не подошёл
swapon проверяет, что файл целиком лежит на диске. На некоторых файловых системах файл от fallocate не проходит эту проверку. Тогда удалите его и создайте командой dd — она пишет файл нулями целиком, это дольше:
sudo rm /swapfile
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfilecount=2048 при bs=1M — это 2 ГБ. Для 4 ГБ напишите count=4096.
Источники
- Справка swapon для Ubuntu 24.04 — команды swapon и swapoff, ключи -a и --show, файлы с дырами, fallocate и dd.
- Справка mkswap для Ubuntu 24.04 — подготовка файла подкачки, создание файла через dd.
- Справка fstab для Ubuntu 24.04 — поля строки в /etc/fstab.
- Справка swapon для Ubuntu 24.04 — ошибки EBUSY, EINVAL и EPERM.
- Справка sysctl для Ubuntu 24.04 — ключи -w и --system.
- Документация ядра Linux 6.8: vm.rst — swappiness: от 0 до 200, по умолчанию 60.
- Исходный код util-linux 2.39.3: swapon.c — предупреждения insecure permissions и appears to have holes.
Сверено 11 октября 2026 года.
Что почитать дальше
- Команда freeсколько памяти свободно и занята ли подкачка.
- Out of memory: Killed processесли программы закрываются из-за нехватки памяти.
- Команды df и duсколько места на диске.
- Как настроить VPS с нулячто ещё сделать на новом сервере.
Проверено и обновлено: 11.10.2026