SWAP - как создать, подключить, очистить и отключить файл подкачки в Linux

Как создать и подключить файл подкачки SWAP?

Для начала, нужно убедиться, что swap ещё не подключен:
swapon -s

Если команда выдала пустой результат или что-то навроде:

 Filename                Type        Size    Used    Priority 

— значит, своп, скорее всего отсутствует.

Дополнительно проверим командой:
free -m

Своп нулевой
Если в таблице в строке swap стоит 0, значит своп отсутствует.

Проверка наличия свободного места на диске

Теперь, надо проверить, сколько свободного места есть на диске:
df -h

В результате, мы увидим что-то подобное:

1
2
3
4
5
6
7
8
9
root@server:~# df -h
Файловая система Размер Использовано  Дост Использовано% Cмонтировано в
/dev/vda1           30G          20G  9,0G           66% /
udev                10M            0   10M            0% /dev
tmpfs              403M          41M  362M           11% /run
tmpfs             1006M         336K 1005M            1% /dev/shm
tmpfs              5,0M            0  5,0M            0% /run/lock
tmpfs             1006M            0 1006M            0% /sys/fs/cgroup
tmpfs             1006M         492K 1005M            1% /tmp

Как мы видим, доступно 9 гигабайт дискового пространства - вполне достаточно, чтобы создать своп-файл.

Создание файла SWAP

Допустим, мы хотим создать swap-файл размером 4 гигабайта.
Далее, здесь существует 2 подхода, традиционный медленный и новый быстрый:

Быстрый способ

Используем fallocate:
fallocate -l 4G /swapfile

Результатом будет пустая строка, это нормально.
В отличие от dd, результат будет получен почти сразу, и я рекомендую именно его.

Традиционный, медленный способ

Или используем команду:
dd if=/dev/zero of=/swapfile bs=1G count=4

Синтаксис команды простой:

  • dd — команда предназначена для того, чтобы что-то куда-то копировать побайтово;
  • if=/dev/zero — указывает на источник, т.е. на то, откуда копируем, в данном случае из /dev/zero — это специальный файл в UNIX-подобных системах, представляющий собой источник нулевых байтов;
  • of=/swapfile — указывает путь назначения, куда копируем данные;
  • bs=1G — количество байт, которые будут записаны за раз. В нашем случае, 1 гигабайт. Обозначения: G — гигабайт, M — мегабайт, K — килобайт, и так далее;
  • count=4 — сколько блоков размером с bs будет создано, в нашем случае 4.

Теперь, когда файл создан, проверим результат:
ls -lh /swapfile

В результате увидим:
-rw-r--r-- 1 root root 4.0G Jul 07 16:16 /swapfile
Как видим, файл создался верно и с нужным объёмом.

Как подключить SWAP файл

Для начала, ограничим права доступа к вновь созданному файлу.

1
chmod 600 /swapfile

Проверим результат:

1
ls -lh /swapfile

В результате, мы должны увидеть подобное:
-rw------- 1 root root 4.0G Jul 07 16:16 /swapfile
Права прописаны верно.

Теперь нужно сделать из swapfile файл подкачки:

1
mkswap /swapfile

В результате, увидим примерно следующее:
Setting up swapspace version 1, size = 4193300 KiB
no label, UUID=e5f3e9cf-c1a9-4ed4-b8ab-711b6a7d6544

Теперь, файл готов в роли свопа. Подключим его к системе:

1
swapon /swapfile

Всё, теперь своп подключен и работает. Осталось проверить правильность работы самой первой командой:

1
swapon -s