Добавление пространства подкачки (swap) в Ubuntu
Добавление пространства подкачки (swap) в Ubuntu
Пространство подкачки (swap) - это часть жесткого диска или SDD, предназначенная для временного хранения данных операционной системой. Данные или информация, которые ОС не может разместить в оперативной памяти, хранятся в пространстве подкачки. Оно полезно при повышенной нагрузке на оперативную память.
Проверить, есть ли в Ubuntu свободное место подкачки, можно с помощью следующей команды.
sudo swapon --show
Вы должны получить результат, если место подкачки доступно, в противном случае вы не получите никакого результата. Посмотреть, что нет активного swap можно, используя команду free:
free -h
Output total used free shared buff/cache available
Mem: 488M 36M 104M 652K 348M 426M
Swap: 0B 0B 0B
Теперь вы можете создать swap из доступного пространства на HDD или SDD. Выполните следующую команду, чтобы узнать, есть ли свободное место или нет.
df -h
OutputFilesystem Size Used Avail Use% Mounted on
udev 238M 0 238M 0% /dev
tmpfs 49M 624K 49M 2% /run
/dev/vda1 20G 1.1G 18G 6% /
tmpfs 245M 0 245M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 245M 0 245M 0% /sys/fs/cgroup
tmpfs 49M 0 49M 0% /run/user/1001
Устройство dev это наш диск в данном случае. На нем видим достаточно места, доступного в этом примере (только 1,1G используется).
Выполним следующую команду для создания файла подкачки.
sudo fallocate -l 1G /swapfile
Вы можете проверить, что было зарезервировано нужное количество места, набрав:
ls -lh /swapfile
-rw-r--r-- 1 root root 1.0G Apr 25 11:14 /swapfile
Теперь, после создания файла подкачки, вам нужно превратить его в пространство подкачки. Тем временем, вам нужно изменить разрешение файла на уровень root, чтобы предотвратить дальнейшую модификацию от пользователей.
sudo chmod 600 /swapfile
Проверьте изменение разрешений, набрав:
ls -lh /swapfile
-rw------- 1 root root 1.0G Apr 25 11:14 /swapfile
Только у пользователя root включены флаги чтения и записи.
Теперь выполните следующую команду, чтобы изменить файл как место подкачки, набрав:
sudo mkswap /swapfile
OutputSetting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf
Теперь выполните следующую команду, чтобы сообщить об этом системе и позволить системе использовать его в качестве пространства подкачки.
sudo swapon /swapfile
Вы можете убедиться, что место подкачки доступно, выполнив следующую команду:
sudo swapon --show
OutputNAME TYPE SIZE USED PRIO
/swapfile file 1024M 0B -1
Мы можем проверить результаты командой free :
free -h
Output total used free shared buff/cache available
Mem: 488M 37M 96M 652K 354M 425M
Swap: 1.0G 0B 1.0G
Сделать файл swap постоянным
Сделаем копию файла /etc/fstab
sudo cp /etc/fstab /etc/fstab.bak
Добавляем информацию о swap файле в конец /etc/fstab файл с помощью команды:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Тонкая настройка swap
Существует несколько опций, которые могут влиять на производительность системы при работе swap.
Параметр swappiness задает частоту использования системой swap-пространства. Значение swappiness выражается числом от 0 до 100, которое выражает проценты. Если это значение близко к нулю, ядро не будет передавать данные в swap без крайней необходимости. Помните, взаимодействие со swap-файлом «дорого обходится» серверу, поскольку требует больше ресурсов, чем взаимодействие с оперативной памятью, что, следовательно, может привести к значительному снижению производительности. Система, как правило, работает продуктивнее, если не очень полагается на swap.
Если значение swappiness ближе к 100, система будет передавать в swap большое количество данных с целью сохранить больше свободного места в RAM. В зависимости от профиля памяти приложения и цели использования сервера, это может быть лучше в некоторых случаях.
Чтобы просмотреть текущее значение swappiness, введите:
cat /proc/sys/vm/swappiness 60
В целом, значение 60 не так уж плохо, но для системы виртуального выделенного сервера лучше установить значение, которое ближе к 0.
Чтобы изменить значение swappiness, используйте команду sysctl.
К примеру, чтобы установить значение 10, нужно набрать:
sudo sysctl vm.swappiness=10 vm.swappiness = 10
Данное значение будет действительным до следующей перезагрузки. Чтобы значение сохранялось и после перезагрузки сервера, откройте файл /etc/sysctl.conf в текстовом редакторе:
sudo nano /etc/sysctl.conf
и внесите в него следующую строку:
vm.swappiness=10
Затем сохраните и закройте файл.
Еще одна важная опция – это vfs_cache_pressure. Этот параметр управляет склонностью ядра восстанавливать память, которая используется для кэширования каталогов и инодов объектов.
В основном, это данные доступа к файловой системе. Как правило, найти их не так просто, а запрашиваются они часто, так что использовать кэш-память в этом случае очень удобно. Узнать текущее значение этого параметра можно, снова запрашивая файловую систему proc:
cat /proc/sys/vm/vfs_cache_pressure 100
Согласно текущим настройкам, система удаляет иноды из кэша слишком быстро. Установив меньшее значение (например, 50), система будет хранить информацию дольше:
sudo sysctl vm.vfs_cache_pressure=50 vm.vfs_cache_pressure = 50
Опять же, это значение действительно только для текущей сессии. Чтобы сделать его постоянным, нужно (как и в случае со swappiness) открыть конфигурационный файл sysctl в текстовом редакторе:
sudo nano /etc/sysctl.conf
и внести в него строку:
vm.vfs_cache_pressure = 50
Сохраните и закройте sysctl.