Как добавить SWAP на Ubuntu 15.04

Введение

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

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

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

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

Проверка системных настроек SWAP

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

sudo swapon -s

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

Filename Type Size Used Priority

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

free -m
             total       used       free     shared    buffers     cached
Mem:          3953        154       3799          0          8         83
-/+ buffers/cache:         62       3890
Swap:            0          0          0

Как Вы можете видеть swap у нас равен 0. Это соответствует результатам выполнения команды swapon.

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

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

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

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda         59G  1.3G   55G   3% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev            2.0G   12K  2.0G   1% /dev
tmpfs           396M  312K  396M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            2.0G     0  2.0G   0% /run/shm
none            100M     0  100M   0% /run/user

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

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

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

Создаём файл подкачки

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

Традиционный, медленный способ

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

Мы можем использовать её для записи нулей в файл. Для этого в Linux системах есть специальное устройство /dev/zero

С помощью параметра bs мы указываем размер сектора, а с помощью параметра count количество блоков. Данный параметры выбраны произвольно, главное что их произведение будет равно нашим 4Гб.

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

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

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

ls -lh /swapfile
-rw-r--r-- 1 root root 4.0G Apr 28 17:15 /swapfile

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

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

sudo rm /swapfile

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

Более быстрый способ создания файла, предоставляет нам утилита fallocate. Это программа создает файл мгновенно, фактически она ничего не записывает в этот файл. Мы можем создать файл объёмом 4Гб набрав:

sudo fallocate -l 4G /swapfile

Команда выполнить моментально и нам остаёться только проверить её выполнение:

ls -lh /swapfile
-rw-r--r-- 1 root root 4.0G Apr 28 17:19 /swapfile

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

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

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

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

sudo chmod 600 /swapfile

Проверим как изменились права на файл:

ls -lh /swapfile
-rw------- 1 root root 4.0G Apr 28 17:19 /swapfile

Если всё сделали правильно, то права на запись и чтение остались только у пользователя root.

Теперь давайте скажем системе, что это её файл подкачки:

sudo mkswap /swapfile
Setting up swapspace version 1, size = 4194300 KiB
no label, UUID=e2f1e9cf-c0a9-4ed4-b8ab-714b8a7d6944

Файл готов для использования системой:

sudo swapon /swapfile

Осталось проверить используется ли подкачка системой:

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

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

Настройка постоянного файла подкачки

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

sudo nano /etc/fstab

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

/swapfile   none    swap    sw    0   0

Сохраните и закройте файл. (CTRL+X, Y) На этом настройка файла подкачки закончена.