스왑 공간을 설정하는 방법?


114

Raspberry Pi에는 256MB의 RAM 만 있으므로 스왑 공간 (SD 카드 또는 연결된 USB 저장소)을 사용하고 싶습니다. 어떻게 설정합니까?


10
Pi (및 유사한 장치)의 스왑은 매우 느리게 진행될 수 있으며 실제로 스왑을 광범위하게 사용하면 실제로 시스템이 정지됩니다. 꼼꼼한!
MattJ

1
USB RAM 드라이브 (플래시 또는 SSD는 아니지만 USB 속도로 실행되는 실제 휘발성 램 칩)가 좋은 것이 무엇인지 알고 있습니다. 스왑에 아주 좋습니다.
Piotr Kula

3
@Tibor 문제는 "스왑 공간을 설정하는 방법"입니다. 제 생각에는 올바른 답은 어떻게해야하는지 설명하고 함정에주의를 기울이고 오용에 대해 경고해야합니다. 당신의 대답은하지 않습니다 단지 "가장 인기있는"대답은 당신을 알려줍니다 동안 "에서이 작업을 수행하지 모두"안하는 이유 (거기를 사용하는 적절한 방법이며, 실제로 때문에, 바보 인 것입니다 유용).
Andrew Larsson

1
이 페이지에서 라즈베리 파이와 스왑을 사용하는 것에 대해 약 백만 개의 경고가 있지만 일단 무언가를 빌드 해야하는 경우 피할 수 없습니다.
Archonic

1
@Archonic- +1 . 나는 파일을 컴파일 메모리가 부족할 경우에. 스왑 성이 낮은 작은 스왑 파일 은 현재 상황보다 향상됩니다.
jww

답변:


134

Raspbian은 "표준"스왑 파티션 기반 솔루션 대신 스왑 파일 기반 솔루션 인 dphys-swapfile을 사용 합니다. 스왑 크기를 변경하는 것이 훨씬 쉽습니다.

구성 파일은 다음과 같습니다.

/etc/dphys-swapfile 

내용은 매우 간단합니다. 기본적으로 내 Raspbian에는 100MB의 스왑이 있습니다.

CONF_SWAPSIZE=100

크기를 변경하려면 숫자를 수정하고 dphys-swapfile을 다시 시작해야합니다.

/etc/init.d/dphys-swapfile restart

편집 : Raspbian에서 기본 위치는 / var / swap이며 물론 SD 카드에 있습니다. 나는 그것이 나쁜 생각이라고 생각하므로 / etc / dphys-swapfile은 다음 옵션도 가질 수 있다고 지적하고 싶습니다. CONF_SWAPFILE = / media / btsync / swapfile

나는 단지 그것에 문제가있다, USB 스토리지는 자동 마운트되어 있으므로 잠재적 인 경쟁 (자동 마운트 대 스왑 온)


2
이것이 정답입니다. 다른 답변은 dphys-swapfile을 언급하지 않았습니다.
Kenji Noguchi

1
이 답변을 실제로 올바른 것으로 올렸습니다. 최근에 그 모든 어려운 방법을 배웠으므로, 당신의 대답은 많은 시간을 절약 할 수 있습니다. ;-)
Drachenfels

사용 /var/swap이 왜 나쁜 생각 인지 명확히 할 수 있습니까?
Andrey Portnoy

"시스템 호출이 메모리를 할당 할 수 없습니다"로 인해 실패한 R 패키지 설치 방법 : CONF_SWAPSIZE = 1024를 설정하십시오. 덜 충분합니다.
vertikalist

36

스왑 공간을 아주 간단하게 설정할 수 있습니다. 예를 들어, USB 드라이브가 인 /dev/sdx경우 다음을 사용합니다 (이 경우 루트 여야합니다).

$ mkswap /dev/sdx
$ swapon /dev/sdx

이것은 전체 장치를 사용하므로 장치의 기존 데이터가 모두 손실 될 수 있습니다.

다음 loop과 같이 장치 를 사용하여 스왑 파일을 만들 수도 있습니다 .

$ dd if=/dev/zero of=/path/to/swapfile bs=1M count=1024 # For 1GB swap file
$ mkswap /path/to/swapfile
$ swapon /path/to/swapfile

스왑 파일이 더 이상 필요하지 않은 경우 (예 : USB 드라이브를 꺼내려면)를 사용해야합니다 swapoff <device>. 그렇지 않으면 시스템이 중단 될 수 있습니다.

그래도 조심 해야 합니다 . SD 카드는 읽기 / 쓰기 제한이 제한되어 있으며 수명이 단축됩니다. 외장 하드 드라이브를 사용하는 경우 문제가 없지만 속도가 매우 느립니다.


2
루프백을 추가해야하는 이유 반드시 필요하지 않습니까?
popey 2016 년

당신 말이 맞아요 나는 그것을 반영하기 위해 답을 편집했다.

2
사용자 mkswap가 루트 파티션에서 복사하여 붙여 넣거나 실수로 실행되지 않도록 이것을 변경해야한다고 생각 합니다. sdx좋은 컨벤션 이라고 생각 합니다.
Jivings 2016 년

3
SWAP를 사용하도록 선택한 사용자는 커널 스왑 피스 조정에 관심이있을 수 있습니다 .
earthmeLon

@earthmelon Raspbian Jessie는 기본적으로 swappiness 1을 갖습니다.
kaay

32

전혀하지 마십시오.

Raspberry Pi에서 스왑을 활성화 해서는 안됩니다 .

가능하지만 유용하지 않습니다. 클래스 10 SDHC 카드에서도 너무 느립니다. 또한 SD 카드의 수명이 단축됩니다.

모든 플래시 기반 저장 장치 (SD 카드, SDD, USB 썸 드라이브)에서 많은 플래시 블록 그룹이 지워지는 동안 시스템 전체의 일시 중지가 발생할 수 있습니다.

가능한 예외 :

  • (자기) 하드 드라이브를 연결하는 경우 (USB-SATA 또는 USB-IDE 어댑터 임)
  • ZRAM 또는 이와 유사한 것을 사용하는 경우

3
의심 할 여지없이 USB를 교체하면 키가 매우 빨리 죽을 수 있습니다. SD 카드를 교체하는 것도 최신 (10 등급) SD 카드가 더 잘 지원할 수 있더라도 위험합니다. 더 많은 RAM이 필요한 경우 ZRAM 은 분명히 갈 길입니다
neofutur

1
Windows의 ReadyBoost 기술을 사용하면 누군가가 실제 RAM을 사용하는 USB 드라이브 (또는 eSata, ReadyBoost가 그것을 사용할 수 있는지 확실하지 않지만, raspberry를 사용하지는 않지만 재미있을 것입니다)를 만들 수 있다고 생각할 수 있습니다. 컴퓨터 성능을 향상시킵니다. 필요한 양의 RAM을 지원하는 새로운 마더 보드를 구입하는 것이 더 쉽고 저렴할 것입니다.
Kibbee

33
왜이 답변에 많은 투표가 있습니까? 스왑을 사용해야하는 많은 이유가 있습니다. 며칠 동안 외부 라이브러리에서 스왑 파일을 사용하여 큰 라이브러리를 컴파일했습니다. 죽은 원숭이가 당밀에 떠 다니는 속도는 느리지 만 이것이 전혀하지 않아야한다는 의미는 아닙니다.
Andrew Larsson

10
의미는 있지만 경고는 너무 강력합니다. '왜 안돼'와 '왜'를 찾는 것은 라즈베리 파이의 목적과 정확히 일치합니다. 일회성 라이브러리 컴파일을위한 최대 메모리 요구 사항을 충족시키는 것과 같이 스왑을 위해 외부 드라이브를 사용해야하는 몇 가지 이유도 있습니다. 나를 여기로 데려온 수색. 내가 가장 많이 배운 시간은 내가 사소한 것을 망치고 그 이유를 깨달았을 때입니다. 죄송합니다. 생각보다 도움이되지 않습니다.
Chris Hatton

2
너무 강해 "최고가 아니라", "나쁜, 낭비, 손상 및 쓸모없는"것은 오해의 소지가 있습니다. 모든 것은 사용하면서 마모되며 산소는 유독하며 Raspbian 스왑 파일을 사용합니다. 속도 저하는 일반적으로 충돌보다 낫고 몇 달에 한 번 큰 것을 컴파일 할 수 있습니다. 교환 율을 낮게 설정하면 좋습니다.
kaay

4

Raspbmc는 /etc/init/swap.conf/ swap 파일을 통한 스왑 구성에 사용 합니다. 먼저의 존재 여부를 확인합니다 /home/pi/.enable_swap.

/home/pi/.enable_swap스왑 파일 을 삭제 하면 스왑 파일이 생성되지 않고 touch /home/pi/.enable_swap스왑이 켜져 있고 재부팅 해야하는 경우 파일을 다시 생성하십시오 .


4

Raspberry Pis에는 GigaBit Ethernet이 없지만 이론적 으로 네트워크 장치에서 스왑 공간을 확보하는 것이 가능 합니다. 리눅스 터미널 서버 프로젝트는 Wiki 의이 항목에 따라 서버에서 클라이언트로 제공 할 수 있습니다 .

이미 일부 NFS 마운트를 이미 보유한 누군가가 그 중 하나에서 스왑 파일을 사용하고 루프 마운트를 통해 마운트 한 방법을 보여주는 Foundation 포럼 주제 "Tip : nfs를 통한 스왑"을 발견했습니다 (Linux에서 허용하지 않기 때문에 필요할 수 있음). 직접 사용할 NFS 마운트). 원격 스왑 파일을 감안할 OS가 데이터 보유 손실되지해야한다 무선 링크가 너무 깨지기 쉬운 이럴 것이다 - 나는 단지 유선 이더넷 네트워크에 대한이 생각 것입니다. 또한 스왑을 끄고 완전히 비우기 전에 원격 서버를 종료하지 않아야합니다!


RPi는 Broadcom 칩과 이더넷 컨트롤러 사이의 제한된 대역폭으로 인해 GB 이더넷의 이점을 전혀 얻지 못합니다.
Dmitry Grigoryev

1
... 그리고 USB 칩에 대한 애드온으로서 이더넷 컨트롤러 ! 예, 그러나 네트워킹 하드웨어가 SoC 핵심 장치의 일부인 가상의 RPi 설계를 꿈꿀 수 있습니다 . 8-P
SlySven

이더넷 컨트롤러는 종종 외부 칩이지만 칩 간 버스로서의 USB는 실제로 속도와 전력 소비 모두에 좋지 않습니다.
Dmitry Grigoryev
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.