swap 공간을 만드는 것에 대한 질문
리눅스 관련 문제를 풀다가 의문이 생겨서 이렇게 질문합니다.
# mkswap -c /swap 8192 <-- /swap이라는 이름으로 8kb의 스왑공간을 만든다.
라고 나와있는데, 옳은 내용아닌가요?
man page를 찾아보니
mkswap 명령은 지정한 특정 장치나, 파일을 리눅스용 스왑 영역으로 지정한다.
장치이름 인자로 사용될 수 있는 장치이름은 다음과 같다.
/dev/hda[1-8]
/dev/hdb[1-8]
/dev/sda[1-8]
/dev/sdb[1-8]
블럭크기 인자는 파일 시스템의 원하는 블럭 단위의 크기이다. 이 인자가 사용되지 않으면, 자동으로 계산된다. 블럭크기는 해당 시스템의 CPU에서 처리할 수 있는 page 크기에 따라 정해진다. MINCOUNT..MAXCOUNT 범위만의 블럭크기가 지정될 수 있다. 만약에 블럭 갯수가 MAXCOUNT를 초가했을 경우에는, MAXCOUNT까지만 사용되고, 나머지는 짤리고, 경고 메시지를 보여준다.
MINCOUNT와 MAXCOUNT 값은 다음과 같이 계산된다.
MINCOUNT = 10 * PAGE_SIZE / 1024
MAXCOUNT = (PAGE_SIZE - 10) * 8 * PAGE_SIZE / 1024
예를 들어 4KB page 처리를 할 수 있는 CPU에서는 다음과 같이 계산된다:
MINCOUNT = 10 * 4096 / 1024 = 40
MAXCOUNT = (4096 - 10) * 8 * 4096 / 1024 = 130752
각 블럭이 1KB 일때, 윗 예제의 스왑 영역은 40KB에서 127.6875MB 사이의 아무 크기나 사용할 수 있다.
만약 page 크기를 모른다면, "cat /proc/cpuinfo" 명령으로 알아 볼 수 있다.
MAXCOUNT의 계산을 할 때, 각 page의 크기에서 10바이트를 빼는 이유는 스왑 영역을 알리는 기호인 "SWAP-SPACE"라는 10 문자가 각 page에서 쓰이기 때문이다.
스왑 파일을 설정하기 위해서는 먼저 그 파일을 만들어야 한다. 스왑 파일의 사용은 일반적으로 다음과 같은 과정으로 처리된다.
# dd if=/dev/zero of=swapfile bs=1024 count=8192
# mkswap swapfile 8192
# sync
# swapon swapfile
스왑 파일로 사용할 파일은 어떠한 공백이 있어서도 안된다는 것을 주의하라. (그래서, cp(1) 명령으로 스왑 파일을 만들지 말기를)
라고 나와있는데 제가 제시한 예제와 틀린 이유를 잘모르겠군요.
글쎄요. mkswap에서 -c옵션은 Check만 하는 옵션입니다. 실제적
글쎄요. mkswap에서 -c옵션은 Check만 하는 옵션입니다. 실제적으로 swap공간을
만들지는 않고 만들어질 수 있는지를 확인하는 절차인거죠.
실제 만들때는 man page에 나와있는 형태로 하나의 파티션을 통채로 잡아서 사용하거나
임의의 파일을 만들어서 사용하게 할 수 있는거죠.
------------------------------
좋은 하루 되세요.
댓글 달기