Linux에서 스왑을 비활성화하는 가장 좋은 방법


53

사용자 정의 컴파일 된 3.18.9 커널을 실행 중이며 시스템에서 스왑을 비활성화하는 가장 좋은 방법이 궁금합니다. 차이가 나는 경우에도 init을 사용합니다.

/etc/fstab부팅시 스왑이 작동 / 마운팅되지 않도록 스왑 라인을 주석 처리하거나 제거하는 것으로 충분 합니까, 또는 커널 Support for paging of anonymous memory (swap)이 활성화되지 않았는지 100 % 확신 하지 않고 커널을 다시 컴파일해야 합니까?

암호화 된 파티션을 실행하고 하드 디스크에 실수로 누출되는 것을 방지하려고합니다. 내 시스템 사양도 스왑이없는 환경에서 살아남을 수있을만큼 훌륭합니다.


스왑이 암호화되지 않은 이유는 무엇입니까?
Michael Hampton

@ MichaelHampton 나는 결국 일어날 일을 깨달을 때까지 시점에서 필요를 보지 못했습니다. 또한 내 시스템이 스왑이 사용 된 시점에 도달하지 않으므로 자유롭게 제거 할 수 있다고 생각합니다.
user283167

그런 다음 커널에서 기능을 제거했습니다. 그렇지 않으면 누군가 USB 스틱을 꽂고 다시 교체 할 수 있습니다.
ott--

@ott swapon / swapoff 실행 파일을 사용하기 위해 수퍼 유저 액세스가 필요하지 않습니까? 경우에 따라 다시 비활성화 할 수 있지만 권한이없는 사용자가 스왑 파일을 만들 수 있는지 확실하지 않습니다.
user283167

실제로, 그는 수퍼 유저 액세스가 필요합니다. 그러나 당신은 당신의 서버를 연중 무휴로보고 있습니까?
ott--

답변:


76
  1. 로 구성된 스왑 장치 및 파일을 식별하십시오 cat /proc/swaps.
  2. 로 모든 스왑 장치 및 파일을 끕니다 swapoff -a.
  3. 에서 찾은 일치하는 참조를 제거하십시오 /etc/fstab.
  4. 선택 사항 : 1 단계에서 찾은 스왑 장치 또는 파일을 제거하여 재사용을 방지하십시오. 민감한 정보 유출에 대한 우려 때문에 일종의 안전한 와이프 수행을 고려할 수 있습니다.

남자 교체


일부 시스템에서 당신은 또한 다시 만들어야 initrd으로 예를 들어, 아카이브, dracut --regenerate-all --force또는 mkinitrd, 또는 시스템이 부팅되지 않습니다. 덕분에 JO 아호카를로스 ERalt.os.linux.suse.
Ant_222

10

스와핑을 사용하지 않으려는 경우 (참고 : 실제 RAM이 충분하다고 확신하는 경우에도 권장 되지 않음) 다음 단계를 수행하십시오.

  1. run swapoff -a: 이것은 즉시 스왑을 비활성화합니다
  2. 스왑 항목을 제거하십시오 /etc/fstab
  3. reboot시스템. 스왑이 사라지면 좋습니다. 어떤 이유로 든 여전히 존재하는 경우 스왑 파티션을 제거해야합니다. 반복은 그 후, 사용, 1 단계와 2 단계 및 fdisk또는 parted제 (사용되지 않은) 스왑 파티션을 제거 할 수 있습니다. 여기에 큰 관심을 사용하여 잘못된 파티션을 제거하면 비참한 영향을 미칠 것입니다!
  4. reboot

1
RAM이 충분하더라도 스왑을 비활성화하지 않는 이유는 무엇입니까?
Rolf

1
Linux는 스왑 파티션을 사전에 사용하여 캐싱을위한 추가 메모리를 확보하기 때문에. 이것은 성능을 향상시킬 수 있습니다. 어쨌든 조정 가능한 매개 변수입니다. 자세한 내용은 여기 를 참조 하십시오 . 또한 스왑이없는 시스템에서 메모리 할당이 급격히 증가하면 커널 OOM 킬러가 트리거 될 수 있습니다.
shodanshok

1
고마워요, 이것은 합리적입니다. 그럼에도 불구하고, "충분한 램"(예 : 8 또는 16GB)이 가득 찬 경우에는 메모리 누수 또는 기타 런 어웨이 문제가있는 응용 프로그램, DDOS 공격 등의 예외 상황 일 가능성이 있다고 생각했습니다. 어쨌든 스왑조차도 결국 압도 당할 것입니다. 어쩌면 나는 매우 설득력있는 주장을하지는 않지만 가벼운 데스크탑 사용에서는 발생하지 않아야합니다.
Rolf

9

예전에는 스왑 파티션 만 /etc/fstab자동으로 사용되었지만 systemd는 약간 변경되었을 수 있습니다. 다음을 수행해야 할 수도 있습니다.

systemctl mask dev-sdXX.swap

(sdXX 변경) 실제 포맷 된 스왑 파티션으로 바꾸십시오. 스왑 파티션을 사용하지 않으려는 이유는 무엇입니까?

systemd를 사용하지 않는 경우 스왑 항목을 제거하는 /etc/fstab것으로 충분합니다 (내가 아는 한).

실제 해결책은 스왑 파티션을 제거하는 것이므로 실수로 사용되지 않습니다. 스왑 파티션을 제거하려면 fdisk를 사용하여 파티션 유형을 스왑에서 다른 것으로 변경 한 다음 파티션을 다시 포맷하거나 사용하십시오 dd if=/dev/zero of=/dev/old-swap-partition.

systemd로 스왑 파티션 사용 설정을 참조하십시오 .


나는 여전히 openRC를 통해 init을 사용하고 있으며 의도적으로 설치에서 시스템을 제거했습니다. 그리고 스왑 질문에 관해서는 cryptsetup / luks를 사용하여 ext4로 포맷 된 암호화 된 파일을 파일 시스템 위에 마운트하기로 결정할 때까지 정기적으로 설치하고있었습니다. init을 사용할 때 스왑을 비활성화하는 방법을 너무 친절하게 생각할 수 있다면 감사하겠습니다.
user283167

0

Raspbian 에서 / etc / fstab 파일을 볼 때

a swapfile is not a swap partition, no line here
  use dphys-swapfile swap[on|off] for that

그러나 사전 구성된 스왑 파일을 완전히 비활성화하려면 완벽하게 작동합니다.

swapoff -a
chmod -x /etc/init.d/dphys-swapfile
reboot

이 솔루션은 나에게 약간 빠르고 더러워 보이지만 간단히 다음과 같이 다시 활성화 할 수 있습니다.

chmod +x /etc/init.d/dphys-swapfile
reboot
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.