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


65

Swap делает мою систему вялой, а отключение делает все более плавным. У меня 3,5 ГБ оперативной памяти.

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


2
AFAIK своп используется для гибернации. Просто
говорю

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

Просто поместите swapoff -a в /etc/rc.local и забудьте об этом ...;)
user264467

1
@ user264467: не очень удобно оставлять swap включенным, чтобы отключить его при каждой перезагрузке, гораздо чище отключать его постоянно.
karatedog

Ответы:


119

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

Таким образом, вместо того, чтобы вообще отключить подкачку, просто убедитесь, что ваша ОС переставляет очень редко. Это контролируется vm.swappinessнастройкой в /etc/sysctl.conf. По умолчанию в Ubuntu, 60если я правильно помню, это слишком много для большинства ситуаций, и вы начнете менять местами, даже если оперативная память еще доступна. Если вы уменьшите это значение, вы сможете сохранить безопасную линию обмена, используя ее только в чрезвычайных ситуациях. Итак, откройте файл:

sudo nano /etc/sysctl.conf

И добавьте эту строку к нему:

vm.swappiness=10

Если это все еще слишком много, измените 10 на 1. Теперь, после перезапуска, вы будете менять местами только тогда, когда это абсолютно необходимо, и вы можете просто забыть об этом.


Я люблю менять swappines, и я не делал в течение многих лет. Спасибо за напоминание. sudo upvote turdon!
Дарт Эгрегиус

16
Просто добавьте к аргументу «более безопасный подход»: когда у вас нет свопа, и в системе не хватает памяти, вызывается убийца OOM (Out of Memory) в Linux. При этом выбирается процесс на основе оценки «плохости», а затем ... убивает его (завершает, закрывает) без возможности для приложения сохранить свои изменения, очистить и т. Д. Таким образом, если вы отключите своп и закончите память, вы очень хорошо рискуете потерять работу, если важные процессы плохо отражаются в глазах убийцы OOM. Таким образом, вы должны выключать своп только в том случае, если уверены, что у вас никогда не закончится память.
Рейд

5
@ Reid Стоит отметить, что, очевидно, то же самое произойдет, если у вас тоже не хватит места подкачки.
о0 '.

11
Это на самом деле не отвечает на вопрос. Отключение подкачки в целом может иметь смысл в системе с 16 ГБ или 32 ГБ ОЗУ. Несколько дополнительных ГБ подкачки не принесут пользы в случае приложений, потребляющих память, тогда как большой объем подкачки (например, 20 ГБ) займет много места на жестком диске / SSD. Кроме того, гибернация с 32 ГБ оперативной памяти не доставляет удовольствия .
jmiserez

7
Для некоторых настроек, как только у вас кончается физическая память и начинается обмен, система начинает «сосать грязь» и становится непригодной для использования. Да, теоретически вы можете войти и убить нарушителя, но когда требуется более 20 минут для изменения фокуса в пользовательском интерфейсе и еще больше для получения запроса пароля через SSH, OOMing становится лучшим вариантом (за которым следует жесткий перезагрузка с последующим получением и устранением проблемы).
BCS

47

Найдите строку в / etc / fstab, относящуюся к swap, и прокомментируйте ее. Мой такой:

UUID=6880a28d-a9dc-4bfb-ba47-0876b50e96b3 /               ext4    errors=remount-ro 0       1
UUID=7350e6f2-e3a7-4d80-9a95-8741c7db118f /home           ext4    defaults        0       2
UUID=E2E26AD1E26AAA0D /media/windows  ntfs    defaults,umask=007,gid=46 0       0

# Swap a usb extern (3.7 GB):
#/dev/sdb1 none swap sw 0 0

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

sudo cp /etc/fstab /etc/fstab_backup
gksu gedit /etc/fstab

Просто добавьте # в начало строки, где находится swap, и перезагрузите компьютер.

ИЛИ ЖЕ

Попробуйте из командной строки закомментировать запись подкачки в /etc/fstabфайле,

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

Я получаю это, когда набираюgksu gedit /etc/fstab # /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> /host/ubuntu/disks/root.disk / ext4 loop,errors=remount-ro 0 1 /host/ubuntu/disks/swap.disk none swap loop,sw 0 0
Алекс Ли

1
Итак, делай, что он говорит. Закомментируйте первую строку, которая относится к «своп». : P
cHao

14

Просто удалите запись (или закомментируйте ее, используя # перед строкой) из fstab и перезагрузите компьютер. Ищите строку со словом «своп» в нем.

sudo nano /etc/fstab

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

1
Я отредактировал свой пост.
mdalacu

11

Неправильно .. если systemd найдет SWAP-раздел на любом диске, он все равно его автоматически смонтирует. Странно, что никто не упомянул systemd. В любом случае, решение довольно простое; Чтобы навсегда отключить своп, необходимо:

  1. своп -а
  2. отредактируйте / etc / fstab и прокомментируйте все записи подкачки, если они есть.
  3. run: sudo systemctl mask dev-sdXX.swap (где XX - раздел подкачки. Также полезно сделать это для всех возможных разделов, чтобы при наличии раздела подкачки на любом другом диске он не был подключен)

Мир вне.


№ 3 на победу!
oneklc
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.