Поиск по сайту:

Как создать файл подкачки в Linux


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

Файлы подкачки и разделы подкачки

Существует несколько сценариев, в которых вы можете захотеть увеличить существующее или добавить новое пространство подкачки на свой компьютер с Linux.

  • Возможно, ваше пространство подкачки часто загружено на максимум или близко к максимуму.
  • В процессе установки легко выбрать неверный вариант и непреднамеренно отказаться от добавления swap в вашу систему.
  • Возможно, вы ранее решили, что у вас так много оперативной памяти (ОЗУ), что вам не нужна подкачка, и передумали.
  • Иногда вы наследуете администрирование системы, в которой нет свопа, по причинам, которые вы никогда не сможете выяснить.

Простое решение всех этих проблем — добавить файл подкачки на ваш компьютер. Это специальный файл, предварительно выделенный и зарезервированный для использования в качестве пространства подкачки. Файл подкачки будет работать вместе с любым существующим файлом подкачки, будь то файл подкачки или раздел подкачки.

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

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

Прежде чем углубиться: Btrfs и SSD

Есть два момента, которые мы хотели бы быстро обсудить.

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

Начиная с ядра 5.0 вы можете иметь файлы подкачки в файловых системах Btrfs, если они настроены в соответствии со следующими требованиями:

  • Файлы без копирования при записи (NOCOW).
  • Они не сжаты.
  • Они не располагаются на разных жестких дисках.

Большинство читателей будут использовать файловую систему ext4 по умолчанию, так что это не будет для них проблемой.

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

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

Проверка существующего пространства подкачки

Смотри, прежде чем прыгать. Давайте проверим, какое пространство подкачки доступно на вашем компьютере. Вы можете сделать это двумя способами, и мы будем использовать оба. Команда free покажет используемую и свободную память. Параметр -h (удобочитаемый) заставит free использовать разумные единицы измерения при отображении значений памяти.

free -h

Вывод из free показывает, что на этой машине не настроено пространство подкачки.

Своп никогда не обсуждается без оперативной памяти и свободной оперативной памяти. Поэтому стоит отметить, что свободная оперативная память составляет 237 МБ. Не путайте это с общим объемом оперативной памяти, доступной для использования. Это значение обеспечивается «доступным» значением, которое составляет 881 МБ.

Linux использует свободную оперативную память для своих целей, таких как кэширование файлов и буферы ядра. Объем ОЗУ, выделенный для этого, является показателем «бафф/кеш», который составляет 871 МБ. Но эта память по-прежнему считается — и считается — «доступной». Содержимое оперативной памяти «buf/cache» может быть немедленно удалено и использовано любым приложением, которому требуется память.

Еще один способ проверить, доступно ли пространство подкачки, — использовать команду swapon. Параметр --show не вносит никаких изменений в своп на вашем компьютере. Предоставляет только статистику.

swapon --show

Если эта команда не выводит ничего, значит своп не настроен.

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

Сколько места подкачки мне нужно?

Традиционный ответ был «удвоить объем оперативной памяти, который у вас есть». Но это было придумано, когда компьютеры имели очень ограниченную оперативную память. Поскольку оперативная память стала дешевле, а программы и игры более требовательны к памяти, спецификации ПК изменились соответствующим образом. Домашние ПК с 32 ГБ оперативной памяти в наше время не редкость. И вы не собираетесь выделять 64 ГБ места на жестком диске для пространства подкачки, если у вас 32 ГБ оперативной памяти. Это явно лишнее.

Количество подкачки, которое вам нужно, — это как зажигательная тема, сравнимая с «какой редактор лучше». Одно из наиболее разумных обсуждений этой темы, которое мы видели, находится в часто задаваемых вопросах по свопу Ubuntu. Это короткий и здравый подход (хотя, как и многие люди, они неправильно понимают, как работает swappiness в Linux). Существует удобная таблица, которая показывает рекомендуемый объем пространства подкачки для объема оперативной памяти вашей системы, а также от того, переводите ли вы компьютер в спящий режим или нет.

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

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

Создание файла подкачки

Вы не должны использовать команду fallocate для создания файла подкачки. Это из справочной страницы для swapon:

The swap file implementation in the kernel expects to be able to write to
the file directly, without the assistance of the file system. 

This is a problem on files with holes or on copy-on-write files on file 
systems like Btrfs. Commands like cp(1) or truncate(1) create files with 
holes. These files will be rejected by swapon. 

Preallocated files created by fallocate(1) may be interpreted as files 
with holes too depending of the filesystem. Preallocated swap files are 
supported on XFS since Linux 4.18. 

The most portable solution to create a swap file is to use dd(1) and 
/dev/zero.

Таким образом, хотя fallocate быстрее, мы будем использовать dd для создания файла подкачки. Машина, использованная для исследования этой статьи, имеет 2 ГБ ОЗУ. Мы собираемся создать файл подкачки объемом один ГБ.

Варианты:

  • if: входной файл. В этом примере мы используем /dev/zero, что обеспечит поток нулевых байтов.
  • из: выходной файл. Мы собираемся создать файл в корневом каталоге с именем swapfile.
  • bs: размер блока в байтах. Указывает, сколько байтов нужно считывать из входного файла и записывать в выходной файл за раз.
  • count: сколько блоков нужно прочитать и записать. Умножьте это число на значение bs, чтобы получить размер файла.

sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576

Некоторая статистика предоставляется при создании файла.

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

Используйте команду ls, чтобы увидеть файл в корневом каталоге:

ls /

Подготовка файла подкачки

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

sudo mkswap /swapfile

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

Использование файла подкачки

Разрешения по умолчанию слишком либеральны, нам нужно ограничить их, чтобы только root мог использовать файл подкачки. Используйте chmod, чтобы изменить права доступа к файлу:

sudo chmod 600 /swapfile

Это удаляет все разрешения для членов файловой группы и других, но позволяет владельцу файла, root, читать и записывать в файл.

Нам нужно использовать команду swapon, чтобы сообщить Linux о наличии нового файла подкачки, доступного для использования. Нам нужно только указать путь и имя файла:

sudo swapon /swapfile

Файл подкачки теперь активен.

Добавление файла подкачки в fstab

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

sudo gedit /etc/fstab

Строка, которую нам нужно добавить в конец файла:

/swapfile    none    swap    sw    0    0

Поля:

  • Файловая система: путь и имя файла подкачки.
  • Точка монтирования: файл не монтируется как файловая система, поэтому запись нет.
  • Тип: «обмен».
  • Параметры: во время загрузки swapon -a (запустить все устройства, помеченные как swap) будет вызываться из одного из сценариев загрузки. Этот параметр сообщает Linux, что эту запись следует рассматривать как ресурс подкачки, который должен находиться под контролем этой команды swapon -a. Обычно здесь используются «значения по умолчанию», потому что некоторые пользователи Linux ошибочно полагают, что это поле игнорируется. Как мы увидим, это не так. Поэтому имеет смысл использовать правильный вариант.
  • Дамп: можно установить нулевое значение. В данном случае это не имеет значения.
  • Pass: можно установить нулевое значение. В данном случае это не имеет значения.

Сохраните изменения и закройте редактор.

Проверка использования свопа

Чтобы узнать, используется ли ваше пространство подкачки, используйте команду swapon с параметром --show:

swapon --show

Столбцы:

  • Имя: имя раздела подкачки или файла подкачки.
  • Тип: тип устройства подкачки.
  • Размер: размер ресурса подкачки.
  • Используется: объем используемого пространства подкачки.
  • Приоритет: приоритет этого пространства подкачки.

Приоритет пространства подкачки

Каждому пространству подкачки назначается приоритет. Если вы его не предоставляете, он выделяется автоматически. Автоматически назначенные приоритеты всегда отрицательные. Диапазон приоритетов, которые можно назначить вручную, составляет от 0 до 32767. Сначала используются ресурсы подкачки с более высоким приоритетом.

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

Чтобы установить приоритет, добавьте параметр  pri=  (приоритет) в запись /etc/fstab. Измените строку, которую вы добавили в /etc/fstab, чтобы она выглядела следующим образом:

/swapfile    none    swap    sw,pri=10    0    0

То есть добавить pri=10 в поле параметров, отделив от «sw» запятой. Не оставляйте пробелов между «sw», запятой и «pri=10». Перезагрузите компьютер и используйте команду swapon --show:

swapon -- show

Приоритет этого пространства подкачки был повышен до 10. Это доказывает, что поле параметров в записи /etc/fstab не игнорируется.

Обмен местами стал проще

Отбросив экспозицию и объяснение, мы можем создать новый файл подкачки так же легко и быстро, как это:

sudo dd if=/dev/zero of=/swapfile2 bs=1024 count=104857
sudo mkswap /swapfile2
sudo chmod 600 /swapfile2
sudo swapon /swapfile2

И давайте проверим, что это сработало:

swapon --show

Если вы хотите сделать это постоянным перетаскиванием, вставьте его в файл /etc/fstab.

Бум. Дело сделано.

RELATED: Best Linux Laptops for Developers and Enthusiasts