Jak wyłączyć wymianę?

83

Mam niektóre wrażliwe dane w pamięci RAM, których wolę nie być na dysku. Jak mogę wyłączyć swap? Mam więcej niż wystarczająco barana. Jeśli ram stanie się zbyt wysoki, nie mam problemów z zakończeniem procesów. Jak wyłączyć wymianę?

Uwaga: nie mam partycji wymiany, która działa na maszynie wirtualnej (VMWare)


źródło
2
Nawet jeśli masz dużo pamięci RAM, nie jest najlepszym pomysłem, aby całkowicie działać bez wymiany (zobacz na przykład alexonlinux.com/swap-vs-no-swap ). W zależności od wymagań możesz rozważyć umieszczenie partycji wymiany na zabezpieczonym urządzeniu dm-crypt, aby wszystko, co do niej zapisano, zostało zaszyfrowane. W takim przypadku musisz upewnić się, że zamiana jest włączona po udostępnieniu zaszyfrowanych woluminów i wyłączeniu przed wyłączeniem mapowania urządzeń, oczywiście (myślę, że jest to domyślne w Ubuntu, ale nie jestem pewien). Wystarczy wyszukać w sieci hasło „szyfrowana zamiana”, aby znaleźć liczne przewodniki.
soulsource
1
Apropos: askubuntu.com/questions/248158/… Nie potrzebujesz wymiany, dopóki jej nie potrzebujesz. A potem naprawdę tego potrzebujesz.
Co z zamianą szyfrów? / dev / mapper / cryptswap1

Odpowiedzi:

121

Za pomocą

sudo swapoff -a  

jest zwykłym sposobem wyłączania zamiany, za pomocą swapon -apolecenia używanego do ponownego włączenia wymiany . Zobacz man swapoff więcej informacji na temat wyłączania zamiany dla jawnych urządzeń.

ubfan1
źródło
7
Wydaje się, że to nie utrzymuje się po ponownym uruchomieniu?
ebyrob
19
Trwałe zmiany zamiany są zwykle wprowadzane w / etc / fstab.
ubfan1,
Czy po prostu skopiujemy to do / etc / fstab
Max
6
Nie. Zamiast tego komentujesz linię wymiany w / etc / fstab.
Torsten Bronger
Możesz przeczytać w innych odpowiedziach, jak to skomentować.
Carolus
25

Możesz wyłączyć swap po ponownym uruchomieniu komputera, komentując (dodaj # przed linią) pozycję wymiany w /etc/fstabpliku. Zapobiegnie to automatycznemu montowaniu partycji wymiany po ponownym uruchomieniu. Aby to zrobić za pomocą jednego polecenia:

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

lub po prostu:

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

Teraz Twój wpis wymiany /etc/fstabbędzie wyglądał podobnie do tego:

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

Z własnymi konkretnymi cyframi i małymi literami zamiast liter „x”.

Avinash Raj
źródło
2
Dlaczego cytowany UUID ma konkretne cyfry? Czy powinny być identyczne dla wszystkich UUID? Identyfikatory UUID mojej partycji nie są zbieżne z określonymi przez Ciebie cyframi.
Ruslan
Twoje komendy sed nie działają, jeśli pola są oddzielone tabulatorami (a nie spacjami). Lepiej jest napisać jako sed -ri '/\sswap\s/s/^#?/#/' /etc/fstabPS: Dodałem również, #?aby zapobiec dodatkowym zmianom w / etc / fstab, gdy linia jest już wyłączona.
Alek_A
4

Jeśli martwisz się zawartością wymiany, zawsze możesz ją wyłączyć zgodnie z normalnym sposobem, sudo swapoff -aa następnie wypełnić urządzenie wymiany zerami lub losowymi danymi za pomocą dd.

Najpierw użyj zawartości fstab, aby znaleźć plik wymiany lub urządzenie ( less /etc/fstab)

Po zlokalizowaniu i podwójnym i potrójnym sprawdzeniu lokalizacji na powiedzmy sda5 lub /swapfile (partycje wymiany zostały domyślnie zastąpione plikiem wymiany w 17.04 i późniejszych wersjach ) .

W przypadku partycji wymiany lub napędu: (poprzedza / dev) wydaj polecenie „niszczarka dysku” (nie należy jej lekceważyć)

sudo dd if=/dev/zero of=swapzastępując wyraz swap urządzeniem wymiany lub plikiem, w którym się znajdujesz/etc/fstab

wysadzić go pełnym zerami lub

sudo dd if=/dev/random of=swapponownie zastępując słowo -swap z urządzeniem wymiany lub plik, który znajduje się w/etc/fstab

wysadzić w powietrze pełne losowych danych.

W przypadku pliku wymiany (poprzedzonego tylko ścieżką): możesz po prostu usunąć plik za pomocąrm /path/to/swapfile

Następnym razem, gdy włączysz zamień na

swapon -a

System chętnie skorzysta z niego ponownie. Jeśli masz dużo pamięci RAM, możesz w ogóle nie potrzebować wymiany. Wydaj polecenie

free gdy system jest pod dużym obciążeniem i sprawdź, ile jest w użyciu, aby dokonać tego ustalenia.

Jeśli stwierdzisz, że na stałe nie potrzebujesz zamiany (do hibernacji lub czegokolwiek innego), możesz po prostu skomentować ten wiersz w fstab, jak sugerowano tutaj

wolny

Starszy Geek
źródło
3

Może to kiepskie rozwiązanie, ale często go używałem. Możesz po prostu pisać

sudo -s
crontab -e

I dodaj

@reboot sudo swapoff -a  

Tak więc zostanie automatycznie wyłączony podczas rozruchu.

użytkownik10635
źródło
4
Mam nadzieję, że jest to oczywiste, że jest to bardzo zła metoda. Po co tworzyć zadanie uruchamiania w celu wyłączenia innej opcji, skoro istnieje inny plik, który można edytować, aby zatrzymać jego włączenie
underscore_d
Może nie tak estetycznie, ale nie ma w tym nic złego. Jeśli jesteś już bardzo przyzwyczajony do używania crontab, to rozwiązanie potoczy się trochę łatwiej i będzie sensowniejsze niż zwykłe kopiowanie na ślepo tego, co inny użytkownik na SE powiedział / a do / etc / fstab. I nadal będziesz pamiętać, jak to zrobić na nowym komputerze bez konieczności ponownego uruchamiania google. Zdarza się, że ledwo wiem, co to jest crontab i i tak znam się na partycjach dyskowych, ale logika jest nadal aktualna.
Nicholas Pipitone
To może być lepsze rozwiązanie. Ponieważ sugestie / etc / fstab działają tylko dla partycji wymiany. To rozwiązanie dotyczy konfiguracji linuksowych niezależnie od tego, czy używają partycji czy pliku wymiany.
Nicholas Pipitone
2
sudo swapoff -a

Powyższe polecenie wyłącza zamianę tylko dla bieżącej sesji , musisz skomentować partycję wymiany w pliku / etc / fstab . Aby to zrobić, wystarczy dodać „#” (wiersz komentarza) na początku wiersza wymiany. Kroki są następujące:

  1. Otwórz plik fstab, wpisz sudo gedit /etc/fstabterminal.

Zawartość pliku wyglądałaby następująco:

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. Wystarczy dodać skrót (#) na początku linii podziału partycji, aby linia wyglądała następująco:

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

  1. Uruchom ponownie komputer
Sohail xIN3N
źródło
0

Idź do terminala i uruchom polecenie: gnome-disks. Nie jest zainstalowany we wszystkich dystrybucjach. Jeśli tak, postępuj zgodnie z wydrukowanymi instrukcjami, aby zainstalować i spróbuj ponownie. Poszukaj urządzenia ze słowem „zamień” w lewym okienku. Zwykle ma rozmiar taki sam jak pamięć fizyczna. Kliknij kwadratowy przycisk, aby go wyłączyć. Uwierzytelnij tę zmianę za pomocą hasła roota.

Zrzut ekranu: http://imgur.com/Og6igqb

W aplikacji Monitor systemu (gnome-system-monitor) zobaczysz, że raportuje obszar wymiany jako „niedostępny”. Obszar wymiany jest wyłączony, ale nie usunięty. Możesz łatwo włączyć go ponownie w przyszłości. Usunięcie przestrzeni wymiany nie spowodowało szkody dla mojego systemu, ale stworzysz więcej pracy dla siebie, jeśli zdecydujesz, że chcesz ją przywrócić (hibernację) w przyszłości.

edycja: aby zapobiec montowaniu podczas uruchamiania, należy przejść do „Edytuj opcje montowania ...” na dyskach gnome i odznaczyć „Montuj podczas uruchamiania”.

użytkownik170544
źródło
1
Czy uważasz, że to odpowiada na obawy użytkowników związane z posiadaniem poufnych danych na partycji wymiany? Czy możesz nam powiedzieć dlaczego?
Starszy Geek,
1
Głównym celem użytkownika było pytanie, jak wyłączyć swap. Jeśli masz wrażliwe dane, powinieneś idealnie korzystać z szyfrowania przed uruchomieniem.
user170544
1
Z szacunkiem się nie zgadzam. Kiedy czytam pytanie, pierwsze zdanie, na które natrafiam, brzmi: „Mam kilka poufnych danych w pamięci RAM, których wolę nie być na dysku”. Myślę, że to była jego główna troska i dlatego zaczął od tego. Niezależnie od tego uważam, że w swojej odpowiedzi opisałem każdy aspekt jego pytania. Uznaj to za pomocny przykład.
Starszy Geek,
0

Zamień na defaultsz sw,noautow wierszu, który składa się z pozycji wymiany w pliku /etc/fstab:

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

(Ścieżka /dev/mapper/centos-swapjest prawdopodobnie inna dla Ciebie).

Teraz sprawdź dane wyjściowe po ponownym uruchomieniu, zamiana nigdy nie zostanie zamontowana:

$ free -m
              total        used        free      shared  buff/cache   available
Mem:           3791         100        3408           8         282        3483
**Swap:             0           0           0**
askb
źródło