Создание и настройка swap в Ubuntu.

Swap, конечно, нельзя назвать панацеей, так как жесткие диски заведомо медленнее оперативной памяти. Что же касается более быстрых SSD-дисков, то создавать на них swap-разделы или swap-файлы не рекомендуется по причине меньшего по сравнению с жесткими дисками количества допустимых циклов перезаписи секторов.

ПРИМЕЧАНИЕ.

Располагать раздел подкачки на SSD можно и нужно. Работа с подкачкой характеризуются большим количеством чтения по сравнению с записью (40 к 1), и относительно большими объемами записи, так что пользы от гораздо более быстрого доступа к данным больше, чем вреда.

Единственное, что нужно сделать, это изменить параметр swappiness на значение 10.

Сам смысл технологии swap заключается в возможности запуска приложений, которым требуется больше оперативной памяти, чем есть у ПК, а не в постоянном использовании жесткого диска в качестве замены оперативной памяти. Логика swap-разделов в Linux немного отличается от файла pagefile.sys в Windows. В данном случае мы имеем дело не с файлом, а с системным разделом жесткого диска. Впрочем, Linux дозволяет и использование файлов подкачки.

Перейдем непосредственно к управлению swap в Ubuntu-подобных системах. В качестве тестового стенда выбрана виртуальная машина с Xubuntu, но вы сможете убедиться, что синтаксис команд общий для родственных систем.

Первым делом проверим в нашей системе наличие swap:

$ sudo swapon — -show

Если в ответ Вы получите пустую строку, это будет означать, что swap-раздел или swap-файл не созданы.

Система сообщает об отсутствии swap.

Система сообщает о наличии swap-файла.

1. Swap-раздел или swap-файл.

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

Расхожие представления, что «прослойка» в виде файловой системы замедляет swap-файл, можно отнести скорее к надуманным. А вот о чем действительно следует задуматься, так это о фрагментации. Поэтому swap лучше создать заблаговременно, а не после нескольких месяцев активного пользования системой. С другой стороны, преимущество swap-файла в том, что при его создании не требуется менять разметку диска.

2. Создание swap-файла в Ubuntu.

Перед созданием swap всегда полезно оценить объем свободного дискового пространства через терминал командой:

$ df -h

Проверка свободного дискового пространства через эмулятор терминала.

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

Как видите, мы можем разместить небольшой swap-раздел или swap-файл на этом компьютере.

Сколько отвести места под swap? Если планируется использовать на компьютере гибернацию, то swap должен быть равен объему ОЗУ. Раньше, когда объемы оперативной памяти были не столь велики, в ходу была рекомендация выставлять размер swap превышающим в два раза размер ОЗУ. Сейчас в этом нет необходимости.

Быстрый способ создания swap-файла.

Для создание swap-файла в Ubuntu можно использовать утилиту fallocate.

Шаг 1. Создадим файл подкачки и назовем его swapfile. 

$ sudo fallocate -l 1G /swapfile

Вы можете обозвать его по-другому и задать ему необходимое место размещения. 

Шаг 2. После проверим, зарезервировала ли система нужное нам количество пространства: 

$ ls -lh /swapfile

Если ОС выдала утвердительный ответ, превратим наш файл в swap-файл.

Шаг 3. Заблокируем доступ к файлу всем, кроме учетной записи root:

$ sudo chmod 600 /swapfile 

И снова проверим настройки файла:

$ ls -lh /swapfile

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

Шаг 4. Теперь нужно создать файловую систему swap. 

$ sudo mkswap /swapfile

Шаг 5. Теперь файл промаркирован и размещен на жестком диске, а это значит, что можно включить его использование в качестве файла подкачки командой:

$ sudo swapon /swapfile

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

$ sudo swapon — -show

Создание swap-файла завершено.

Шаг 6. Есть, однако, тот нюанс, что такой файл подкачки будет работать лишь до перезагрузки компьютера. Чтобы сделанные нами настройки swap остались и после перезагрузки, нужно отредактировать файл /etc/fstab. Это можно сделать и вручную от имени root, найдя файл на диске, открыв его и вписав нужную строку, или вписав то же самое через терминал командой: 

echo ‘/swapfile none swap sw 0 0’ | sudo tee -a /etc/fstab

Традиционный, медленный способ создания swap-файла.

Шаг 1. Вместо утилиты fallocate используем команду dd: 

# dd if=/dev/zero of=/swapfile bs=1G count=4 

Синтаксис команды простой:

  • dd — команда предназначена для того, чтобы что-то куда-то копировать побайтово;
  • if=/dev/zero — указывает на источник, т.е. на то, откуда копируем, в данном случае из /dev/zero — это специальный файл в UNIX-подобных системах, представляющий собой источник нулевых байтов;
  • of=/swapfile — указывает путь назначения, куда копируем данные;
  • bs=1G — количество байт, которые будут записаны за раз. В нашем случае, 1 гигабайт. Обозначения: G — гигабайт, M — мегабайт, K — килобайт, и так далее;
  • count=4 — сколько блоков размером с bs будет создано, в нашем случае 4.

Будьте очень внимательны с синтаксисом команды, потому что если, например, ошибиться с определением пути для of= (куда сохранять файл), можно повредить данные на диске.

Все остальные шаги с Шага 2 по Шаг 6 выполняются аналогично «Быстрому способу создания swap-файла.»

3. Создание swap-раздела в Ubuntu.

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

Создание раздела подкачки при установке операционной системы.

Я действительно рекомендую этот способ создания раздела подкачки как самый простой. Если же раздел подкачки не был создан при установке системы, тогда Ваши действия зависят от того, нужно ли переделывать разметку диска или нет. Создание и редактирование разделов несколько выходит за рамки данной статьи. Скажу лишь, что в данном случае можно использовать как графические утилиты (например, GParted), так и консольные (fdisk).

Итак, допустим, у нас есть раздел /dev/sda2, который мы хотим превратить в раздел подкачки.

Для этого сперва превращаем его в раздел swap:

$ sudo mkswap /dev/sda2

Затем включаем раздел подкачки:

$ sudo swapon /dev/sda2

Проверяем, что всё прошло успешно:

$ sudo swapon —show

И добавляем нужную нам строку в файл /etc/fstab:

$ echo ‘/dev/sda2 none swap sw 0 0’ | sudo tee -a /etc/fstab

4. Настройка swap в Ubuntu.

Рассмотрим два основных параметра, влияющих на работу swap. 

1. Первый из них — swappiness — отвечает за интенсивность использования файла или раздела подкачки. Значение этого параметра колеблется от 0 (не переносит данные на жесткий диск в swap) до 100 (всё данные переносятся в swap) и по умолчанию равно 60. Просмотреть его можно командой: 

$ cat /proc/sys/vm/swappiness

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

$ sudo sysctl vm.swappiness=20 

или 

$ sudo sysctl -w vm.swappiness=20

Число в конце выбирайте исходя из своих предпочтений. Например, здесь мы снизили интенсивность использования swap и заставили систему размещать больше данных в ОЗУ. Если Вы работаете с небольшими объемами данных, которые чаще всего помещаются в ОЗУ Вашего компьютера, такая настройка может несколько увеличить производительность.

Примечание.

Для SSD дисков желательно изменить параметр swappiness на значение 10.

Для сохранения настройки после перезагрузки внесите в конец файла /etc/sysctl.conf следующую строку:

vm.swappiness=20 

Что бы сразу применить настройку:

# sysctl -p 

Перезагрузим нашу систему и проверим значение swappiness: 

$ cat /proc/sys/vm/swappiness

Настраиваем интенсивность использования swap.

2. Второй интересующий нас параметр называется vfs_cache_pressure и отвечает за длительность хранения кэша в ОЗУ. Значение параметра также колеблется от 0 (долго) до 100 (недолго). Соответственно, чем ближе значение параметра к 100, тем чаще будет удаляться кэш из ОЗУ, а значит реже придется задействовать swap. По умолчанию система старается удалять кэш максимально быстро, но если вы хотите держать его в оперативной памяти дольше, значение параметра можно понизить.

$ cat /proc/sys/vm/vfs_cache_pressure 

$ sudo sysctl -w vm.vfs_cache_pressure=70

Заставим Ubuntu хранить кэш в ОЗУ дольше.

5. Удаление swap в Ubuntu.

Удалить swap-файл довольно просто. Если Вы не знаете сколько в системе swap-файлов и/или swap-разделов, то воспользуйтесь командой:

$ cat /proc/swaps

После того, как Вы нашли нужный swap-файл, отключим его использование в качестве файла подкачки командой:

$ sudo swapoff /swapfile

Напомню, что в нашем примере файл подкачки так и назывался swapfile. Он может называться и по-другому, а также иметь другое расположение. Указывайте путь к файлу полностью. После этого можно удалить файл.

$ sudo rm /swapfile

Удаление swap-файла.

Не забудьте отредактировать файл /etc/fstab, если Вы до этого вносили в него изменения. Например, простым редактором nano: 

$ sudo nano /etc/fstab 

С отключением раздела подкачки всё так же просто. Для этого снова используем swapoff. Допустим, раздел подкачки лежит в /dev/sda2, где мы его и создавали в примере выше.

$ sudo swapoff /dev/sda2 

И редактируем /etc/fstab. А уж что дальше делать с этим разделом — решать Вам.


ИСТОЧНИК.

Создание и настройка swap в Ubuntu.

Настройка swap в Ubuntu 16.04.

SWAP — как создать, подключить, очистить и отключить файл подкачки в Linux.