Что такое swap и как его отключить
Суть технологии swapping (”подкачка”) заключается в том, что некоторый объем данных (который не “помещается” в оперативную память системы) временно хранится на жестком диске, в то время как другая часть данных обрабатывается оперативной памятью.
В ОС Linux оперативная память (ОЗУ, RAM, random access memory) делится на разделы, называемые страницами (pages). Swapping (”подкачка”, своппинг) – это процесс для освобождения ОЗУ, во время которого страницы памяти копируются на специально выделенный для этого раздел диска, называемый swap space (раздел подкачки). Совокупные размеры физической памяти и раздела подкачки – это объем имеющийся виртуальной памяти.
Своппинг необходим по следующим причинам. Во-первых, когда системе необходимо больше памяти (т.е. приложение или процесс запрашивает у системы больше памяти), чем сейчас свободно в ОЗУ, ядро разгружает (”откачивает”) наименее используемые страницы и освобожденную память выделяет текущему приложению или процессу. А во-вторых, значительное количество страниц, используемых программами на стадии запуска, используются только при инициализации и никогда более. Соответственно система может засвапить эти страницы, тем самым освобождая (разгружая) ОЗУ.
Проверка наличия swap-раздела
Проверку наличия swap можно сделать при помощи команды free c ключом -h:
[root@vps ~]# free -h total used free shared buff/cache available Mem: 990M 406M 71M 49M 512M 390M Swap: 1,0G 47M 976M
⚠️Отключение swap-раздела может повлиять на быстродействие вашего сервера. Отключайте swap только тогда, когда полностью уверены в этом.
Удаление swap-раздела
- Подключаемся к серверу по SSH (данные для доступа по SSH можно найти в приветственном письме или запросить у службы поддержки), отключаем swap командой:
[root@vps ~]# swapoff -a
- Удаляем строку с разделом swap в файле /etc/fstab:
[root@vps ~]# vi /etc/fstab
в открывшемся окне редактора vi перемещаем курсор в начало строки с разделом swap и удаляем эту строку, нажав два раза на клавишу d (команда dd). Чтобы сохранить изменения и закрыть редактор вводим команду :wq
- Переходим в портал SolusVM (данные для доступа можно найти в том же приветственном письме). Переходим в управление виртуальным сервером и нажимаем на кнопку Rescue, затем на Enable Rescue Mode. После включения режима Rescue текущее соединение с сервером по SSH будет прервано и появятся новые данные для подключения к серверу в режиме Rescue. Подключаемся к серверу по SSH уже с использованием этих данных.
- Удаляем и пересоздаем основной раздел + swap:
rescue # fdisk /dev/vda Welcome to fdisk (util-linux 2.29.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command.
удаляем swap:
Command (m for help): d Partition number (1,2, default 2): 2 Partition 2 has been deleted.
удаляем основной раздел:
Command (m for help): d Selected partition 1 Partition 1 has been deleted.
создаем новый раздел:
Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p Using default response p. Partition number (1-4, default 1): 1
нажимаем Enter:
First sector (2048-41943039, default 2048):
нажимаем Enter:
Last sector, +sectors or +size{K,M,G,T,P} (2048-41943039, default 41943039):
проверяем, что диск теперь имеет нужный размер:
Created a new partition 1 of type 'Linux' and of size 20 GiB. Partition #1 contains a ext4 signature.
существующие сигнатуры не удаляем:
Do you want to remove the signature? [Y]es/[N]o: N
добавляем на всякий случай bootable флаг на основной раздел:
Command (m for help): a Selected partition 1
записываем и сохраняем изменения:
Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.
Таким образом мы расширим основной раздел до доступного максимума.
- После этого выполняем команды по расширению файловой системы:
rescue # e2fsck -f /dev/vda1 e2fsck 1.43.4 (31-Jan-2017) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/vda1: 34084/1240320 files (0.2% non-contiguous), 495831/4980176 blocks rescue # resize2fs /dev/vda1 resize2fs 1.43.4 (31-Jan-2017) Resizing the filesystem on /dev/vda1 to 5242624 (4k) blocks. The filesystem on /dev/vda1 is now 5242624 (4k) blocks long.
- Возвращаемся в портал SolusVM и отключаем режим Rescue. После отключения этого режима соединение с сервером снова будет сброшено. Теперь подключаемся по SSH с обычными данными из приветственного письма. Проверяем:
[root@vps ~]# fdisk -l /dev//vda Disk /dev//vda: 21.5 GB, 21474836480 bytes, 41943040 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x000958c2 Device Boot Start End Blocks Id System /dev//vda1 * 2048 41943039 20970496 83 Linux
Готово