1. SWAP 의 필요성
서버는 프로세스 폭주, 서비스 어택(service attack)의 거절, 또는 Slashdot effect 등의 예기치 않은 스트레스까지도 처리하기 때문에, 적당한 고속의 스왑(swap)을 가질 필요가 있다. 이것은 모든 물리적인 메모리가 소진되었을 때, 서버가 중지되고 어쩌면 깨질지도 모를 상황을 방지하기 위함이다.
(1) 프로세스 전체를 스왑 아웃할 필요가 있을 경우 그 프로세스의 모든 페이지가 디스크에 저장되어야 한다.
(2) 프로세스의 각 페이지가 주 메모리에서 제거될 필요가 있을 경우이며, 이때 제거될 내용을 저장할 장소가 필요한데, 이때 스왑을 사용한다.
2. SWAP 용어
가. swap / 스왑
메모리에서 페이지 혹은 세그먼트 단위의 데이터를 교환하는 것.
스와핑(swapping)은 컴퓨터가 메모리보다 큰 프로그램을 실행시키거나 메모리보다 큰 데이터 파일을 다룰 수 있게 하는 유용한 기술이다. 가상기억체제(Virtual Memory System)에서는 페이징(paging) 기법을 이용해서 스와핑을 수행한다.
UNIX 시스템에서 스와핑은 프로세스 전체를 메모리로부터 스왑 공간(swap space)으로 이동하거나 스왑 공간으로부터 메모리로 로드시키는 것을 가리킨다.
나. swap space (swap file) / 스왑 공간
가상기억체제를 지원하는 운영체제에서 컴퓨터의 실제 메모리의 확장으로 사용되는 하드디스크 상의 한 공간이다. 스왑 공간을 가상 공간, 논리 공간 또는 가상 메모리라고도 한다.
컴퓨터 운영체계는 실제보다 더 많은 량의 RAM을 가지고 있는 것처럼 동작할 수 있다. 새로운 프로그램이 RAM으로 로드될 수 있는 공간을 마련해 주기 위해서, RAM에 로드되어 있는 프로그램들 중에서 하나가 선택되어 하드디스크의 스왑 공간으로 교체된다.
프로그램이나 데이터가 메모리에서 하드디스크로 교체되는 것을 스와핑이라고 한다. 한번에 이동하는 프로그램이나 데이터의 단위를 "페이지"라고 부르며, 스왑핑 대신에 "페이징"이라는 용어를 사용하기도 한다.
윈도우 계열의 운영체제에서는 기본적으로 일정 크기의 스왑 공간을 제공하는데, 이를 스왑 파일(swap file)이라 부른다. 유닉스 기반의 운영체계들은 사용자나 시스템 관리자가 스왑 공간을 스왑 파티션(swap partition)으로 설정한다.
다. paging / 페이징
가상기억체제(virtual memory system)에서 프로그램과 데이터를 고정 크기의 페이지 단위로 가상기억창치에서 메인 메모리로 로드하고 주소를 변환하는 작업을 페이징이라 한다.
가상기억체제에서 페이지 폴트(page fault)가 발생한 경우, 가상기억공간(swap space)으로부터 한 페이지를 메인 메모리로 로드하는 것을 페이지-인(page-in)이라 하고, 메인 메모리에서 오랜 시간 동안 사용될 가능성이 가장 적은 페이지를 선택해서 가상기억공간에 저장시켜서 메인 메모리의 가용 공간을 확보하는 작업을 페이지 아웃(page out)이라 한다.
페이지-인(page-in)과 페이지 아웃(page out)을 합하여 페이징이라 한다.
라. page fault / 페이지 폴트
가상기억체제(virtual memory system)를 사용하는 컴퓨터 시스템에서 프로그램이 실행될 때, 프로그램에서 접근하려고 하는 페이지가 메인 메모리에 없을 경우 페이지 폴트가 발생했다고 한다.
페이지 폴트가 발생한 경우, 접근하려는 페이지는 스왑 공간(swap space, 또는 swap file)에 존재하고 있는데, 이것을 스와핑 장치 또는 가상기억장치라고 한다. 스왑 공간은 디스크 장치의 한 파티션(혹은 파일)으로 구성되거나 RAM으로 구성될 수 있다.
페이지 폴트가 발생하면 운영체제는 스왑 공간으로부터 필요한 페이지를 메인 메모리로 로드시켜야 한다.
마. virtual memory / 가상기억
컴퓨터 시스템의 실제 메모리(physical memory) 공간보다 큰 용량의 메모리 공간을 응용 프로그램에서 사용할 수 있게 하는 메모리 관리 방법이다.
가상기억체제는 프로그래머에게 실제 메모리보다 큰 프로그램을 작성할 수 있게 한다. 컴퓨팅 시스템은 프로그래머가 사용하는 가상의 메모리 공간 주소를 실제의 물리적 메모리 공간으로 매핑하는 일을 수행함으로써, 프로그래머는 실제 메모리 공간을 의식하지 않고 큰 용량의 가상 메모리 공간(논리적인 공간)에서 프로그램을 작성할 수 있게 한다.
가상 메모리를 지원하는 시스템에서 프로그램은 메인 메모리 용량보다 큰 주소 공간을 사용하게 되므로 프로그램에서 사용되는 모든 주소 공간의 정보를 메인 메모리에 로드할 수 없게 된다. 따라서 프로그램의 실행에 필요한 부분만을 메인 메모리에 로드시키고 나머지 부분은 스왑 공간(swap space)이라고 부르는 보조 기억장치의 한 영역에 저장한다.
메인 메모리와 가상 메모리(swap space)간의 프로그램 또는 데이터의 이동 단위를 "페이지"라고 부르는데, 그 크기는 보통 1 KB에서 수 MB 까지 여러 가지가 있다. 가상 메모리를 쓰면 실제로 소요되는 물리적인 저장공간의 크기를 절약하고, 전체적인 시스템 처리속도도 빠르게 할 수 있다.
3. SWAP 명령어
swap 명령은 swap space의 사용량을 나타내거나, 디스크 상에 swap area들을 추가 및 삭제하는데 사용한다.
[ Swap Space의 출력 ]
# swap -l
swapfile dev swaplo blocks free
/dev/dsk/c0t0d0s1 32,1 16 4097312 4028944
[ Swap Space의 추가 ]
# mkfile 100m /export/data/swapfile
/export/data/swapfile 104857600 bytes
# swap -a /export/data/swapfile
# swap -l
swapfile dev swaplo blocks free
/dev/dsk/c0t0d0s1 32,1 16 4097312 4028928
/export/data/swapfile - 16 204784 204784
swap의 영역으로 사용할 것은 'mkfile'을 사용한다. swap의 추가는 -a 옵션을 사용하고, 다시 -l 옵션을 사용하여 현재 swap의 목록을 확인한다.
[ Swap space의 삭제 ]
swap space를 삭제 하기 위해서는 -d 옵션을 사용한다.
# swap -d /export/data/swapfile
# swap -l
swapfile dev swaplo blocks free
/dev/dsk/c0t0d0s1 32,1 16 4097312 4028944
# rm /export/data/swapfile
[Swap 연속사용]
새로 추가한 swap file이 시스템을 rebooting 후에도 사용되게 하려면 아래와 같은
내용을 /etc/vfstab에 추가 한다.
# vi /etc/vfstab
/export/data/swapfile - - swap - no -
'solaris' 카테고리의 다른 글
solaris9 + tomcat6 + apache2.2 (0) | 2008.01.08 |
---|---|
솔라리스9 + sendmail + 버클리db + qpopper 설치 (0) | 2008.01.02 |
솔라리스 10의 주요 기능 (1) | 2007.08.27 |
솔라리스 SSHD (0) | 2007.08.22 |
Solaris 환경이해 (0) | 2007.08.08 |