Вопрос или проблема
У меня есть конфиденциальные данные в оперативной памяти, которые я предпочел бы не сохранять на диске. Как отключить своп?
У меня достаточно оперативной памяти. Если потребление ОЗУ становится слишком высоким, я не против, если процессы будут завершены. Как отключить своп?
Примечание: у меня нет раздела свопа, и это работает в виртуальной машине (VMware)
Используя
sudo swapoff -a
это обычный способ отключить своп, команду swapon -a
используют для его включения. Смотрите man swapoff
для получения дополнительной информации о том, как отключить своп для конкретных устройств.
Вы можете отключить своп после перезагрузки, просто закомментировав (добавив # перед строкой) запись свопа в файле /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
С вашими собственными конкретными номерами и строчными буквами вместо буквы “x”.
sudo swapoff -a
Вышеуказанная команда отключает своп только для текущей сессии, вам нужно закомментировать раздел свопа в /etc/fstab. Для этого просто добавьте “#” (комментарий) в начало строки свопа. Шаги таковы:
- Откройте файл 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
- Просто добавьте хэш (#) в начало строки раздела свопа, чтобы строка выглядела так:
#/host/ubuntu/disks/swap.disk none swap loop,sw 0 0
- Перезагрузите ваш ПК
Это может быть не совсем подходящее решение, но я часто им пользовался. Вы можете просто ввести
sudo -s
crontab -e
И добавить
@reboot sudo swapoff -a
Таким образом, своп будет отключен автоматически при загрузке.
Если вас беспокоит содержание свопа, вы всегда можете отключить его, как указано выше, с помощью sudo swapoff -a
, а затем заполнить устройство свопа нулями или случайными данными, используя dd.
Сначала используйте содержимое fstab, чтобы найти свой файл свопа или устройство (less /etc/fstab
).
Найдя его и два или три раза проверив его местоположение, например, sda5 или /swapfile
(разделы свопа были заменены по умолчанию на файл свопа в Ubuntu 17.04 (Zesty Zapus) и позже).
В случае раздела или диска свопа (предваряющиеся /dev): выполните команду “уничтожитель диска” (не использовать легкомысленно),
sudo dd if=/dev/zero of=swap
, заменив слово swap на устройство или файл свопа, который вы нашли в /etc/fstab
чтобы заполнить его нулями или
sudo dd if=/dev/random of=swap
, снова заменив слово swap на устройство или файл свопа, который вы нашли в /etc/fstab
чтобы заполнить его случайными данными.
В случае файла свопа (предваряющегося только путем):, вы можете просто удалить файл с помощью sudo rm /path/to/swapfile
, но лучше заполнить его мусором, как описано выше, чтобы при следующей активации свопа с помощью
swapon -a
система снова с удовольствием его использовала. Если у вас достаточно оперативной памяти, вам может не понадобиться своп вообще. Выполните команду
free
когда система находится под высокой нагрузкой, и посмотрите, сколько свободной памяти для принятия этого решения.
Если вы определите, что вам постоянно не нужен своп (для гибернации или по другой причине), вы можете просто закомментировать эту строку в fstab, как предложено здесь.
Откройте терминал и выполните эту команду: gnome-disks
. Она не установлена во всех дистрибутивах. Если это так, следуйте инструкциям, напечатанным для установки, и попробуйте снова. Ищите устройство со словом ‘swap’ в левой панели. Обычно его размер совпадает с вашей оперативной памятью. Нажмите квадратную кнопку, чтобы отключить ее. Подтвердите это изменение своим паролем администратора.
Скриншот:
В приложении “Монитор системы” (gnome-system-monitor) вы увидите, что своп-область обозначена как ‘не доступна’. Область свопа отключена, но не удалена. Вы можете легко снова включить ее в будущем. Удаление пространства свопа не принесло никакого вреда моей системе, но вы создадите больше работы для себя, если решите, что хотите вернуть его (гибернация) в будущем.
Чтобы предотвратить автоматическое монтирование при запуске, вам следует зайти в “Изменить параметры монтирования…” в gnome-disks и убрать галочку “Монтировать при запуске”.
Замените 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**
Отключить своп
Запустите следующую команду, чтобы отключить своп:
sudo swapoff -a
Теперь удалите файл свопа:
sudo rm /swap.img
Это безопасно и не требует перезагрузки.
a) Что касается вопроса “лучших практик”, в общем, “лучшие практики” зависят от точки зрения наблюдателя.
Вот почему этот сайт не называется “Спросите техническую поддержку Microsoft”, верно? 🙂
b) что касается простого вопроса отключения свопа,
sudo swapoff -v /swap.img
sudo nano /etc/fstab
и закомментируйте # строку /swap.img (обычно в конце файла)
затем cntl-O и cntl-X (маленькими буквами), чтобы сохранить изменения и выйти из nano
всё работает хорошо (если вы все сделаете правильно, было бы неплохо создать резервную копию оригинального файла fstab перед началом редактирования). Своп при этом не создает проблем, кроме случаев, когда вы позволяете системе исчерпать физическую память и т.д. Да, это верно. Но это указывает на более серьезные проблемы, и использование файла свопа все равно будет значительно медленнее, чем использование ОЗУ (даже флеш-диск). И довольно часто, если вы исчерпали физическую память и столкнулись с файлом свопа, конечным результатом будет то же самое: вам придется перезагрузить, так как производительность системы упадет до почти нуля.
Лучшей практикой было бы следить за доступной ОЗУ и использовать инструмент, который будет уведомлять вас, если она станет ниже определенного процента установленной памяти. Если только вы не хотите узнать это на собственном опыте.
“даже лучшее решение” было бы создать еще одну тему по этой проблеме…
c) ИИ Google ссылался на этот сайт и предоставил аналогичную информацию, но ошибся в деталях. По крайней мере, это уже второй раз, когда я это наблюдаю. Детали на этой странице верны.
Спасибо
Ответ или решение
Для того чтобы отключить своп (swap) в вашей системе и защитить конфиденциальные данные в оперативной памяти, следуйте следующим шагам:
1. Отключение свопа в текущей сессии
Первым делом, откройте терминал и введите следующую команду, чтобы отключить все области свопа:
sudo swapoff -a
Эта команда отключит своп только для текущей сессии. Если вам нужно отключить своп навсегда, следуйте дополнительным шагам.
2. Отключение свопа после перезагрузки
Для того чтобы предотвратить автоматическое включение свопа после перезагрузки, нужно изменить файл /etc/fstab
:
-
Открытие файла fstab:
Введите в терминале:
sudo nano /etc/fstab
-
Комментирование строки свопа:
Найдите строку, которая соответствует вашим настройкам свопа, она может выглядеть примерно так:
/dev/sda5 none swap sw 0 0
Добавьте символ
#
в начале этой строки, чтобы закомментировать её:#/dev/sda5 none swap sw 0 0
-
Сохраните изменения и закройте редактор. В nano для этого нажмите
Ctrl + O
(чтобы сохранить), затемEnter
иCtrl + X
(чтобы выйти).
3. Удаление или заполнение свопа нулями (опционально)
Если вы хотите быть абсолютно уверенными в том, что данные свопа не остаются на диске, вы можете заполнить своп нулями или случайными данными:
-
Для замещения содержимого свопа нулями:
sudo dd if=/dev/zero of=/dev/sdX
Замените
/dev/sdX
на ваш реальный своп заполненный раздел или файл, который вы найдете в/etc/fstab
. -
Для замещения случайными данными:
sudo dd if=/dev/random of=/dev/sdX
4. Проверка статуса свопа
Чтобы убедиться, что своп действительно отключён, вы можете использовать следующую команду:
free -h
В выводе команда должна показать Swap: 0
, что означает, что своп отключён.
Альтернативные методы
-
Используйте через графический интерфейс, например,
gnome-disks
, чтобы отключить своп. Найдите раздел свопа и просто отключите его. -
Если вы хотите отключить своп автоматически при каждом запуске системы, вы можете добавить команду в crontab:
sudo crontab -e
Добавьте строку:
@reboot sudo swapoff -a
Заключение
Теперь вы полностью отключили своп в своей системе. Это защитит ваши данные в оперативной памяти и предотвратит их запись на диск. Пожалуйста, помните, что отключение свопа может привести к остановке работы системы, если физическая память будет исчерпана. Поэтому следите за использованием ресурсов вашей системы и при необходимости возвращайте своп обратно.