Что такое 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-раздела

  1. Подключаемся к серверу по SSH (данные для доступа по SSH можно найти в приветственном письме или запросить у службы поддержки), отключаем swap командой:
    [root@vps ~]# swapoff -a
  2. Удаляем строку с разделом swap в файле /etc/fstab:
    [root@vps ~]# vi /etc/fstab

    в открывшемся окне редактора vi перемещаем курсор в начало строки с разделом swap и удаляем эту строку, нажав два раза на клавишу d (команда dd). Чтобы сохранить изменения и закрыть редактор вводим команду :wq

  3. Переходим в портал SolusVM (данные для доступа можно найти в том же приветственном письме). Переходим в управление виртуальным сервером и нажимаем на кнопку Rescue, затем на Enable Rescue Mode. После включения режима Rescue текущее соединение с сервером по SSH будет прервано и появятся новые данные для подключения к серверу в режиме Rescue. Подключаемся к серверу по SSH уже с использованием этих данных.
  4. Удаляем и пересоздаем основной раздел + 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.

    Таким образом мы расширим основной раздел до доступного максимума.

  5. После этого выполняем команды по расширению файловой системы:
    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.
  6. Возвращаемся в портал 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

Готово

Оцените статью
Поделитесь статьей
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
In this article