초기 유닉스 시스템의 구성에서 예측하기 어려운 부분이 RAM이었다.
CPU와 HDD는 일정한 사용량을 예측하여 구성하더라도, 많은 수의 클라이언트들이 서버에 접속하면 프로세스가 발생하면서 RAM 사용량이 급격히 증가할 수 있기 때문이다.
그래서 상대적으로 가격이 저렴하고 공간적 여유가 있는 하드디스크의 일부를 SWAP 영역이라는 이름으로 파티션을 설정하여 최상위 디렉토리인 "/(루트)"가 사용하는 파티션과 더불어 디스크를 파티셔닝하여 사용하였다. 이때 SWAP의 용량은 전체 디스크의 10% 정도가 권장되었다.
리눅스의 파티션은 초창기는 유닉스처럼 /와 swap 영역으로만 분할되었으나 본격적으로 서버로 사용되기 시작한 커널 2.2 기반의 레드헷 리눅스 버전 6(1999년)에서는 4개의 파티션 분할이 권장되었다.
이때부터 리눅스는 Primary Partition을 4개까지 지원하였고, 이때 권장하는 분할 파티션이 /, swap, /usr, /home 이었다. /usr과 /home의 공통점은 서버로 사용될 경우 급격한 디스크 용량 증가가 발생할 수 있는 디렉토리라는 점이다.
2000년 이후로 기업체의 서버로 리눅스가 사용되면서 이메일(스팸메일 포함)이 쌓이는 /var/spool/mail 디렉토리와 각종 로그가 쌓이는 /var/log 때문에 /var 디텍토리도 분할하여 사용되기 시작하였다.
/usr, /home, /var 디렉토리를 분할하여 파티셔닝하지 않는 경우 / 디렉토리의 용량이 풀(full) 이 되면 프로세스가 중단되거나, 새로운 프로세스를 실행시킬 수 없는 문제가 발생할 수 있으므로 분할하여 사용하는 것이 권장되는 것이다.
추가적으로 멀티부팅을 위해 사용하는 LILO 부트 매니저 프로그램은 부팅을 위한 리눅스 커널이 하드디스크의 1024 실린더 영역에 있어야 부팅이 가능하기 때문에 부팅을 위해 /boot 도 분할하여 사용해야 했다(현재 부트 매니저로 사용되는 GRUB은 이 문제점을 해소한 상태이다)
ㅇ 파티션 분할이 필요한 디렉토리
현재는 보안상의 이유, 시스템의 안정성 확보, 관리의 편의성에 따라 리눅스에서 사용하는 각 디렉토리의 특성에 따라 별도의 파티션을 구성하거나, 단지 /와 swap 만으로 분할하여 파티셔닝을 한다. (전적으로 사용자 맘이다)
별도의 파티션을 구성하는 것을 검토할 필요가 있는 디렉토리는 다음과 같다.
- /swap : /와 함께 반드시 필요한 파티션이다. 통상 물리 메모리의 2배 정도를 할당한다.
- /boot : 운영 시스템의 커널이 들어가는 디렉토리이다. 커널 컴파일을 위해 여유있게 100M 이상으로 할당해야 한다.
- /usr : 리눅스의 응용프로그램이 설치되는 디렉토리이다.(windows의 C:Program Files에 해당) 전통적으로 분할이 권장되었지만, 현재는 /와 /usr이 분리될 경우 유지관리의 문제가 발생할 수 있으므로 분리하지 않도록 권장된다
(시스템 유지관리에 필요한 일부 명령어가 /usr/sbin에 저장되기 때문)
- /var : 위에서 언급한 것처럼 반드시 분할해야 하는 디렉토리로 부상하고 있다. 스풀링 파일들이 저장되는 /var/spool, 메일이 저장되는 /var/spool/mail, 로그가 저장되는 /var/log, yum 패키지를 다운로드하는 /var/cache/yum 디렉토리 때문에 적어도 3G 이상 설정을 권장한다.
- /home : 시스템을 사용하는 사용자 계정이 많을 경우 반드시 분할하도록 권장된다. 사용자 계정을 만들면 각 사용자는 자신의 홈 디렉토리를 /home 디렉토리 밑에 자신의 계정명을 디렉토리로 갖기 때문이다.(/home/user01, /home/user02....등)
/home을 분할할 경우 각 사용자가 불필요한 파일을 업로드 하는 것을 제한할 수 있고, 특수 파일 생성 제한 등의 정책을 파티션에 부여할 수 있으므로 분할이 권장된다.
- /tmp : 스티키 비트라고 부르는 특별한 권한으로 인해 보안상의 이유로 파티션 분할이 권장된다. /tmp 디렉토리는 원래 임시 저장 을 위한 디렉토리로 다양한 시스템 계정이 사용하기 때문에 스티키 비트라는 특수 권한을 부여해서, 공유 디렉토리처럼 모든 사용자가 /tmp 디렉토리에 파일을 생성할 수 있도록 하되, 삭제시에는 본인이 생성한 파일만 삭제할 수 있도록 만든 권한체계이다.
(2010년 분할되지 않은 /tmp 디렉토리를 이용해 root 권한을 획득하는 취약점이 발표되었는데, /tmp 디렉토리를 분할하여 파티션 했다면 막을 수있는 취약점이었다)
ㅇ 파티션의 종류
위에서 잠깐 언급한 것처럼 하나의 디스크는 모두 4개의 Primary Partition을 가질 수 있다.
간단한 리눅스 서버 시스템이나 데스크탑으로 리눅스를 사용할 경우 /와 swap 두 개의 파티션으로만 구성할 수도 있다.
그러나 /var, /tmp, /home 등 보안이나 안정성을 위해 추가적인 파티션 구성이 필요할 경우 4개의 Primary Partition만으로 만들 수 없기 때문에 Extended Partition을 사용한다.
Extended 파티션은 논리 파티션을 담을 수 있는 그릇 역할을 하는 파티션이고 하나의 디스크에 하나의 확장 파티션만 설정할 수 있으므로 일반적으로 프라이머리 파티션을 구성하고 남은 디스크 전체의 공간을 확장 파티션으로 설정한다.
논리 파티션은 확장 파티션 안에 논리적으로 만들 수 있는 파티션으로 최대 12개의 논리 파티션을 구성할 수 있다.
아래 그림은 주 파티션(Primary Partition)과 확장 파티션, 논리 파티션을 이용한 파티션 구성의 예이다.