Как отключить своп?

83

У меня есть некоторые конфиденциальные данные в оперативной памяти, которые я предпочитаю не быть на диске. Как отключить своп? У меня более чем достаточно овна. Если оперативная память становится слишком высокой, у меня нет проблем с прекращением процессов. Как отключить своп?

Примечание: у меня нет раздела подкачки, и он работает на виртуальной машине (VMWare)


источник
2
Даже если у вас много оперативной памяти, не самая лучшая идея - полностью работать без подкачки (см., Например, alexonlinux.com/swap-vs-no-swap ). В зависимости от ваших требований, вы можете рассмотреть возможность размещения раздела подкачки на защищенном устройстве dm-crypt, чтобы все записанное на нем было зашифровано. В этом случае вы должны убедиться, что подкачка включена после того, как зашифрованные тома становятся доступными, и отключается до отключения сопоставления устройств, конечно (я думаю, что это Ubuntu по умолчанию, но я не уверен). Просто найдите в Интернете «зашифрованный своп», чтобы найти множество руководств.
soulsource
1
Кстати: askubuntu.com/questions/248158/… Вам не нужен своп, пока он вам не понадобится. И тогда тебе это действительно нужно.
Как насчет крипсвапа? / dev / mapper / cryptswap1

Ответы:

121

С помощью

sudo swapoff -a  

это обычный способ отключить своп, с помощью swapon -aкоманды, используемой для его включения. Смотрите man swapoff для получения дополнительной информации об отключении подкачки для явных устройств.

ubfan1
источник
7
Похоже, это не сохраняется после перезагрузки?
ebyrob
19
Постоянные изменения в swap обычно вносятся в / etc / fstab.
ubfan1
Должны ли мы просто скопировать это в / etc / fstab
Макс
6
Нет. Вместо этого вы закомментируете строку подкачки в / etc / fstab.
Торстен Бронджер
Вы можете прочитать в других ответах, как это закомментировать.
Каролус
25

Вы можете отключить подкачку после перезагрузки, просто закомментировав (добавьте # перед строкой) запись подкачки в /etc/fstabфайле. Это предотвратит автоматическое монтирование раздела подкачки после перезагрузки. Чтобы сделать это в одной команде:

sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

или просто:

sudo sed -i '/ swap / s/^/#/' /etc/fstab

Теперь ваша запись подкачки /etc/fstabбудет выглядеть примерно так:

#UUID=xxxxxxxx-xxxx-xxxxx-xxx-xxxxxxxxxxx none            swap    sw              0       0

С вашими конкретными цифрами и строчными буквами вместо букв «х».

Авинаш Радж
источник
2
Почему в вашем цитируемом UUID есть конкретные цифры? Должны ли они быть одинаковыми для всех UUID? UUID моих разделов не имеют никакого совпадения с указанными вами цифрами.
Руслан
Ваши команды sed не работают, если поля разделены табуляцией (а не пробелами). Это лучше написать как sed -ri '/\sswap\s/s/^#?/#/' /etc/fstabPS: я также добавил, #?чтобы предотвратить дополнительные изменения в / etc / fstab, когда строка уже отключена.
Alek_A
4

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

Сначала используйте содержимое fstab, чтобы найти файл подкачки или устройство ( less /etc/fstab)

Обнаружив его, дважды и трижды проверив его местоположение, скажем, в sda5 или /swapfile (разделы подкачки были заменены по умолчанию файлом подкачки в 17.04 и более поздних версиях ) .

В случае раздела подкачки или диска: (с предисловием / dev) введите команду «уничтожить диск» (не следует использовать слегка)

sudo dd if=/dev/zero of=swapзаменить слово swap на устройство подкачки или файл, в котором вы находитесь/etc/fstab

взорвать его полный нулей или

sudo dd if=/dev/random of=swapснова заменить слово swap на устройство подкачки или файл, в котором вы находитесь/etc/fstab

взорвать его полный случайных данных.

В случае файла подкачки (с предваряющим только путь): вы можете просто удалить файл сrm /path/to/swapfile

В следующий раз, когда вы включите своп с

swapon -a

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

free когда система находится под большой нагрузкой и посмотрите, сколько используется для этого определения.

Если вы решите, что вам навсегда не нужен своп (для гибернации или чего-либо еще), вы можете просто закомментировать эту строку в fstab, как предлагается здесь

свободно

Старейшина Гик
источник
3

Это может быть неудачное решение, но я использовал его часто. Вы можете просто напечатать

sudo -s
crontab -e

И добавить

@reboot sudo swapoff -a  

Таким образом, он будет отключен автоматически при загрузке.

user10635
источник
4
Надеюсь, само собой разумеется, что это очень плохой метод. Зачем создавать задачу во время загрузки, чтобы отключить другую опцию, если есть еще один файл, который можно отредактировать, чтобы он не включался в первую очередь
underscore_d
Возможно, не так эстетично, но в этом нет ничего плохого. Если вы уже очень привыкли к использованию crontab, тогда это решение будет немного проще и имеет смысл, чем просто слепое копирование того, что другой пользователь на SE сказал вам сделать в / etc / fstab. И вы по-прежнему будете помнить, как это сделать на новом компьютере, без необходимости снова запускать Google. Я даже почти не знаю, что такое crontab, и в любом случае я гораздо лучше знаком с разделами диска, но логика остается в силе.
Николас Пипитоне
На самом деле, это может быть лучшим решением. Поскольку предложения / etc / fstab работают только для разделов подкачки. Это решение применяется к настройкам Linux независимо от того, используют ли они раздел или файл подкачки.
Николас Пипитоне
2
sudo swapoff -a

Приведенная выше команда отключает подкачку только для текущего сеанса , вам необходимо закомментировать раздел подкачки в файле / etc / fstab . Для этого вам просто нужно добавить «#» (строка комментария) в начало строки подкачки. Шаги таковы:

  1. Откройте файл fstab, введите sudo gedit /etc/fstabв терминале.

Содержимое файла будет выглядеть так:

proc            /proc           proc    nodev,noexec,nosuid 0       0
/host/ubuntu/disks/root.disk /               ext4    loop,errors=remount-ro 0       1
/host/ubuntu/disks/swap.disk none            swap    loop,sw         0       0
#/dev/sda10 /media/ASD  vfat    defaults    0   0
#/dev/sda1  /media/98   vfat    defaults    0   0
  1. Просто добавьте хеш (#) в начало строки раздела подкачки, чтобы строка выглядела так:

#/host/ubuntu/disks/swap.disk none swap loop,sw 0 0

  1. Перезагрузите компьютер
Сохаил xIN3N
источник
0

Перейти в терминал и выполнить следующую команду: gnome-disks. Он не установлен во всех дистрибутивах. Если это так, следуйте инструкциям, напечатанным для его установки, и повторите попытку. Найдите устройство со словом «swap» на левой панели. Обычно он имеет такой же размер, как ваша физическая память. Нажмите квадратную кнопку, чтобы отключить его. Подтвердите это изменение с помощью вашего пароля root.

Снимок экрана: http://imgur.com/Og6igqb

В приложении System Monitor (gnome-system-monitor) вы увидите, что оно сообщает о области подкачки как «недоступной». Область подкачки отключена, но не удалена. Вы можете легко включить его снова в будущем. Удаление пространства подкачки не принесло моей системе никакого вреда, но вы создадите больше работы для себя, если решите, что хотите вернуть ее (спящий режим) в будущем.

edit: чтобы предотвратить его монтирование при запуске, вы должны зайти в «Edit Mount Options ...» в gnome-disk и снять галочку с «монтировать при запуске».

user170544
источник
1
Как вы думаете, это отвечает на озабоченность пользователей наличием конфиденциальных данных в разделе подкачки? Можете ли вы сказать нам, почему?
Старейшина Гик
1
Главный вопрос пользователя спрашивал, как отключить своп. Если у вас есть конфиденциальные данные, в идеале вы должны использовать шифрование перед загрузкой.
user170544
1
Я с уважением не согласен. Когда я читаю вопрос, первое предложение, с которым я сталкиваюсь, звучит так: «У меня есть несколько конфиденциальных данных в оперативной памяти, которые я предпочитаю не хранить на диске». Я считаю, что это было его главной заботой, поэтому он начал с этого. Несмотря на это, я считаю, что в своем ответе я рассмотрел все аспекты его вопроса. Считайте это полезным примером.
Старейшина Гик
0

Заменить defaultsс sw,noautoв линии , которая состоит из записи подкачки в файле /etc/fstab:

/dev/mapper/centos-swap swap  swap    sw,noauto        0 0

(Путь /dev/mapper/centos-swap, вероятно, другой для вас).

Теперь проверьте вывод после перезагрузки, ваш своп никогда не будет смонтирован:

$ free -m
              total        used        free      shared  buff/cache   available
Mem:           3791         100        3408           8         282        3483
**Swap:             0           0           0**
askb
источник