Swap CentOS – подключение файла подкачки, удаление файла подкачки

Swap CentOS – подключение файла подкачки, удаление файла подкачки

Один из способов подстраховать сервер, сделать его более устойчивым к нагрузкам и защититься от ошибок нехватки памяти – добавить пространство подкачки т.е. речь идет о системе свопинга.

Своп (от английского swap) – область на накопителе, где операционная система может временно хранить данные, которые уже не держит в оперативной памяти. Swap, файл подкачки, механизм виртуальной памяти перемещающий отдельные фрагменты памяти из оперативной памяти на жёсткий диск, внешний накопитель, специально выделенный раздел или файл, тем самым выполняя своё предназначение и освобождая оперативную память для других активных фрагментов памяти.
Файл подкачки дает возможность увеличить объем информации, которую сервер может хранить в рабочей памяти. Но, с некоторыми оговорками. Чтение и запись в раздел подкачки медленнее, чем при использовании памяти, но это может поддержать, когда на сервере недостаточно оперативной памяти.
Без подкачки, в момент нехватки памяти, сервер может начать завершать процессы, чтобы освободить память, или даже аварийно завершить работу. Это может привести к потере данных или возникновению простоев.

Проверка системы на наличие и использование свопа

Прежде чем приступить, нужно проверить сводную информацию об использовании и доступности подкачки на устройстве хранения. С помощью команды swapon:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ swapon -s
$ swapon -s
$ swapon -s

Если команда ничего не возвращает, значит файла подкачки не существует. В обратном случае, в терминал будет выведено нечто подобное:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ swapon -s
Имя файла Тип Размер Исп-но Приоритет
/dev/dm-0 partition 5862396 0 -2
$ swapon -s Имя файла Тип Размер Исп-но Приоритет /dev/dm-0 partition 5862396 0 -2
$ swapon -s
Имя файла				Тип		Размер	Исп-но	Приоритет
/dev/dm-0                              	partition	5862396	0	-2

то же самое, с выводом полного пути к файлу свопа, но вывести из содержания файла swaps:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ cat /proc/swaps
Filename Type Size Used Priority
/dev/dm-0 partition 5862396 0 -2
$ cat /proc/swaps Filename Type Size Used Priority /dev/dm-0 partition 5862396 0 -2
$ cat /proc/swaps
Filename				Type		Size	Used	Priority
/dev/dm-0                               partition	5862396	0	-2

Утилита free отобразит текущее использование памяти и подкачки:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ free -m
всего занято свободно общая буф./врем. доступно
Память: 5553 3701 415 293 1437 1306
Подкачка: 0 0 0
$ free -m всего занято свободно общая буф./врем. доступно Память: 5553 3701 415 293 1437 1306 Подкачка: 0 0 0
$ free -m
              всего        занято        свободно      общая  буф./врем.   доступно
Память:        5553        3701         415         293        1437        1306
Подкачка:         0           0           0
Проверка доступного место для обмена и хранения данных

Важно убедится в наличии доступного места на носителе:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ df -h
Файл.система Размер Использовано Дост Использовано% Cмонтировано в
/dev/mapper/centos-root 29G 3,6G 26G 13% /
devtmpfs 484M 3,4M 484M 0% /dev
tmpfs 496M 3,4M 496M 0% /dev/shm
tmpfs 496M 3,4M 489M 2% /run
tmpfs 496M 3,4M 496M 0% /sys/fs/cgroup
/dev/sda1 1014M 132M 883M 13% /boot
tmpfs 100M 0 100M 0% /run/user/0
$ df -h Файл.система Размер Использовано Дост Использовано% Cмонтировано в /dev/mapper/centos-root 29G 3,6G 26G 13% / devtmpfs 484M 3,4M 484M 0% /dev tmpfs 496M 3,4M 496M 0% /dev/shm tmpfs 496M 3,4M 489M 2% /run tmpfs 496M 3,4M 496M 0% /sys/fs/cgroup /dev/sda1 1014M 132M 883M 13% /boot tmpfs 100M 0 100M 0% /run/user/0
$ df -h
Файл.система             Размер Использовано  Дост Использовано% Cмонтировано в
/dev/mapper/centos-root     29G         3,6G   26G            13% /
devtmpfs                   484M         3,4M  484M            0% /dev
tmpfs                      496M         3,4M  496M            0% /dev/shm
tmpfs                      496M         3,4M  489M            2% /run
tmpfs                      496M         3,4M  496M            0% /sys/fs/cgroup
/dev/sda1                 1014M         132M  883M           13% /boot
tmpfs                      100M            0  100M            0% /run/user/0

Для использования еще доступно 26G и этого достаточно.

Создать файла подкачки

Создать 1-гигабайтный файл подкачки указанного размера используя команду fallocate:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ sudo fallocate -l 1G /my-swap-file
$ sudo fallocate -l 1G /my-swap-file
$ sudo fallocate -l 1G /my-swap-file

С помощью ls можно убедится в его наличии и в достаточном количестве зарезервированного пространства:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ ls -lh /my-swap-file
-rw-r--r-- 1 root root 1.0G янв 4 11:00 /my-swap-file
$ ls -lh /my-swap-file -rw-r--r-- 1 root root 1.0G янв 4 11:00 /my-swap-file
$ ls -lh /my-swap-file
-rw-r--r-- 1 root root 1.0G янв 4 11:00 /my-swap-file
Подключение файла подкачки

Файл уже создан, но система еще не знает, что он должен использоваться для хранения и обмена. Нужно отформатировать этот файл как swap, а затем включить его. Но прежде, должны быть настроены права доступа, чтобы файл мог быть прочитан, только учетной записью root. Разрешение другим пользователям читать или писать в этот файл, было бы большой угрозой безопасности. Ограничиваются разрешения с помощью chmod:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ sudo chmod 600 /my-swap-file
$ sudo chmod 600 /my-swap-file
$ sudo chmod 600 /my-swap-file

Проверить, что у файла подкачки правильные разрешения, снова используя ls:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ ls -lh /my-swap-file
-rw------- 1 root root 1.0G янв 4 11:00 /my-swap-file
$ ls -lh /my-swap-file -rw------- 1 root root 1.0G янв 4 11:00 /my-swap-file
$ ls -lh /my-swap-file
-rw------- 1 root root 1.0G янв 4 11:00 /my-swap-file

Теперь, файл подкачки стал более безопасным и можно указать системе пространство подкачки:
Указывается файл подкачки командой mkswap

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ sudo mkswap /my-swap-file
Setting up swapspace version 1, size = 10848572 KiB
no label, UUID=bb94e86e-c1d2-4b5a-8cc2-fdffd2078d7e
$ sudo mkswap /my-swap-file Setting up swapspace version 1, size = 10848572 KiB no label, UUID=bb94e86e-c1d2-4b5a-8cc2-fdffd2078d7e
$ sudo mkswap /my-swap-file
Setting up swapspace version 1, size = 10848572 KiB
no label, UUID=bb94e86e-c1d2-4b5a-8cc2-fdffd2078d7e
Сразу включить файл подкачки

Файл подкачки готов к работе в качестве пространства подкачки, для его использования набрать:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ sudo swapon /my-swap-file
$ sudo swapon /my-swap-file
$ sudo swapon /my-swap-file

В данный момент файл подкачки включен и при необходимости используется. После перезагрузки сервер должен автоматически включать для использования файл свопа. На подключение укажет строка дописанная в таблицу управляющую файловыми системами и разделами в файле fstab.
На этом этапе, есть вероятность получить следующую ошибку swapon failed: Invalid argument:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ sudo swapon /my-swap-file
swapon: swapfile has holes
swapon: /my-swap-file: swapon failed: Invalid argument
$ sudo swapon /my-swap-file swapon: swapfile has holes swapon: /my-swap-file: swapon failed: Invalid argument
$ sudo swapon /my-swap-file
swapon: swapfile has holes
swapon: /my-swap-file: swapon failed: Invalid argument

Пишет, что недопустимый аргумент, в этом случае поможет это CentOS 7 — failed: Invalid argument решение.

Подключение файла подкачки после загрузки системы

Чтобы файл подключался во время загрузки системы, в файл fstab

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ sudo nano /etc/fstab
$ sudo nano /etc/fstab
$ sudo nano /etc/fstab

в нижней части, нужно добавить строку, указывающую операционной системе использовать файл подкачки автоматически:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
/my-swap-file swap swap sw 0 0
/my-swap-file swap swap sw 0 0
/my-swap-file   swap    swap    sw  0   0

Система проверяет эту таблицу во время каждого запуска и файл подкачки будет готов к использованию. Осторожно с форматированием, таблица довольно чувствительна.

Отключить и удалить своп файл

Шаг 1. Отключить файл подкачки:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ sudo swapoff -v /my-swap-file
$ sudo swapoff -v /my-swap-file
$ sudo swapoff -v /my-swap-file

Шаг 2. Удалить строку из таблицы fstab:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ sudo nano /etc/fstab
$ sudo nano /etc/fstab
$ sudo nano /etc/fstab

Шаг 3. Удалить своп файл:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ sudo rm /my-swap-file
$ sudo rm /my-swap-file
$ sudo rm /my-swap-file

Подтвердить удаление и его не станет.