В этой статье объясним, что такое 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 МБ успешно подключён и готов к использованию.
Второй способ настройки и управления 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-файла может значительно улучшить стабильность и скорость работы вашего виртуального сервера, обеспечивая более плавное выполнение задач и стабильную работу веб-приложений даже при нехватке ОЗУ.