본문으로 바로가기

최근에 개인 서버를 구축해서 사용 중입니다. 구축하는 과정에서 리눅스 사용법과 웹 개발 지식 등 다양한 부분을 배울 수 있었습니다. 구축하는 과정에 겪었던 난항들과 유용한 문서들을 스크랩하여 저장하고 있습니다만 블로그를 통해서 한번 내용을 정리하는 겸 공유하려 합니다.

서버사양

CPU : AMD Athlon(tm) X2 Dual-Core 1Ghz
RAM : 2GB
HDD : 320GB
OS : Ubuntu 14.04 LTS 64bit Desktop

집 에서 쓰지않는 노트북을 가지고 서버를 구축해 보았습니다. 오래된 노트북이지만 리눅스 서버를 돌리는데 전혀 무리가 없으며 (오히려 일반 NAS보다는 고사양) 저전력으로 돌아가기때문에 남는 노트북이 있으신 분들은 노트북서버를 적극 추천합니다.

우분투를 선택한 이유

저는 리눅스 서버 운용이 처음이고 많이 사용해보지 않았기 때문에 혹시모를 사항에 대비 비교적 익숙한 GUI 환경을 제공하는 Ubuntu(이하 우분투)를 선택하였습니다.

CentOS : 상용리눅스인 레드햇리눅스를 기반으로 만들어졌기 때문에 서버 운용 및 안정성 측면에서 뛰어나다고 알려짐. 많은 NAS에서 운용중인 OS.
Ubuntu : 초심자가 접하기 쉬운 리눅스. 자주 업데이트 되는 편이며. 서드파티 프로그램들의 설치 및 사용이 쉽다.

기본적으로 리눅스 기본 명령어는 거의 동일하기 때문에 리눅스에 익숙한 사용자는 CentOS의 운용도 적극 검토해보시기 바랍니다.

파티션 나누기

이 번 글에서 다룰 가장 많은 내용인 파티션 나누기 입니다. 리눅스 서버에서 파티션을 나누는 이유는 관리의 편리함도 있지만 시스템 안정성 확보와 보안을 위해서 꼭 필요한 부분이기도 합니다. 파티션을 나누지 않고 사용할 경우 용량이 꽉 찼을경우 새로운 프로세스 실행을 할 수 없거나 기존 프로세스가 중단되는 등의 문제가 발생합니다.

/swap : 메모리 스왑용 파티션으로 HDD를 쓴다면 /와 함께 반드시 필요한 파티션. 통상 물리 메모리의 2배 정도를 할당한다.(하지만 4G이상의 공간할당은 추천하지 않는다고 한다.)
* SSD만을 사용하는 서버라면 /swap 영역을 나누지 않는 것이 SSD 수명향상에 도움이 된다.


/boot : 운영 시스템의 커널이 들어가는 디렉토리. 커널 컴파일을 위해 여유있게 100M 이상으로 할당해야 한다.


/usr/local : 리눅스의 응용프로그램이 설치되는 디렉토리.(윈도우의 C:\Program Files에 해당) 각종 패키지를 직접설치(컴파일 설치 등)할 때 기본적으로 지정되는 경로가 /usr/local 이다.
* 상위디렉토리인 /usr 로 나누지 않는 이유는 /와 /usr이 분리될 경우 유지관리의 문제가 발생하기 때문이다.(시스템 유지관리에 필요한 일부 명령어가 /usr/sbin에 저장되기 때문) 따라서 하위폴더인 /usr/local을 분할하는것이 일반적이다.


/var : 스풀링 파일들이 저장되는 /var/spool, 메일이 저장되는 /var/spool/mail, 로그가 저장되는 /var/log, yum 패키지를 다운로드하는 /var/cache/yum 디렉토리 때문에 적어도 3G 이상 설정을 권장한다.


/home : 사용자 계정 디렉토리. 사용자 계정을 만들면 각 사용자는 자신의 홈 디렉토리를 /home 디렉토리 밑에 자신의 계정명을 디렉토리로 갖는다.(/home/user01, /home/user02....등) /home을 분할할 경우 각 사용자가 불필요한 파일을 업로드 하는 것을 제한할 수 있고, 특수 파일 생성 제한 등의 정책을 파티션에 부여할 수 있으므로 분할이 권장된다.


/tmp : /tmp 디렉토리는 임시 저장을 위한 디렉토리. 스티키 비트라고 부르는 특별한 권한으로 인해 보안상의 이유로 파티션 분할이 권장된다.
* 스티키 비트 : 공유 디렉토리처럼 모든 사용자가 /tmp 디렉토리에 파일을 생성할 수 있도록 하되, 삭제시에는 본인이 생성한 파일만 삭제할 수 있도록 만든 권한.


/boot : 운영 시스템의 커널이 들어가는 디렉토리. 멀티부팅을 사용하기 위해선 나눠야 하며 커널 컴파일(업데이트 등)을 위해 비교적 여유있게 200M 이상으로 할당해야 한다.


/ : 나머지 분할하지 않은 디렉토리들이 속하게 되는 디렉토리. 여유있게 10G정도 할당하면 충분하다.

파티션 용량할당

나눌 파티션을 선정했다면 쓰임에 따라 사용할 용량을 고려해야합니다. 서버의 용도에 따라 다음과 같이 기준을 나눠볼 수 있습니다. 물론 절대적인 기준은 아니니 참고만 하시기 바랍니다. 설령 용량이 부족하더라도 후에 파티션 관리프로그램을 통해서 파티션 용량을 수정할 수 있습니다.

웹서버 : 여러 사용자의 계정을 호스팅하는 웹서버의 특성상 /home 디렉토리의 용량을 가장 많이 분배해야 합니다. 더불어 접속기록과 DB사용량을 고려해야하기 때문에 /var 디렉토리의 적절한 용량분배또한 필요합니다.
DB서버 : DB가 저장되는 /var 디렉토리의 용량을 가장 많이 분배해야 합니다.
메일서버 : 메일이 저장되는 /var 디렉토리의 용량을 가장 많이 분배해야 합니다.
네임서버 : /var 디렉토리 용량을 가장 많이 분배해야 합니다.

추가. 우분투 설치과정에서 발생한 문제들

OS 설치부터 예상치 못항 난항을 겪었습니다. 노트북이라는 특수성(데스크탑과 달리 각종 드라이버들의 요구사항 등) 때문에 발생한 문제로 추측합니다만 저는 다음과 같은 과정을 겪었습니다. 혹시라도 노트북으로 우분투 설치시 문제가 생기는 분들은 참고하시길 바랍니다.

32bit 데스크톱 버전 설치 : 로그인화면에서 튕기는 현상발생. GUI바꾸는 방법으로도 해결되지 않음. 게다가 한글설치라 콘솔모드로 사용할때 글자깨짐현상 발생.
64bit 서버 버전 설치 : 서버버전은 설치과정이 데스크톱과 다름. 처음에 네트워크연결이 필요한데 노트북의 랜카드를 인식하지 못하는 문제 발생. 설치 실패
64bit 데스크톱 버전 설치 : 여러자료를 찾아본 결과 노트북이어도 듀얼코어면 64비트 버전으로 우분투를 설치하는것이 낫다는 글들을 보고 다시한번 설치 시도. 이번에는 혹시모를 로그인화면 튕김현상을 대비해서 영문설치로 진행. 놀랍게도 튕기지 않고 잘 작동. 이후 한글언어패치 진행함.

참고자료

리눅스 파티션나누기 (http://linuxism.tistory.com/514)
리눅스의 디렉토리별 파티션 구성 (http://ttend.tistory.com/60)