Как отключить подкачку в Linux

Обновлено: 03.07.2024

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

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

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

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

Проверить конфигурацию свопа

Чтобы проверить, включен ли своп, запустите «swapon -s» из интерфейса оболочки. Если эта команда возвращает непустой вывод, значит своп включен, например:

Вот как выглядит вывод, если своп выключен:

Временное отключение подкачки

Чтобы проверить, может ли использование подкачки повлиять на определенную проблему, вы можете временно отключить подкачку. Это действие вступает в силу немедленно, содержимое свопа записывается в оперативную память. Действие остается в силе до тех пор, пока не будет выполнен swapon -a или система не будет перезагружена.

Отключить обмен:

Войдите в систему через ssh и выполните следующую команду:

Активируйте замену еще раз:

Войдите в систему через ssh и выполните следующую команду:

Постоянное отключение

Чтобы инициировать изменение, используйте один из вариантов:
1. введите swapoff -a
2. перезагрузиться (введя «reboot»)

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

Выделение небольшого раздела для подкачки значительно увеличит время доступа и скорость передачи по сравнению с обычным жестким диском на более новых машинах с быстрыми жесткими дисками SSD, но скорость все равно ниже, чем у оперативной памяти. Некоторые говорят, что уместно установить пространство подкачки в два раза больше объема оперативной памяти компьютера. Однако в системах с более чем 4 ГБ оперативной памяти для пространства подкачки должно быть установлено значение 2 или 4 ГБ.

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

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

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

Как навсегда отключить подкачку в Linux

Затем проверьте наличие строки TYPE="swap" после команды blkid, чтобы определить раздел подкачки, как показано на снимке экрана ниже.

Как навсегда отключить подкачку в Linux

проверьте тип раздела подкачки

Снова введите следующую команду lsblk, чтобы найти и идентифицировать раздел [SWAP], как показано на снимке экрана ниже.

Как навсегда отключить подкачку в Linux

Поиск Подтвердить замену раздела

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

Или отключите все свопы из /proc/swaps.

Чтобы проверить, отключена ли область подкачки, запустите команду free.

Как навсегда отключить подкачку в Linux

Отключить раздел подкачки

После этого перезагрузите систему, чтобы применить новый параметр подкачки, или введите команду mount -a в некоторых случаях.

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

Я запускаю специально скомпилированное ядро ​​3.18.9, и мне интересно, как лучше всего отключить подкачку в системе. Я также использую init, если это имеет значение.

Достаточно ли закомментировать или удалить строку подкачки в /etc/fstab, чтобы подкачка не работала/монтировалась при загрузке, или мне нужно перекомпилировать ядро ​​без Поддержки подкачки анонимной памяти (подкачки), чтобы быть на 100% уверенным, что это так? не включить?

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

@MichaelHampton В тот момент я не видел необходимости, пока не понял, что в конечном итоге произойдет. Кроме того, моя система не достигает точки за все время использования свопа, поэтому я чувствую, что могу удалить его.

Тогда я бы удалил эту функцию из ядра. В противном случае кто-то может подключить USB-флешку и снова начать подкачку на нее.

@ott Разве пользователю не требуется доступ суперпользователя для использования исполняемого файла swapon/swapoff? Я мог бы снова отключить его на всякий случай, но я не уверен, что непривилегированный пользователь может создавать файлы подкачки.

Действительно, ему нужен доступ суперпользователя, который он мог бы получить с помощью эксплойта, например. Но вы следите за своим сервером 24/7?

7 ответов 7

  1. Определите настроенные устройства подкачки и файлы с помощью cat /proc/swaps .
  2. Отключите все устройства и файлы подкачки с помощью swapoff -a .
  3. Удалите все совпадающие ссылки, найденные в /etc/fstab.
  4. Необязательно: уничтожьте все устройства подкачки или файлы, найденные на шаге 1, чтобы предотвратить их повторное использование. Поскольку вы опасаетесь утечки конфиденциальной информации, возможно, вы захотите рассмотреть возможность безопасного удаления данных.

В некоторых системах необходимо также пересобрать архив initrd, например с помощью dracut --regenerate-all --force или mkinitrd , иначе система не загрузится. Благодаря Дж.О. Ахо и Карлос Э.Р. на alt.os.linux.suse .

Раньше автоматически использовались только разделы подкачки в /etc/fstab, однако systemd может немного изменить это. Возможно, вам придется сделать следующее:

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

Если вы не используете systemd, то удаления записей подкачки из /etc/fstab должно быть достаточно (насколько мне известно).

Возможно, правильным решением будет избавиться от разделов подкачки, чтобы они не использовались случайно. Чтобы удалить разделы подкачки, я бы использовал fdisk для изменения типа раздела с подкачки на что-то другое, а затем переформатировал раздел или использовал: dd if=/dev/zero of=/dev/old-swap-partition, чтобы обнулить его и предотвратить его использование.

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

Вы можете столкнуться со сценарием, когда вам нужно отключить своп в Linux. Предположим, вы хотите изменить размер подкачки. Вы должны отключить его, прежде чем вносить какие-либо изменения.

Если по каким-то причинам вы решили отключить подкачку в Linux, в этом руководстве показано, как это сделать.

В Linux существует два вида пространства подкачки:

  • раздел подкачки (выделенный раздел) (файл под корнем, выполняющий роль подкачки)

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

Однако более достоверную информацию можно найти в файле /etc/fstab, который показывает все свопы в вашей системе, активные или неактивные.

Проверить своп в fstab

Теперь, когда вы знаете, как найти файл подкачки или раздел, давайте посмотрим, как его отключить.

Отключить подкачку в Linux

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

Более простой способ — отключить все активные свопы в вашей системе следующим образом:

Если вы снова проверите наличие активного свопа с помощью команды swapon –show, вы больше не увидите никакого свопа.

Повторно включить подкачку в Linux

Если вы хотите повторно активировать отключенное пространство подкачки, вы можете использовать команду swapon следующим образом:

Или вы можете включить все доступное пространство подкачки с помощью этой команды:

Удаление области подкачки

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

Теперь, если у вас есть файл подкачки, его удаление аналогично удалению любого файла в Linux.

Если у вас есть раздел подкачки, вы можете удалить его с помощью команды fdisk.

Важно также удалить запись об удаленном файле подкачки или разделе из файла /etc/fstab.

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

Читайте также: