스왑을 영구적으로 끄려면 어떻게해야합니까?


64

스왑은 시스템을 느리게 만들고 끄면 모든 것이 더 부드러워집니다. 3.5GB의 RAM이 있습니다.

sudo swapoff -a터미널 에 입력하여 스왑을 끄는 방법을 알고 있지만 재부팅 후 스왑이 다시 켜지 기 때문에 현재 세션에만 해당됩니다. 스왑을 영구적으로 끄는 방법이 있습니까?


2
AFAIK 스왑은 최대 절전 모드에 사용됩니다. 그냥 말하세요
DanMan

1
예, 그러나 여전히 사용할 수 있습니다. 시스템이 최대 절전 모드로 전환 될 때 스왑 파티션을 마운트하고 다시 올 때 마운트 해제하는 스크립트가 있습니다. 그동안 스왑 파일을 활성화 할 필요는 없습니다.
animaletdesequia

간단히 말해 후 swapoff -a를 /etc/rc.local에와 ... 그것에 대해 잊어)
user264467

1
@ user264467 : 매번 재부팅 할 때마다 스왑을 비활성화하는 것은 매우 반 직관적이며 영구적으로 비활성화하는 것이 훨씬 깨끗합니다.
karatedog

답변:


119

더 안전한 접근법을 제안해도 될까요? 스왑이 언제 충돌에서 벗어날 수 있는지 알 수 없습니다. 스와핑은 컴퓨터 속도를 늦추지 만 모든 RAM을 차지하는 프로그램을 사용하는 경우 스왑 기능을 사용하면 하드 재부팅에서 벗어날 수 있습니다. 컴퓨터가 스와핑을 시작하면 문제가되는 응용 프로그램을 발견하고 종료 할 수 있습니다.

따라서 스왑을 모두 비활성화하는 대신 OS 스왑 거의 발생하지 않도록하십시오 . 이는의 vm.swappiness설정에 의해 제어됩니다 /etc/sysctl.conf. 우분투의 기본 설정은 60대부분의 상황에서 너무 많은 것을 올바르게 기억하고 RAM을 계속 사용할 수있는 동안에도 스왑을 시작하게하는 것입니다. 이 값을 줄이면 비상시에만 스왑 안전 라인을 사용하면서 안전 스왑 라인을 유지할 수 있습니다. 따라서 파일을여십시오 :

sudo nano /etc/sysctl.conf

그리고이 줄을 추가하십시오 :

vm.swappiness=10

그래도 여전히 너무 많으면 10을 1로 변경하십시오. 이제 다시 시작한 후에는 반드시 필요할 때만 교환 할 수 있으며 잊어 버릴 수 있습니다.


나는 스왑 파인 변경을 좋아하고 몇 년이 지나지 않았습니다. 알림 주셔서 감사합니다. sudo upvote turdon!
Darth Egregious

16
'safer approach'인수에 추가하기 만하면됩니다. 스왑이없고 시스템 메모리가 부족하면 Linux OOM (Out Of Memory) 킬러가 호출됩니다. 이렇게하면 'badness'점수를 기준으로 프로세스를 선택한 다음 응용 프로그램이 변경 사항을 저장하거나 정리할 수있는 기회없이 프로세스를 종료 (종료, 종료)합니다. 따라서 스왑을 끄고 기억, 당신은 OOM 킬러의 눈에 중요한 프로세스 점수가 좋지 않으면 작업 손실의 위험을 잘 실행합니다. 따라서 메모리가 부족 하지 않을 것으로 확신 하는 경우에만 스왑을 해제해야합니다 .
Reid

5
@Reid는 스왑 공간이 부족한 경우에도 똑같은 일이 발생한다는 점을 지적 할 가치가 있습니다.
o0 '.

11
이것은 실제로 질문에 대답하지 않습니다. 스왑을 모두 비활성화하면 16GB 또는 32GB RAM이 장착 된 시스템에서 많은 의미가 있습니다. 메모리를 많이 사용하는 응용 프로그램의 경우 몇 GB의 스왑이 더 이상 효과가 없지만 대량의 스왑 (예 : 20GB)은 많은 하드 드라이브 / SSD 공간을 차지합니다. 또한 32GB의 RAM으로 동면하는 것은 재미없습니다 .
jmiserez

7
일부 설정의 경우 실제 RAM이 부족하고 스와핑을 시작하자마자 시스템이 "suding mud"를 시작하고 사용할 수 없게됩니다. 예, 이론 상으로는 가해자를 사살 할 수 있지만 UI에서 포커스를 변경하는 데 20 분 이상 걸리고 SSH를 통해 비밀번호 프롬프트를 얻는 데 더 오랜 시간이 걸리면 OOMing이 최상의 옵션이됩니다 ( 다시 부팅 한 다음 문제가 발생하여 해결되었습니다.
BCS

46

swap을 참조하는 / etc / fstab에서 행을 찾아서 주석 처리하십시오. 광산은 다음과 같습니다.

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

스왑이있는 줄의 시작 부분에 #을 추가하고 컴퓨터를 재부팅하십시오.

또는

/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
Alex Li

1
그래서, 그가 말하고있는 것을하십시오. "스왑"을 나타내는 첫 번째 줄을 주석으로 처리하십시오. : P
cHao

13

fstab에서 항목을 삭제하거나 줄 앞에 #을 사용하여 주석을 달고 재부팅하십시오. "swap"이라는 단어가있는 줄을 찾으십시오.

sudo nano /etc/fstab

10
이것도 효과가 있지만 변경 사항을 되돌리려는 경우를 대비하여 줄을 완전히 제거하는 대신 주석 처리하는 것이 좋습니다.
animaletdesequia

1
게시물을 수정했습니다.
mdalacu

11

잘못되었습니다. systemd가 드라이브에서 SWAP 파티션을 찾으면 어쨌든 자동 마운트됩니다. 아무도 systemd를 언급하지 않은 것이 이상합니다. 해결책은 어쨌든 매우 간단합니다. 스왑을 영구적으로 비활성화하려면 다음을 수행해야합니다.

  1. 스왑 오프 -a
  2. / etc / fstab을 편집하고 스왑 항목이 있으면 주석 처리하십시오.
  3. 다음을 실행하십시오. sudo systemctl mask dev-sdXX.swap (여기서 XX는 스왑 파티션입니다. 다른 드라이브에 스왑 파티션이 있으면 마운트되지 않도록 가능한 모든 파티션에 대해 수행하는 것도 유용합니다)

평화.


승리를위한 3 번 !!
oneklc
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.