ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как добавить Swap на Ubuntu 14.04

Один из самых простых способов повышения скорости отклика сервера и защиты от ошибок памяти в приложениях, это добавить Swap. Swap представляет собой область на жестком диске, где операционная система может временно хранить данные, которые она больше не может держать в оперативной памяти.

В основном, это дает возможность увеличить объем информации, которую ваш сервер может хранить в своей рабочей “памяти”, с некоторыми оговорками. Пространство на жестком диске будет использоваться, главным образом, тогда, когда пространства в оперативной памяти больше не будет достаточным для данных.

Информация записывается на диск будет медленнее (в современных дисках SSD такой проблемы нет), чем информации, хранящейся в оперативной памяти, но операционная система предпочтет продолжать работать с данными приложения в памяти и использовать Swap для старых данных. В целом, имея пространство подкачки, когда оперативной памяти будет исчерпана, является хорошей подстраховкой.

В этом руководстве мы рассмотрим, как создать и включить файл подкачки на сервере с 14.04 Ubuntu.

Проверьте систему

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

Мы можем увидеть, если система имеет какой-либо сконфигурированный Swap, набрав:

sudo swapon -s
Filename                Type        Size    Used    Priority

 

Если вы получаете на выводе только заголовок таблицы, как я показал выше, у вас в системе в настоящее время нет включенного свопа.

Другой, более привычный способ проверки swopa с помощью утилиты free, которая показывает нам использование системной памяти. Мы можем видеть нашу текущую память и использование Swap в мегабайтах, набрав:

free -m
              total       used       free     shared    buffers     cached
Mem:          4714        147       4567          0          7         78
-/+ buffers/cache:         58       4248
Swap:            0          0          0

 

Как вы можете видеть выше, общее пространство подкачки в нашей системе равно 0. Это соответствует тому, что мы видели с предыдущей командой.

Проверка свободного места на разделе жесткого диска

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

Перед тем, как сделать это, мы должны быть осведомлены о нашем текущем использовании дискового пространства. Мы можем получить эту информацию, набрав:

df -h
Filesystem      Size  Used Avail Use% Mounted on                                                                                                              
/dev/sda2        20G   19G  1.7G  92% /                                                                                                                       
devtmpfs        487M     0  487M   0% /dev                                                                                                                    
tmpfs           497M     0  497M   0% /dev/shm                                                                                                                
tmpfs           497M   51M  447M  11% /run                                                                                                                    
tmpfs           497M     0  497M   0% /sys/fs/cgroup                                                                                                          
/dev/sda1       240M  194M   30M  87% /boot                                                                                                                   
tmpfs           100M     0  100M   0% /run/user/0

 

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

Хотя существует много мнений по поводу соответствующего размера пространства подкачки, это действительно зависит от ваших личных предпочтений и требований приложения. Как правило, swop имеет сумму, равную или вдвое большую объему оперативной памяти вашей системы.

Так как моя система имеет 4 Гб оперативной памяти, и удваивая ее, займет значительную часть моего дискового пространства, с которой мы не готовы расстаться, мы создадим пространство подкачки в 4 гигабайта оперативной памяти, чтобы соответствовать моей системе.

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

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

Мы создадим файл с именем swapfile в нашем корневом каталоге (/). Файл должен занимать объем пространства, который мы хотим для нашего файла подкачки. Есть два основных способа сделать это:

Традиционный, медленный путь

Традиционно, мы создали бы файл с пространством выделенную с помощью команды dd. Эта универсальная утилита записи на диск из одного места в другое место.

Мы можем использовать ее, чтобы записать нули в файл из специального устройства в системах Linux , расположенных в /dev/zero.

Мы указываем размер файла, используя комбинацию bs для размера блока и count для числа блоков. То, что мы присваиваем каждому параметру почти полностью произвольно.

Например, в нашем примере, мы хотим создать файл в 4 гигабайт. Мы можем сделать это, указав размер блока 1 Гб и 4 блока:

sudo dd if=/dev/zero of=/swapfile bs=1G count=4
4+0 records in
4+0 records out
4284867395 bytes (4.3 GB) copied, 17.6333 s, 431 MB/s

 

Проверьте вашу команду, прежде чем нажать кнопку ENTER, поскольку это имеет потенциал , чтобы уничтожить данные, если Вы установите файл в неправильном месте.

Мы можем узнать, что 4 гигабайта были выделены, набрав:

ls -lh /swapfile
-rw-r--r-- 1 root root 4.0G Feb 13 14:01 /swapfile

 

Если вы выполнили команду выше, вы можете заметить, что это заняло довольно много времени. На самом деле, вы можете увидеть в выводе, что он использовал систему 18 секунд, чтобы создать файл. Это потому, что он должен записать 4 гигабайта нулей на диск.

Если вы хотите узнать, как создать файл быстрее, удалите этот файл и следуйте ниже:

sudo rm /swapfile

Более быстрый способ

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

Мы можем создать файл в 4 гигабайт, набрав:

sudo fallocate -l 4G /swapfile

 

Запрос будет возвращен вам почти сразу. Мы можем проверить, что правильное количество пространства было зарезервировано, набрав:

ls -lh /swapfile
-rw-r--r-- 1 root root 4.0G Feb 13 14:03 /swapfile

 

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

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

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

Перед тем, как сделать это, хотя, нам нужно настроить разрешения на наш файл так, чтобы он не мог быть прочитан кем-либо, кроме root. Предоставление другим пользователям для чтения или записи в этого файла будет огромным риском для безопасности. Мы можем заблокировать разрешения, набрав:

sudo chmod 600 /swapfile

 

Убедитесь, что файл имеет необходимые разрешения, набрав:

ls -lh /swapfile
-rw------- 1 root root 4.0G Feb 13 14:06 /swapfile

 

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

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

sudo mkswap /swapfile
Setting up swapspace version 1, size = 4184320 KiB
no label, UUID=f8f2edfg-crt5-sd45-gy7l-qwf6e3dfgt67

 

Наш файл теперь готов к использованию в качестве пространства подкачки. Мы можем включить его, набрав:

sudo swapon /swapfile

 

Мы можем убедиться, что процедура прошла успешно, проверив, использует ли наша система своп сейчас:

sudo swapon -s
Filename                Type        Size    Used    Priority
/swapfile               file        4184322 0       -1

 

У нас теперь есть новый файл подкачки. Мы можем использовать утилиту free еще раз, чтобы подтвердить наши выводы:

free -m
              total        used        free      shared  buff/cache   available                                                                               
Mem:            992         315         263           0         414         484                                                                               
Swap:          2047         489        1558

 

Наш swap был успешно установлен и наша операционная система будет использовать его по мере необходимости.

Сделать постоянный файл подкачки

У нас есть рабочий файл подкачки, но когда мы перезагрузим сервер, своп не будет работать, его необходимо автоматически включать в систему. Мы можем изменить это, путем модификации файла fstab.

Измените файл с привилегиями суперпользователя в текстовом редакторе:

sudo nano /etc/fstab

 

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

/swapfile   none    swap    sw    0   0

 

Сохраните и закройте файл, после изменений.

Ваши настройки свопа

Есть несколько вариантов, которые вы можете настроить, что будет иметь влияние на производительность вашей системы при работе со свопом.

Параметр swappiness определяет, как часто ваша система будет обмениваться данными из оперативной памяти в пространство подкачки. Это значение в диапазоне от 0 до 100, который представляет собой процент.

При значениях, близких к нулю, ядро ​​не обменяется данными с диском, если это абсолютно необходимо. Помните, что взаимодействие с файлом подкачки являются “дорогим” в том, что занимает гораздо больше времени, чем взаимодействие с оперативной памятью, и может привести к значительному снижению производительности. Как правило, системы не полагаться на своп, если вы хотите сделать вашу систему быстрее.

Значения, которые находятся ближе к 100 будет пытаться поместить больше данных в своп в попытке освободить как можно больше свободного места в оперативной памяти. В зависимости от профиля памяти ваших приложений или то, что вы используете своем сервере, это может быть лучше в некоторых случаях.

Мы можем увидеть текущее значение swappiness, набрав:

cat /proc/sys/vm/swappiness
40

 

Для рабочего стола, установка swappiness в 10 оптимально для SSD дисков. Для системы VPS, мы, вероятно, хотим, переместить его ближе к 0.

Мы можем установить другое значение swappiness с помощью команды sysctl.

Например, чтобы установить swappiness до 10, мы могли бы ввести:

sudo sysctl vm.swappiness=10
vm.swappiness = 10

 

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

sudo nano /etc/sysctl.conf

 

В нижней части, вы можете добавить:

vm.swappiness=10

 

Сохраните и закройте файл, когда сделаете изменения.

Другой параметр, связанный с этим значением, который вы можете изменить это vfs_cache_pressure. Этот параметр определяет, сколько система подберет для кэша inode и информационных дерева над другими данными.

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

cat /proc/sys/vm/vfs_cache_pressure
100

 

Он настроен так, что наша система удаляет информацию inode из кэша слишком быстро. Мы можем установить его в более оптимальное значение, как 45, набрав:

sudo sysctl vm.vfs_cache_pressure=45
vm.vfs_cache_pressure = 45

 

Опять же, это справедливо только для нашей текущей сессии. Мы можем изменить его, добавив его в наш файл конфигурации, как мы сделали с нашей установкой swappiness:

sudo nano /etc/sysctl.conf

 

В нижней части, добавьте строку, которая определяет ваше новое значение:

vm.vfs_cache_pressure = 45

 

Сохраните и закройте файл, когда сделаете изменения.

Как добавить Swap на Ubuntu 14.04

Вывод

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

Если вы работаете в OOM (из памяти) ошибок, или если вы обнаружите, что ваша система не в состоянии использовать нужные вам приложения, наилучшим решением является оптимизации конфигурации приложений или обновления сервера. Настройка пространства подкачки, однако, может дать вам большую гибкость и может помочь использовать менее мощный сервер.

Exit mobile version