Как увеличить размер swap в ubuntu
Содержание:
Подкачка с USB устройства
Благодаря модульности, предлагаемой Linux, мы можем иметь множество разделов подкачки на различных устройствах. Если у вас полностью заполнен жесткий диск, то можно использовать USB устройство как временный раздел подкачки. Однако, этот метод имеет серьёзные недостатки:
- USB устройство медленнее чем жесткий диск
- Flash память имеет ограниченное количество циклов записи. Использование его как раздела подкачки, может быстро убить его.
Чтобы добавить USB устройство как подкачку, сначала необходимо разметить USB флешку для подкачки как описано в секции .
Далее откройте и добавьте
pri=0
в опции монтирования первоначальной записи подкачки, таким образом USB подкачка будет иметь приоритет записи над старым разделом.
Данная инструкция будет работать и для других устройств хранения, таких как SD карты и т.д.
Создаем раздел подкачки (swap) в Ubuntu для установленной системы
- You are here: Ubuntu в Сумах » Без рубрики » Создаем раздел подкачки (swap) в Ubuntu для установленной системы
- Categories: Без рубрики Tags: gparted , Linux , swap , Ubuntu , конзоль , подкачка , разделы
За все время существования Linux размещение подкачки на отдельном разделе позиционировалось как преимущество, по сравнению с другими операционными системами — раздел имел четко заданный размер, и не подвергался дефрагментации из-за отсутствия каких-либо еще данных, кроме данных виртуальной памяти.
В тоже время существовала и совершенно четкая рекомендация: размер раздела подкачки должен быть в два раза больше, чем объем установленной оперативной памяти. Но в последнее время этой рекомендации уже практически никто не следует, учитывая все возрастающие объемы ОЗУ на современных компьютерах, и советы по объему файла подкачки различаются. Моя субъективная рекомендация для раздела подкачки: размер ОЗУ + 100-200МБ.Некоторые пользователи (как просто начинающие, так и не, кто переоценил возможности имеющейся ОЗУ ) не создают раздел подкачки при установке Ubuntu, и надо сказать, в большинстве случаев прекрасно без него обходятся. А что же делать в ситуации, когда вы все-таки столкнулись с необходимостью его использования?
Рассмотрим два варианта: создать отдельный раздел или же использовать файл подкачки.
Способ 1. Раздел подкачки (рекомендуется).
Если у вас есть раздел, отдельный от корневого () и домашнего (/home), например, ntfs, то нижеописанные действия можно произвести не перезагружая компьютер. В ином случае вам придется воспользоваться LiveCD с Ubuntu.
1. Запускаем GParted: «Система — Администрирование — GParted» (при запуске необходимо будет ввести пароль для root) или просто выполняем команду
в результате видим таблицу разделов:

Если физический диск не один, то выберите нужный в правом верхнем углу.
2. (При работе с LiveCD переходите сразу к пункту 3) Выбирайте раздел, от которого отделить место под раздел подкачки (на нем должно быть достаточно свободного места) и правой кнопкой мыши выполняйте операцию «Отмонтировать«. Имейте в виду, что с этим разделом никакие программы не должны производить никаких операций. Убедитесь, что все ненужные программы закрыты. По этой же причине невозможна работа с GParted, если у вас нет других разделов, кроме корневого и домашнего, что приводит к необходимости использования LiveCD c Ubuntu.
3. Правой кнопкой мыши вызываем контекстное меню на разделе, от которого мы будем отрезать место, и выбираем пункт «Изменить размер / Переместить», где при помощи мыши (или напрямую заданием значения в поле ввода «Cвободное место за разделом») определяем размер освобождаемого места для будущего раздела подкачки.

После внесения изменений кликаем кнопку «Изменить размер или переместить».
4. Вызываем контекстное меню (правой кнопкой мыши) на появившемся в результате наших действий блоке «не размечено», где выбираем пункт «Создать».

5. В появившемся окне выставляем значения полей, как показано на рисунке ниже. А именно: «Создать как» — «логический раздел». Файловая система» — «linux-swap». В поле «Новый размер» собственно весь размер, который вы и выделили для создания файла подкачки.

После чего нажимаем «Добавить».
6. На панели инструментов главного окна нажимаем кнопку «Выполнить все операции» в виде зеленой галочки.
Если вы использовали LiveCD, то после выполнения шестого пункта загрузитесь в Ubuntu на вашем жестком диске.
7. В контекстном меню только что созданного раздела подкачки правой кнопкой выбираем «Включить подкачку».
Проверить информацию по разделу подкачки, убедившись, что он подключен, можно при помощи команды
Следует сказать, что раздел подкачки в этом случае будет подключен лишь до перезагрузки, и после каждой перезагрузки вам придется подключать его вручную.
Чтобы этого избежать, необходимо в конец файла /etc/fstab добавить следующую строку:
где значение, это UUID, который можно увидеть, выбрав в контекстном меню раздела в GParted пункт «Информация».

Для редактирования файла выполните
Теперь у вас файл подкачки будет доступен сразу при загрузке.
Способ 2. Файл подкачки.
Этот способ вам пригодится, если подкачка вам понадобилась раз и ненадолго, или же по каким-либо причинам создание отдельного раздела не представляется возможным. Алгоритм этого метода был взят здесь.1. Создаем раздел в 1Гб (в качестве примера) (1024 * 1024Мб = 1048576 блоков):
2. Форматируем файл, как Linux SWAP
3. Активируем файл подкачки
4. Проверяем работоспособность
Файл подкачки будет подключен лишь до перезагрузки. Если вы решили использовать его на постоянной основе, то отредактируйте файл fstab
добавив в конце строку
Шаг 6 — Изменение настроек подкачки
Существует несколько настраиваемых опций, влияющих на производительность системы при работе с пространством подкачки.
Настройка параметра Swappiness
Параметр определяет, как часто система выгружает данные из оперативной памяти в пространство подкачки. Его значение выражается числом от 0 до 100 процентов.
При значениях, близких к нулю, ядро не будет выгружать данные на диск, если в этом нет абсолютной необходимости. Взаимодействие с файлом подкачки требует гораздо больше времени, чем взаимодействие с оперативной памятью, и может вызывать значительное снижение производительности. Если система не зависит от подкачки, то, как правило, ее производительность повышается.
При значениях, близких к 100, система будет пытаться выгрузить больше данных на подкачку, чтобы разгрузить оперативную память. В зависимости от профиля памяти приложений и от тех задач, которые ставятся перед сервером, в некоторых случаях это плюс.
Можем увидеть текущее значение фактора swappiness, введя следующее:
Для настольного компьютера неплохое значение swappiness — 60. Для сервера, возможно, вы захотите приблизить его к 0.
Можно задать другое значение swappiness при помощи команды .
Например, чтобы установить значение swappiness 10, можно ввести следующее:
Эта настройка будет сохраняться до следующей перезагрузки. Можно автоматически задать это значение при перезагрузке, добавив строку в файл :
Внизу можно ввести следующее:
/etc/sysctl.conf
Сохраните файл и закройте его после завершения.
Изменение настроек нагрузки кэш-памяти
Еще одно связанное значение, которое вы, возможно, захотите изменить — . Эта настройка определяет, насколько система будет кэшировать данные inode и dentry по сравнению с другими данными.
По сути, это данные доступа к файловой системе. Как правило, искать их довольно сложно, а запрашиваются они часто, так что кэш-память в этом случае весьма полезна. Чтобы узнать текущее значение этого параметра, можно еще раз запросить файловую систему :
Согласно текущим настройкам, система удаляет данные инодов из кэша слишком быстро. Можно задать более консервативное значение — например, 50 — введя следующее:
Опять-таки, это значение действительно только для текущей сессии. Чтобы сделать его постоянным, нужно (как и в случае со swappiness) изменить файл конфигурации:
Внизу добавьте строку с новым значением:
/etc/sysctl.conf
Сохраните и закройте файл после завершения.
Create a Swap Space
As mentioned earlier, the swap is a space reserved for memory management.
We have two ways to tell the OS where this space is to be allocated. We can create a new file within an existing partition, or we can allocate an entire partition of type swap.
3.1. Create a Swap File
First of all, we need to create an empty file with the desired size.
To do that, we use the dd command, configuring the size options appropriately:
- bs – controls the number of bytes to write in one go as a block
- count – refers to the number of blocks to write
Let’s create a 4 GB swap file with 4,096 blocks, at 1 MB per block:
Now, let’s set the correct permissions with chmod:
The next step is to set the file as swap space using the command mkswap:
and enable it with swapon:
Finally, we’ll make our changes permanent by modifying the fstab file, in case we need to restart the machine.
To append the configuration at the end of the file we echo it to the standard output and pipe it into tee, which can parse the input line by line:
3.2. Create a Swap Partition
The partition case is different from the previous case only because of the format used — instead of a file, we can allocate an entire portion of the disk.
In order to do that, we need to modify the partitions table to make space and create a new partition of type swap.
There are plenty of GUI tools (such as GParted) that can easily change the partitions table securely and visually with just a few mouse clicks.
Once the new partition is saved, let’s define it as swap:
Where sdXX should be replaced with the new partition name.
Then, we activate it:
Finally, like in the file scenario, we have to add the new partition to our fstab file, so that it loads the next time we restart:
Свободное пространство на жёстком диске
Как правило, в качестве swap-пространства используется специально выделенная область диска. Тем не менее, изменить схему разбиения диска не всегда возможно. В таком случае swap-пространство можно создать в уже существующем разделе.
Сначала нужно узнать текущее состояние диска. Чтобы получить эти данные, введите:
В данном случае диск – это устройство /dev; как видите, места на нём достаточно много.
Существует множество расхожих мнений о «правильном» размере swap-пространства. В целом, это зависит от личных предпочтений пользователя и требований приложения. Как правило, swap-пространство должно быть равно или вдвое больше объема оперативной памяти системы. В этом вопросе нужно ориентироваться на свободное дисковое пространство. Например, если RAM системы – 4 гигабайта, а вдвое большее swap-пространство (т.е., 8 гигабайт) займет существенную часть дискового пространства, нужно создать swap не более 4 гигабайт.
Swaps Explained
Interest Rate Swaps
In an interest rate swap, the parties exchange cash flows based on a notional principal amount (this amount is not actually exchanged) in order to hedge against interest rate risk or to speculate. For example, imagine ABC Co. has just issued $1 million in five-year bonds with a variable annual interest rate defined as the London Interbank Offered Rate (LIBOR) plus 1.3% (or 130 basis points). Also, assume that LIBOR is at 2.5% and ABC management is anxious about an interest rate rise.
The management team finds another company, XYZ Inc., that is willing to pay ABC an annual rate of LIBOR plus 1.3% on a notional principal of $1 million for five years. In other words, XYZ will fund ABC’s interest payments on its latest bond issue. In exchange, ABC pays XYZ a fixed annual rate of 5% on a notional value of $1 million for five years. ABC benefits from the swap if rates rise significantly over the next five years. XYZ benefits if rates fall, stay flat or rise only gradually.
Below are two scenarios for this interest rate swap: LIBOR rises 0.75% per year and LIBOR rises 0.25% per year.
Scenario 1
If LIBOR rises by 0.75% per year, Company ABC’s total interest payments to its bondholders over the five-year period amount to $225,000. Let’s break down the calculation:
Преимущества SWAP
- Экономия бюджета
- Допустим, рассчитано, что под работу сайта необходимо 2 гигабайта оперативной памяти. Однако, в зависимости от всплесков трафика, активности пользователей или особенностей работы проекта в моменты пиковой нагрузки оперативной памяти может не хватать, что, в свою очередь, может вызывать сбои в работе. Можно решить проблему, докупив оперативную память на 2-4 гигабайта, но тогда большую часть времени она будет простаивать вхолостую. В таком случае, может помочь простое подключение свопа на 4 гигабайта — вы выделяете место на диске под своп, и он берёт на себя роль помощника оперативной памяти.
Теперь сравним:Сравнение стоимости оперативной памяти и SSD (цены актуальны на 7 июля 2017 года) Оперативная память, в среднем за 1 гигабайт 100 рублей в месяц 170 рублей в месяц SSD, в среднем за 1 гигабайт 10 рублей в месяц 13 рублей в месяц Как видно из таблицы, экономия выйдет примерно в 10 раз.
Enabling the Swap File
Right now, our file is created, but our system does not know that this is supposed to be used for swap. We need to tell our system to format this file as swap and then enable it.
Before we do that though, we need to adjust the permissions on our file so that it isn’t readable by anyone besides root. Allowing other users to read or write to this file would be a huge security risk. We can lock down the permissions by typing:
Verify that the file has the correct permissions by typing:
<pre>
ls -lh /swapfile
</pre>
<pre>
<span class=“highlight”>-rw——-</span> 1 root root 4.0G Apr 28 17:19 /swapfile
</pre>
As you can see, only the columns for the root user have the read and write flags enabled.
Now that our file is more secure, we can tell our system to set up the swap space by typing:
Our file is now ready to be used as a swap space. We can enable this by typing:
We can verify that the procedure was successful by checking whether our system reports swap space now:
<pre>
sudo swapon -s
</pre>
<pre>
Filename Type Size Used Priority
<span class=“highlight”>/swapfile file 4194300 0 -1</span>
</pre>
We have a new swap file here. We can use the utility again to corroborate our findings:
<pre>
free -m
</pre>
<pre>
total used free shared buffers cached
Mem: 3953 101 3851 0 5 30
-/+ buffers/cache: 66 3887
<span class=“highlight”>Swap: 4095</span> 0 4095
</pre>
Our swap has been set up successfully and our operating system will begin to use it as necessary.
Оптимизация SWAP
Оптимизация сводится к настройке двух параметров.
Параметр ядра swappiness
Параметры от 0 до 100. При значениях близких к нулю, ядро не переносит данные на диск, если в этом нет крайней необходимости.
Определение используемого параметра swappiness:
cat /proc/sys/vm/swappiness = вывод команды = 30
Исходя из действующего значения принимаете решение об изменении. Изменим значение до 10:
sysctl -w vm.swappiness=10 = вывод команды = vm.swappiness=10
параметр -w для сохранения этой настройки после перезагрузки.
Параметр ядра vfs_cache_pressure
Показывает системе какое время нужно хранить открытые. Значение по умолчанию 100. При значениях близких к нулю, ядро будет держать их в памяти как можно дольше.
Определение используемого параметра vfs_cache_pressure:
cat /proc/sys/vm/vfs_cache_pressure = вывод команды= 100
Исходя из действующего значения принимаете решение об изменении. Изменим значение до 1000:
sysctl -w vm.vfs_cache_pressure=1000 = вывод команды = vm.vfs_cache_pressure=1000
Что такое swap?
Swap – это раздел на жестком диске, в котором операционная система может временно хранить данные, которые она больше не может удерживать в RAM. Это позволяет увеличить количество информации, хранящейся в рабочей памяти, но с некоторыми нюансами. Пространство жесткого диска будет использоваться, главным образом, когда RAM уже недостаточно для передачи данных.
Информация, записанная на жесткий диск, будет подгружаться медленнее хранящейся в оперативке информации. Операционная система запускает данные приложения в оперативной памяти, а swap использует для хранения более старых данных. В целом, иметь swap-пространство на случай, если ОЗУ переполнится, — отличный способ перестраховаться.
See swap size in Linux using vmstat command
Type the following vmstat command: Sample outputs:
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 9 1209512 101352 1504 127980 0 3 11 20 60 55 3 1 95 1 2 11 1209640 101292 1508 134132 844 424 5608 964 23280 15012 2 8 20 70 0 10 1210052 108132 1532 125764 648 660 10548 916 22237 18103 3 10 11 77 1 13 1209892 106484 1500 128052 796 240 10484 980 24024 12692 2 8 24 67 1 9 1209332 113412 1500 124028 1608 168 2472 620 28854 13761 2 8 20 70
Note down the following output from swap field:
- si: Amount of memory swapped in from disk (/s).
- so: Amount of memory swapped to disk (/s).
Options
| -c, —check | Check the device (if it is a block device) for bad blocks before creating the swap area. If any bad blocks are found, the count is printed. |
| -f, —force | Go ahead even if the command is stupid. Forces the creation of a swap area larger than the file or partition of where it resides. Also, without this option, mkswap will refuse to erase the first block on a device with a partition table and on a whole disk (e.g., /dev/sda). |
| -L, —label label | Specify a label for the device, to allow swapon by label. |
| -p, —pagesize size | Specify the page size (in bytes) to use. This option is usually unnecessary; mkswap reads the size from the kernel. |
| -U, —uuid UUID | Specify the UUID to use. The default is to generate a UUID. |
| -v, —swapversion 1 | Specify the swap-space version. (This option is currently pointless, as the old -v 0 option has become obsolete and now only -v 1 is supported. The kernel has not supported v0 swap-space format since 2.5.22 (June 2002). The new version v1 is supported since 2.1.117 (August 1998).) |
| -h, —help | Display help text and exit. |
| -V, —version | Display version information and exit. |
Как создать и подключить файл подкачки SWAP
Проверка наличия свопа в системе
Для начала, нужно убедиться, что своп ещё не подключен:
swapon -s
Если команда выдала пустой результат или что-то навроде:
Filename Type Size Used Priority
— значит, своп, скорее всего отсутствует.
Дополнительно проверим командой:
free -m

Проверка наличия свободного места на диске
Теперь, надо проверить, сколько свободного места есть на диске:
df -h
В результате, мы увидим что-то подобное:
:~# df -h Файловая система Размер Использовано Дост Использовано% Cмонтировано в /dev/vda1 30G 20G 9,0G 66% / udev 10M 0 10M 0% /dev tmpfs 403M 41M 362M 11% /run tmpfs 1006M 336K 1005M 1% /dev/shm tmpfs 5,0M 0 5,0M 0% /run/lock tmpfs 1006M 0 1006M 0% /sys/fs/cgroup tmpfs 1006M 492K 1005M 1% /tmp
Как мы видим, доступно 9 гигабайт дискового пространства — вполне достаточно, чтобы создать своп-файл.
Какого размера создать swap
Исходите из принципа — сколько может понадобиться, столько и выделяйте. Как правило, можно начинать с размера объёма оперативной памяти, либо его удвоенного количества. Например, если у вас в системе 2 гигабайта оперативки, своп можно сделать размером 2-4 гигабайта, как правило, этого должно хватать. Но, Вы можете скорректировать его размер под себя.
Создание файла SWAP
Допустим, мы хотим создать swap-файл размером 4 гигабайта.
Далее, здесь существует 2 подхода, традиционный медленный и новый быстрый:
- Быстрый способ
- Используем :
fallocate -l 4G /swapfile
Результатом будет пустая строка, это нормально.
В отличие от , результат будет получен почти сразу, и я рекомендую именно его. - Традиционный, медленный способ
- Или используем команду:
dd if=/dev/zero of=/swapfile bs=1G count=4
Синтаксис команды простой:
- dd — команда предназначена для того, чтобы что-то куда-то копировать побайтово;
- if=/dev/zero — указывает на источник, т.е. на то, откуда копируем, в данном случае из /dev/zero — это специальный файл в UNIX-подобных системах, представляющий собой источник нулевых байтов;
- of=/swapfile — указывает путь назначения, куда копируем данные;
- bs=1G — количество байт, которые будут записаны за раз. В нашем случае, 1 гигабайт. Обозначения: — гигабайт, — мегабайт, — килобайт, и так далее;
- count=4 — сколько блоков размером с будет создано, в нашем случае 4.
Теперь, когда файл создан, проверим результат:
ls -lh /swapfile
В результате увидим:
Как видим, файл создался верно и с нужным объёмом.
Как подключить SWAP файл
Для начала, ограничим права доступа к вновь созданному файлу.
chmod 600 /swapfile
Проверим результат:
ls -lh /swapfile
В результате, мы должны увидеть подобное:
Права прописаны верно.
Теперь нужно сделать из файл подкачки:
mkswap /swapfile
В результате, увидим примерно следующее:
Теперь, файл готов в роли свопа. Подключим его к системе:
swapon /swapfile
Всё, теперь своп подключен и работает. Осталось проверить правильность работы самой первой командой:
swapon -s
Filename Type Size Used Priority /swapfile file 4193300 0 -1
Своп также будет виден в стандартных командах:
free -m
total used free shared buffers cached Mem: 2010 1887 122 0 5 30 -/+ buffers/cache: 827 1183 Swap: 4095 0 4095
Всё, теперь точно, своп в системе готов и будет использоваться при необходимости.
Добавление свопа в автозагрузку
Чтобы при перезагрузке сервера своп автоматически подтягивался в систему, нужно прописать его в :
echo "/swapfile none swap sw 0 0" >> /etc/fstab
Теперь система знает, где и как при перезагрузке искать и подключать своп.
Проверить, подключен ли своп в автозагрузке, можно с помощью редактора:
nano /etc/fstab
Раздел подкачки
Раздел подкачки может быть создан различными GNU/Linux утилитами разметки. Разделы подкачки обычно обозначаются как тип . Хотя есть возможность использовать разные типы как подкачку, рекомендуется использовать тип , в большинстве случаев systemd, будет автоматически определять его и монтировать (см. ниже)
Для установки раздела как область Linux подкачки, можно использовать . Например:
# mkswap /dev/sdxy
Важно: Все данные на указанном разделе будут утеряны.
Для подключения устройства как подкачку:
# swapon /dev/sdxy
Чтобы подключить этот раздел подкачки при загрузке, добавьте запись в fstab:
UUID=<UUID> none swap defaults 0 0
где <UUID> может быть получен из команды:
lsblk -no UUID /dev/sdxy
Совет: Предпочтительно использовать UUID и LABEL, чем имена устройств полученные от ядра (/dev/sd*), т.к. порядок устройств может измениться в будущем. Смотри fstab.
Примечание:
- Эта fstab запись необязательна если раздел подкачки находится на устройстве, использующий GPT разметку, см. следующий подраздел.
- Если используется SSD с поддержкой , учтите использование в fstab строке подключения подкачки. Если вручную активировать подкачку с помощью swapon, используйте параметр /, который делает тоже самое. Подробности смотри в .
Важно: Включение discard в RAID установке с использованием mdadm, приведёт к блокировке системы при загрузке и во время выполнения, если использовать swapon.
Активация используя systemd
Активация разделов подкачки в systemd базируется на двух различных механизмах. Оба исполняются в
. Генераторы запускаются при старте системы и создают нативные systemd юниты для монтирования. Первый , читает fstab, чтобы генерировать юниты, включая юнит для подкачки. Второй , осматривает корневой диск, чтобы генерировать юниты. Это операция проходит только на GPT дисках и может идентифицировать разделы подкачки по их тип коду .
Отключение подкачки
Чтобы деактивировать определенное пространство подкачки:
# swapoff /dev/sdxy
Также можно использовать ключ, чтобы деактивировать все пространства подкачки.
С тех пор, как systemd управляет подкачкой, она вновь будет активирована при старте системы, для долговременного отключения автоматической активации найденных пространств подкачки, выполните , чтобы найти связанные со .swap юниты и замаскируйте () их.
How do I set swappiness on a Linux server?
The syntax is: OR The value in /proc/sys/vm/swappiness file controls how aggressively the kernel will swap memory pages. Higher values increase agressiveness, lower values descrease aggressiveness. The default value is 60. To make changes permanent add the following line to /etc/sysctl.conf:
echo 'vm.swappiness=30' >> etcsysctl.conf |
See also:
- Linux display system hardware status information gathered from /proc filesystem in easy format (includes swap info)
- Man pages – top(1)
This entry is 1 of 2 in the Linux and UNIX Swap File Management Tutorial series. Keep reading the rest of the series:
- Linux Add a Swap File
- FreeBSD Add a Swap File