Linux를 설치할 때 설치 프로세스는 Linux 자체의 파티션과 함께 스왑 파티션을 하드 디스크에 추가할 것입니다. 하지만 이 스왑 파티션은 무엇에 사용되며 실제로 필요한가요?
스왑이란 무엇입니까?
멀티태스킹 운영 체제에 물리적 메모리가 부족하면 새 프로세스를 시작하거나 기존 프로세스에 더 많은 메모리를 할당할 수 없습니다. 이 문제를 해결하기 위해 로컬 저장소(종종 하드 드라이브)의 특별한 공간 블록이 현재 실행되지 않는 프로세스를 위한 임시 보관 영역으로 사용됩니다. OS는 비활성 프로세스를 메모리에서 하드 디스크로 "교환"합니다. 이것은 새로운 작업을 위한 메모리를 확보합니다. 비활성 프로세스가 다시 활성화되면 로컬 스토리지에서 메모리로 다시 스왑됩니다. 이 절차를 스와핑이라고 합니다.
스왑 공간이 정말 필요한가요?
스왑 공간이 기술적으로 필요합니까? 아니요. Linux는 그것 없이도 작동할 수 있으며 임베디드 솔루션과 같은 일부 상황에서는 Linux를 스왑 없이 실행할 수 있습니다. OS가 메모리가 충분하지 않은 상황에 빠지면 패닉 상태가 되어 중지됩니다. 물리적 RAM이 충분하면 컴퓨터는 문제 없이 실행됩니다.
스왑 공간이 실제로 필요합니까? 네. 스와핑은 컴퓨터의 속도를 늦추고(하드 디스크에 대한 읽기 및 쓰기는 RAM 액세스보다 훨씬 느리기 때문에) 보드에 물리적 메모리를 최대한 많이 탑재하는 것이 스와핑을 피하는 가장 좋은 솔루션이지만 스와핑이 바람직한 합법적인 상황이 있습니다. 예를 들어, 시스템 부팅 중에 실행(시스템 메모리를 소비)하지만 매우 긴 시간 동안 효과적으로 절전 모드로 전환되는 프로세스가 있을 수 있습니다. 또는 할당되고 기록된 후 다시는 사용되지 않는 메모리입니다. 이러한 상황에서 스와핑 알고리즘은 이 메모리를 하드 디스크로 마이그레이션하기 시작하여 귀중한 시스템 메모리를 확보합니다. 이렇게 하면 실제로 항상 최대 RAM 용량을 사용할 수 있으므로 성능이 향상됩니다.
모든 것이 메모리에 상주하기에 충분한 물리적 RAM이 없는 시스템에서는 스왑 공간을 사용하는 것이 필수적입니다!
완전성을 위해 Linux에는 메모리 부족 킬러(OOM)라는 하위 시스템이 있습니다. 이 하위 시스템은 메모리가 부족할 때 커널을 중지하는 대신 리소스를 해제하기 위해 프로세스를 종료하기 시작합니다. 작업을 구성할 수 있습니다.
얼마나 많은 스왑 공간을 할당해야 합니까?
절대적인 규칙은 없으며 하드 디스크 공간이 저렴하기 때문에(기가바이트당 달러) 너무 적은 공간보다 너무 많이 할당하는 것이 좋습니다. 일반적으로 물리적 메모리보다 2~3배 많은 스왑 공간이 있어야 합니다.
스왑 파티션을 확장하지 않고 스왑 추가
기존 스왑 파티션을 변경하지 않고 시스템에 스왑 공간을 추가하는 방법에는 두 가지가 있습니다. 한 가지 방법은 다른 드라이브의 스왑 파티션을 사용하는 것이고 다른 하나는 스왑 파일을 사용하는 것입니다.
다른 하드 드라이브를 사용하려면 "Linux swap"(코드 82) 유형의 파티션을 만든 다음 "mkswap
" 스왑 공간을 준비하는 명령:
mkswap /dev/sdb2
/dev/sdb2
위치 생성한 파티션의 이름입니다. 스왑 공간을 즉시 사용하려면 “swapon
" 명령:
swapon /dev/sdb2
"swapon -s
사용 " 현재 사용 중인 스왑 공간 목록을 가져옵니다. 시스템에 스왑 공간을 영구적으로 추가하려면 /etc/fstab
를 편집해야 합니다. 파일에 다음과 유사한 줄을 추가합니다.
/dev/sdb2 none swap sw 0 0
시스템이 고유 식별자를 사용하여 디스크 이름을 지정하는 경우 blkid
장치의 ID 목록을 가져오는 명령입니다. /etc/fstab
에 스왑 공간을 마운트하는 줄 그러면 다음과 같이 보일 것입니다.
UUID=036da155-1ea1-4392-b8d4-700f65aa1ead none swap sw 0 0
스왑에 파일을 사용하려면 dd
를 사용하여 큰 빈 파일을 만듭니다. ) 스와핑에 사용할 파일 시스템에서. 예를 들어, 1GB 파일을 생성하려면 다음을 입력하십시오.
dd if=/dev/zero of=/store/swapfile bs=1024 count=1048576
/store/swapfile
위치 원하는 파일 시스템의 스왑 파일 경로입니다.
추가 스왑 파티션과 마찬가지로 이제 파일을 mkswap
으로 준비해야 합니다. 그런 다음 swapon
와 함께 사용 . /etc/fstab
에도 추가해야 합니다. 파일. 절차는 위와 동일하지만 /store/swapfile
을 사용해야 합니다. /dev/sdb2
대신 스왑 공간 매개변수로.
교체성
Linux 커널을 조정하여 메모리에서 프로세스를 교체하려고 얼마나 적극적으로 시도해야 하는지 정의할 수 있습니다. 이러한 경향은 swappiness
라는 커널 변수에 의해 제어됩니다. . swappiness
0은 커널이 가능한 한 스왑을 피한다는 것을 의미하고 100은 커널이 스왑 공간을 사용하는 방식에 적극적임을 의미합니다. 많은 Linux 배포판의 기본 설정은 60입니다. 다음 명령을 사용하여 동적으로 숫자를 변경할 수 있습니다.
sudo sysctl vm.swappiness=10
값을 영구적으로 설정하려면 vm.swappiness
를 변경(또는 존재하지 않는 경우 추가)해야 합니다. /etc/sysctl.conf
의 변수 파일.
Linux의 스왑에 대해 궁금한 점이 있으면 알려주세요.
이 기사는 2013년 12월에 처음 게시되었으며 2020년 8월에 업데이트되었습니다.