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

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

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

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

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

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

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

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

Прежде чем мы начнем: Btrfs и SSD

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

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

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

Нет файлов с функцией копирования при записи (NOCOW).
Они не сжаты.
Они не используют разные жесткие диски.

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

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

  Как настроить сервер uTorrent в Linux

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

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

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

free -h

fre -h в окне терминала

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

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

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

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

swapon --show

swapon - показать в окне терминала

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

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

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

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

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

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

  Как получить композитинг окон на легких рабочих столах Linux с помощью Compton

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

Возможные варианты:

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

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

sudo dd if = / dev / zero of = / swapfile bs = 1024 count = 1048576 в окне терминала

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

вывод sudo dd if = / dev / zero of = / swapfile bs = 1024 count = 1048576 в окне терминала

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

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

ls /

ls / в окне терминала

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

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

sudo mkswap /swapfile

sudo mkswap / swapfile в окне терминала

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

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

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

sudo chmod 600 /swapfile

sudo chmod 600 / swapfile в окне терминала

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

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

sudo swapon /swapfile

sudo swapon / swapfile в окне терминала

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

  Как играть в Subnautica в Linux

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

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

sudo gedit /etc/fstab

sudo gedt / etc / fstab в окне терминала

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

/swapfile    none    swap    sw    0    0

/ etc / fstab с выделенной записью файла подкачки

Поля:

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

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

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

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

swapon --show

swapon - показать в окне терминала

Столбцы:

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

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

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

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

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

/swapfile    none    swap    sw,pri=10    0    0

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

swapon -- show

swapon - показать в окне терминала

Приоритет этого пространства подкачки повышен до 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

sudo dd if = / dev / zero / of = / swapfile2 bs = 1024 count = 104857 в окне терминала

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

Бум. Работа сделана.