Команда mkswap

Команда mkswap позволяет задействовать одноименную утилиту, предназначенную для создания файлов или разделов подкачки. Эти файлы или разделы предназначены для временного хранения на диске неиспользуемых страниц оперативной памяти в условиях ее дефицита. Интенсивность использования пространства подкачки может быть изменена с помощью параметра конфигурации системы swappiness. Подключение созданного раздела или файла подкачки осуществляется с помощью команды swapon, отключение — с помощью команды swapoff. Для автоматического подключения пространства подкачки в процессе загрузки системы используется специальная директива в файле конфигурации системы /etc/fstab.

Базовый синтаксис команды выглядит следующим образом:

# mkswap [параметры] имя-файла-или-раздела [размер]

Команда может принимать имя файла или раздела подкачки, значение его размера, а также ряд параметров. Имя файла подкачки может быть как относительным, так и абсолютным (к примеру, таким, как /swap.space), а имя раздела подкачки — путем к файлу раздела диска (к примеру, таким, как /dev/sda5). Воизбежание ошибок пользователям не рекомендуется задавать размер файла или раздела подкачки — в случае отсутствия информации о размере утилита задействует все доступное пространство дискового раздела или файла (разумеется, в случае файла его следует предварительно создать, указав требуемый размер). Также следует помнить о том, что в созданный файл или раздел подкачки будут помещаться страницы из оперативной памяти, поэтому размер создаваемого раздела или файла должен быть кратен размеру страницы памяти, который может быть получен с помощью команды getconf PAGESIZE. Актуальными для обычного пользователя параметрами являются параметр -L, позволяющий задать метку раздела подкачки, параметр -U, позволяющий задать UUID-идентификатор раздела подкачки, а также параметр -c, позволяющий предварительно проверить раздел на наличие поврежденных блоков.

Примеры использования

Создание файла подкачки

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

# fallocate -l 1G /swap.space
# ls -al /swap.space
-rw-r--r-- 1 root root 1073741824 фев 22 22:30 /swap.space

Очевидно, что файл размером в 1 ГБ был успешно создан. Что касается его размера, который должен быть кратен размеру страницы памяти, то здесь также нет никаких проблем:

# getconf PAGESIZE
4096
# echo $((1073741824 / 4096))
262144

В файл может быть помещено 262144 страницы памяти, если размер одной страницы будет равен 4096 байтам.

Теперь следует создать сам файл подкачки на основе созданного файла с помощью утилиты mkswap:

# mkswap /swap.space
mkswap: /swap.space: небезопасные права доступа 0644, предлагаются 0600.
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
без метки, UUID=05473d42-4b93-412a-bdf9-2c9083e19fbf
# chmod 0600 /swap.space
# ls -al /swap.space
-rw------- 1 root root 1073741824 фев 22 22:39 /swap.space
# sudo file /swap.space
/swap.space: Linux swap file, 4k page size, little endian, version 1, size 262143 pages, 0 bad pages, no label, UUID=05473d42-4b93-412a-bdf9-2c9083e19fbf

Факт успешного создания файла был успешно создан — это подтверждается выводом утилит mkswap и file. Утилита mkswap предупреждает о некорректных правах доступа к созданному файлу, поэтому следует корректировать их с помощью утилиты chmod.

Далее следует просто подключить файл подкачки с помощью команды swapon и начать пользоваться им.

# swapon -s
Имя файла                Тип        Размер  Исп-но  Приоритет
/dev/sda1                partition  1951740 0       -2
# sudo swapon /swap.space
# swapon -s
Имя файла                Тип        Размер  Исп-но  Приоритет
/dev/sda1                partition  1951740 0       -2
/swap.space              file       1048572 0       -3

Файл был успешно подключен, что подтверждается выводам утилиты swapon. Если необходимо подключать файл в процессе загрузки системы, следует добавить в файл конфигурации системы /etc/fstab следующую строку:

/swap.space swap swap defaults 0 0

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

Отключение файла подкачки

Для отключения файла подкачки следует использовать команду swapoff.

# swapoff /swap.space
# swapon -s
Имя файла               Тип       Размер  Исп-но  Приоритет
/dev/sda1               partition 1951740 0       -2

Файл успешно отключен, что подтверждается выводом утилиты swapon. После этого файл может быть удален:

rm /swap.space

В том случае, если вы добавили строку в файл конфигурации /etc/fstab, вам придется удалить ее.

Изменение значения параметра swappiness

Параметр swappiness управляет интенсивностью использования файла или раздела подкачки. Его значение должно находиться в диапазоне от 0 до 100, причем меньшие значения снижают интенсивность использования, большие — повышают. По умолчанию в большинстве дистрибутивов Linux используется значение 60, которое отлично подходит для серверов, но не подходит для настольных систем.

Для проверки значения параметра swappiness достаточно использовать следующую команду:

$ cat /proc/sys/vm/swappiness
60

Как и говорилось ранее, по умолчанию используется значение 60. Для настольных систем более оптимальным будет являться значение 20, которое может быть установлено с помощью команды sysctl:

# sysctl vm.swappiness=20
vm.swappiness = 20
$ cat /proc/sys/vm/swappiness
20

Корректность установки параметра swappiness несложно проверить с помощью приведенной выше команды. Если вас все устроит, вы можете автоматически устанавливать значение данного параметра в процессе загрузки системы путем добавления следующей строки в файл конфигурации системы /etc/sysctl.conf:

vm.swappiness=20

Значение 20 не является универсальным — вам следует самостоятельно подобрать оптимальное значение рассматриваемого параметра для ваших рабочих условий.