Блог / Статьи

Полезная информация для вашего хостинга

Как создать, настроить и управлять swap-файлом в Linux

Как создать, настроить и управлять swap-файлом в Linux

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

Swap-файл — это специальная область на жёстком диске, которая используется как дополнительная виртуальная память в Linux, когда оперативной памяти (ОЗУ) не хватает.

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

Как работает swapping

Операционная система использует оперативную память для временного хранения данных, которые необходимы для текущих задач и запущенных приложений. Однако в случаях, когда объём оперативной памяти оказывается недостаточным для хранения всех необходимых данных, система может начать «задумываться» или даже зависать.

Технология swapping в Linux решает проблему недостатка оперативной памяти. Программы и системы не всегда активно используют все данные, находящиеся в ОЗУ. Поэтому часть информации, которая в данный момент не востребована, может быть перемещена на жёсткий диск — в специальный раздел или файл, известный как swap. Этот swap-файл или раздел подключается, когда оперативная память заполнена: система перемещает в него неактивные данные, освобождая ОЗУ для новых процессов. Таким образом, swap не увеличивает объём оперативной памяти, а лишь временно «подменяет» её для разгрузки системы.

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

Все операции с swap-файлом в Linux выполняются от имени суперпользователя или через пользователя с правами администратора с использованием команды `sudo`.

Под файл подкачки не рекомендуется выделять слишком много места. Максимальный объём swap-файла обычно не превышает 2-кратного объёма установленной оперативной памяти. Оптимальный размер swap составляет от 50% до 100% объёма ОЗУ. Если система часто испытывает нехватку оперативной памяти, стоит рассмотреть возможность её увеличения вместо расширения swap-файла. Хотя swap-файл может немного ускорить работу системы, он намного медленнее ОЗУ, и его интенсивное использование может сократить срок службы SSD.

Как проверить наличие swap-файла

Swap-файл в Ubuntu и других дистрибутивах на базе ядра Linux подключается одинаково.

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

```
swapon --show
```

Если в результате команда выводит нулевые значения, это значит, что swap-файл не создан. Если же вывод содержит метаданные с ненулевыми значениями, значит, swap уже активен: 

```
NAME      TYPE   SIZE   USED  PRIO
/swapfile file   512M   0B    -2
```

В данном примере файл подкачки имеет размер 512 МБ, из которых используется 0 байт. Если в колонке «TYPE» указано «partition», значит используется не файл, а отдельный раздел.

Другой способ проверки swap — это команда: 

```
free -h
```

Она выводит информацию о состоянии ОЗУ и swap: 

```
  total   used   free   shared   buff/cache   available
Mem:     1.9G    69M    1.7G      2.0M       128M        1.7G
Swap:    512M    0B     512M
```

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

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

```
df -h
```

Если места достаточно, можно создавать файл подкачки. В противном случае стоит очистить место на диске или расширить его. Для стабильной работы системы свободным должно оставаться не менее 5% дискового пространства. Учитывайте это при расчёте объёма файла подкачки.

Как создать swap-файл

В этом разделе рассмотрим создание swap-файла объёмом 2 гигабайта. Вы можете задать любое имя файлу, в примере используется имя `swap_file`. Для создания файла используйте команду: 

```
dd if=/dev/zero of=/swap_file bs=1M count=2048
```

Команда создаст файл объёмом 2048 мегабайт (2 ГБ). Параметр `count` определяет размер файла. Для создания файла другого объёма измените это значение. После выполнения команды будет выведен результат: 

```
2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB, 2.0 GiB) copied, 5.2341 s, 410 MB/s
```

Таким образом был создан файл `/swap_file` объёмом 2048 МБ.

Установка прав на файл

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

```
chmod 600 /swap_file
```

Здесь права `600` означают, что только владелец (root) имеет доступ к файлу, а все остальные пользователи не могут его использовать.

Чтобы убедиться, что права применились, проверьте их с помощью: 

```
ls -la /swap_file
```

Вывод должен быть примерно следующим: 

```
-rw------- 1 root root 2147483648 May 25 12:39 /swap_file
```

Подготовка файла к использованию

На этом этапе созданный файл ещё не распознаётся системой как swap. Для указания его назначения используйте команду: 

```
mkswap /swap_file
```

После этого будет выведена информация о том, что пространство для swap настроено: 

```
Setting up swap space version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=38e12a0a-58ea-4bc5-b0f9-58a29a1dd8db
```

Подключение swap-файла

Теперь можно подключить файл подкачки с помощью команды: 

```
swapon /swap_file
```

Чтобы убедиться, что swap активен и его объём соответствует созданному ранее, выполните команду: 

```
free -m
```

Результат будет похож на этот: 

```
  total   used   free   shared   buff/cache   available
Mem:      1977   113    65       2           1799        1691
Swap:     2047   0      2047
```

Здесь видно, что swap-файл объёмом 2047 МБ успешно подключён и готов к использованию.

linux swap2

Второй способ настройки и управления swap-файлом

Проверка активного swap-файла

После добавления swap, можно проверить его текущий статус с помощью команды: 

```
swapon --show
```

Результат будет похож на этот: 

```
NAME       TYPE  SIZE  USED  PRIO
/swap_file file  2G    0B    -2
```

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

Настройка автоматического запуска swap

Чтобы файл подкачки подключался автоматически после каждого запуска системы, нужно внести изменения в файл `/etc/fstab`. Откройте его с правами суперпользователя и добавьте следующую строку: 

```
/swap_file    none    swap    sw   0  0
```

После этого перезапустите систему и проверьте, активен ли swap с помощью команды: 

```
free -m
```

Изменение размера swap-файла

Если нужно изменить размер существующего swap-файла, сначала отключите его:  

```
swapoff /swap_file
```

Затем проверьте, что swap-файл действительно отключён, используя команду: 

```
swapon --show
```

Пока файл подкачки не активен, можно изменить его размер той же командой, что и при создании. Например, для создания swap-файла объёмом 2 ГБ выполните: 

```
dd if=/dev/zero of=/swap_file bs=1M count=2048
```

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

```
ls -la /swap_file
```

Вывод должен быть следующим: 

```
-rw------- 1 root root 2147483648 May 19 13:04 /swap_file
```

Переподключение и проверка

После изменения размера, нужно снова настроить swap-файл с помощью команды: 

```
mkswap /swap_file
```

Затем подключите его: 

```
swapon /swap_file
```

Для проверки, что изменения вступили в силу, снова выполните: 

```
swapon --show
```

Также можно проверить файл конфигурации `/etc/fstab`, чтобы убедиться, что swap настроен для автоматической активации: 

```
cat /etc/fstab
```

Swap-файл играет важную роль в управлении ресурсами на VPS-хостинге, особенно при ограниченных объёмах оперативной памяти. При высокой нагрузке на сервер swap помогает предотвратить замедление работы и сбои, перенося неактивные данные на диск. Это особенно полезно для хостинга для VPS, где ресурсы часто ограничены, а повышение производительности имеет ключевое значение. Настройка и оптимизация swap-файла может значительно улучшить стабильность и скорость работы вашего виртуального сервера, обеспечивая более плавное выполнение задач и стабильную работу веб-приложений даже при нехватке ОЗУ.