[ 이전 ] [ Abstract ] [ 저작권 ] [ 차례 ] [ 다음 ]

데비안 GNU/리눅스 2.1 설치 (Intel x86) - 장 4
하드 디스크 파티션에 대하여


4.1 기초 지식

하드 디스크를 파티션 한다는 것은 간단히 말해서 하드 디스크를 여러 조각으로 나누는 것이다. 각 조각은 서로 독립적이다. 이는 집 안에 벽을 세우는 것과 거의 비슷하다. 즉 어떤 방에 가구를 들인다고 해서 그 행위가 다른 방에 영향을 미치지는 않는다.

시스템에 이미 어떤 운영체제 (윈도즈95, 98, NT, OS/2, MacOS, Solaris, FreeBSD)가 설치되어 있고, 같은 하드 디스크에 리눅스도 설치하고자 한다면, 아마도 디스크를 다시 파티션해야 할 것이다. 일반적으로 어떤 파일시스템을 이미 갖고 있는 파티션을 변경하면 그기에 있던 모든 데이타는 파괴되어 버릴 것이다. 그래서 다시 파티션 하기 전에 항상 백업해야 한다. 집에 빗대어 이야기하면, 집안 구조를 변경하기 위하여 벽을 부수기 전에 가구들을 집 밖으로 옮겨야 하는 것과 같은 이치이다. 다행스럽게도 일부 사용자에게는 다른 방법이 있다. 도스, Win-32 또는 오에스투에서 데이타 손실 없이 파티션 나누는 방법, Section 4.7를 참고하기 바란다.

GNU/리눅스는 최소한 하나의 파티션을 필요로 한다. 하나의 파티션에 운영체제와 응용 프로그램, 개인 파일 모두를 저장할 수 있다. 대부분의 사람은 스왑 파티션도 필수라고 생각한다. 그러나 엄밀하게 따지면 이것은 사실이 아니다. ''스왑''은 운영체제가 임시로 사용하는 공간이다. 즉, 비싼 메모리 대신에 값싼 하드디스크를 ''가상 메모리''로 이용하는 것이다. 스왑을 하나의 파티션으로 분리하면 리눅스르 이를 훨씬 더 효율적으로 이용할 수 있다. 보통의 파일을 스왑으로 사용하게 할 수도 있지만 추천하고 싶지는 않다.

대부분의 사람들은 GNU/리눅스에 하나 이상의 파티션을 할당하고 있다. 여러개의 파티션에 파일시스템을 나누어 두는 두 가지 이유가 있다. 첫째는 안전성 때문이다. 어쩌다 파일시스템이 엉킨다 하더라도 대개는 해당 파티션 하나에만 국한된다. 따라서 (보관하고 있던 백업을 이용하여) 해당 부분만 교체하면 된다. 최소한 ''루트 파티션'' 만이라도 따로 만드는 것을 고려해야 한다. 여기에는 시스템의 가장 기본적인 것이 포함된다. 따라서 다른 파티션이 엉킨다고 하더라도 부팅하여 시스템을 보수하는 것이 가능하다. 이렇게 하므로서 시스템을 다시 설치하는 번거로움을 피할 수 있다.

두 번째 이유는 실제 업무와 관련될 때 더욱 중요하다. 그러나 실제로는 컴퓨터 사용의 문제이다. 뭔가가 통제 불능 상태에 빠져 디스크 공간을 잡아먹고 있다고 가정하자. 그리고 그 프로세스가 하필 루트의 권한을 갖고 있다면 (하드 디스크 공간 중 일정량은 일반 사용자가 이용할 수 없고 오로지 루트만이 이용할 수 있다), 어느 순간 디스크 공간이 꽉 차버릴 수도 있다. 이와 같은 상황은 좋지 않다. 왜냐하면 운영체제는 일을 하기 위해서 (스왑 공간 이외에) 실제 파일을 사용해야 하기 때문이다. 이러한 상황의 원인이 내부에만 있는 것은 아니다. 예를 들어, 계속되는 스팸 메일로 인하여 쉽사리 파티션이 차버릴 수 있다. 더 많은 파티션을 이용하면 이러한 많은 문제로부터 시스템을 보호할 수 있다. 다시 메일을 예로 든다면, /var/spool/mail을 위하여 따로 파티션을 하나 만들어 놓으면 스팸 메일 공격을 받더라도 시스템 주요 부분은 작동할 것이다.

LBA 모드도 사용하지 않고 오버레이 드라이버도 사용하지 않는 고용량의 IDE 디스크를 갖고 있다면 파티션을 피할 수 없다. 이 경우에, 루트 파티션을 처음 1024 실린더 안쪽 (대개 524 메가바이트 근처)에 두어야 하기 때문이다.

여러개의 파티션을 사용하려 할 때의 곤란한 점은 무엇이 필요하게 될지 미리 알기 어렵다는 것이다. 파티션을 너무 작게 만들면 시스템을 다시 설치해야 하거나 또는 빈 공간을 만들기 위해 데이타를 여기저기로 옮기는 일을 반복적으로 할 수도 있다. 한편, 파티션을 너무 크게 만들면, 다른 곳에 사용할 수 있는 공간을 쓸데 없이 낭비하는 꼴이 될 수 있다. 비록 요즈음 하드 디스크 가격이 싸다고는 하지만, 돈을 낭비할 이유는 없지 않은가?


4.2 시스템 사용 계획 세우기

만들고자 하는 시스템의 종류를 결정하는 것은 중요하다. 시스템의 종류에 따라 필요한 하드 디스크 공간이 결정되고 파티션 설계에도 영향을 미친다.

데비안에서는 사용자 편의를 위하여 몇 가지 ''프로파일''을 준비해 놓고 있다 (프로파일의 선택과 설치, Section 7.23를 참고하기 바란다). 프로파일이란 간단히 말해서, 패키지 선택을 좀 더 쉽게 해주는 것이라고 할 수 있다. 하나의 프로파일을 선택하면 해당하는 수많은 패키지가 자동으로 설치된다.

각각의 프로파일에는 필요로 하는 하드 디스크 공간이 있다. 프로파일을 이용하지 않는다 하더라도 이러한 논의는 의미가 있다. 왜냐하면 이러한 논의를 통하여 몇 개의 파티션이 필요한지 그리고 각 파티션의 크기는 어느 정도로 할지에 대한 감을 잡을 수 있기 때문이다.

선택 가능한 몇 가지 프로파일과 각각의 프로파일이 요구하는 하드 디스크 용량에 대해 아래에 기술하였다.

Server_std (소형 서버)
소형 서버에 대한 프로파일. 계정 사용자의 작업이 별로 없는 경량형 서버에 적당하다. 기본적으로 FTP 서버, 웹 서버, DNS, NIS, POP 서버가 포함되어 있다. 대략 50MB 가량이 필요하다. 물론 이 용량은 단지 소프트웨어 설치에 필요한 공간이며 제공할 서비스에 필요한 데이타를 위한 공간은 포함되어 있지 않다.

Dialup (표준 데스크탑)
표준 데스크탑에 대한 프로파일. X 윈도우 시스템, 그래픽 프로그램, 사운드, 에디터 등을 포함하고 있다. 필요한 공간은 약 500MB 가량이다.

Work_std (경량형 컴퓨터)
경량형 컴퓨터에 대한 프로파일. X 윈도우 시스템 또는 X용 프로그램이 포함되어 있지 않다. 랩탑 또는 모빌 컴퓨터에 적당하다. 필요한 공간은 약 140MB 가량이다. (저자의 경우, 랩탑을 매우 단순하게 구성하였는데 그기에는 X11이 포함되어 있으며 필요한 공간은 100MB 보다 작았다.)

Devel_comp (개발자용 컴퓨터)
개발자용 도구가 모두 설치된 데스크탑에 대한 프로파일. Perl, C, C++ 등이 포함되어 있다. 필요한 공간은 대략 475MB 가량이다. 다른 목적을 위하여 X11 과 몇가지 패키지를 추가로 설치한다면 800MB 가량이 필요할 것이다.

위에서 언급한 하드 디스크 용량은 필요한 소프트웨어 설치에 필요한 공간만을 이야기 한 것이다. 즉 사용자 파일, 메일, 데이타 등을 위한 공간은 포함하지 않았다는 것을 명심하기 바란다. 여러분의 파일과 데이타를 저장할 공간을 항상 고려해야 한다. 특히 주의할 것은, 데비안의 /var 파티션에는 여러가지 정보가 저장된다는 것이다. 그 중에서도 dpkg 파일들이 (설치된 모든 패키지에 대한 정보를 가지고 있음) 차지하는 공간은 20MB를 쉽게 넘는다. 일반적으로 /var에 최소한 50MB는 할당해야 한다.


4.2.1 PC 디스크 제한 사항

일반적으로 디스크 파티션에는 바이오스에 의한 추가적인 제약이 따른다. 하나의 하드 디스크에 존재할 수 있는 ''기본(primary)'' 와 ''논리(logical)'' 파티션의 개수에 제한이 있다. 또한 부팅 가능한 드라이버에 대한 제한도 있다. 여기서는 여러분에게 도움이 될 내용을 간단히 살펴보겠다. 더 자세한 것은 Linux Partition HOWTO를 참고하기 바란다.

''기본'' 파티션은 원래 PC 디스크를 위해 설계된 파티션이다. 그러나 하나의 하드 디스크에 단지 네개 만이 있을 수 있다. 이러한 제한을 벗어나기 위해 ''확장(extended)'' 또는 ''논리'' 파티션이 고안되었다. 기본 파티션을 확장 파티션으로 설정한 다음, 다시 여러개의 논리 파티션으로 나눌 수 있다. 만들 수 있는 논리 파티션의 개수에는 제한이 없으나 확장 파티션은 하나의 디스크에 오로지 하나 만이 있을 수 있다.

리눅스는 하나의 디스크에 있을 수 있는 파티션의 개수를 제한하고 있으며, SCSI 디스크의 경우 모두 15 개의 파티션 (3개의 기본 파티션, 12 개의 논리 파티션)이 가능하고, IDE 디스크는 모두 63 개의 파티션 (3 개의 기본 파티션, 60 개의 논리 파티션)이 가능하다.

마지막으로 알아두어야 할 사항은, 부트 파티션 (즉, 커널 이미지를 포함하고 있는 파티션)은 디스크의 처음 1024 실린더 안에 있어야 한다는 것이다. 일반적으로 루트 파티션은 또한 부트 파티션이기 때문에 루트 파티션이 처음 1024 실린더 안에 있는지 확인해야 한다.

고용량 디스크의 경우, LBA 변환 모드와 같은 실린더 변환 기술을 사용할 필요가 있으며 바이오스에서 설정할 수 있다. 고용량 디스크 사용에 관한 더 자세한 정보는 Large Disk HOWTO를 참고하기 바란다. 실린더 변환 기술을 사용한다면 1024 번째 실린더의 변환된 값 안에 부트 파티션이 있어야 한다.


4.3 리눅스에서 사용하는 장치명

리눅스에서 사용하는 디스크와 파티션의 이름은 다른 운영체제의 그것과는 다르다. 파티션을 만들거나 마운트 하려면 리눅스에서 사용하는 이름을 알아야 한다. 다음은 이름을 붙이는 기본적인 방법이다.

디스크의 이름에 십진수를 붙여서 파티션을 구별한다. 예를 들어, ''sda1'' 과 ''sda2''는 첫번째 SCSI 디스크에 있는 첫번째, 두번째 파티션을 각각 나타낸다.

실질적인 예를 들어 보자. 어떤 시스템에 두 개의 SCSI 디스크가 있으며, 그 중 하나의 SCSI ID 주소가 2 이고 나머지의 SCSI ID 주소는 4 라고 하자. 주소 2의 첫 번째 SCSI 디스크는 ''sda''가 될 것이고, 두 번째 디스크는 ''sdb''가 될 것이다. ''sda''에는 세 개의 파티션이 있으며 각 파티션의 이름은 ''sda1'', ''sda2'', ''sda3''가 된다. 이는 ''sdb'' 디스크에도 똑 같이 적용된다.

SCSI 호스트 어댑터 (즉, 콘트롤러)가 두 개라면, 디스크들의 순서에 혼란이 있을 수 있다. 부트 메세지를 잘 관찰하면 이 문제를 해결할 수 있다. 물론 각각의 디스크 모델명 정도는 알고 있어야 한다. 리눅스에서는 디스크 이름에 1 부터 4 까지의 숫자를 붙여서 기본 파티션을 표시한다. 예를 들어, 첫 번째 IDE 디스크의 첫 번째 기본 파티션은 /dev/hda1과 같이 나타낸다. 논리 파티션은 5 부터 시작한다. 따라서 ''hda'' 디스크의 첫 번째 논리 파티션은 /dev/hda5로 표시한다. 확장 파티션 (즉, 논리 파티션으로 이루어진 기본 파티션) 그 자체는 사용할 수 없다. 이것은 SCSI 디스크와 IDE 디스크 모두에 적용된다.


4.4 추천하는 파티션 설계

되도록이면 루트 파티션과 /usr 파티션은 따로 분리하도록 한다. 루트 파티션은 좀 작게하고 /usr 파티션은 보다 크게 만든다. 대부분의 경우에는 이것으로 충분하다. 특히, 하드 디스크가 하나 뿐이고 그 크기도 작은 경우에 위와 같은 파티션 설계가 적당하다. 왜냐하면, 이 경우에는 여러개의 파티션으로 나누는 것이 결과적으로는 공간 낭비를 초래할 수 있기 때문이다.

데비안에서 패키지 형태로 배포하지 않는 프로그램을 많이 설치할 계획이라면 /usr/local 파티션이 따로 필요할 수도 있다. 시스템을 메일 서버로 활용할 계획이라면 /var/spool/mail에 따로 파티션을 할당해 줄 수도 있다. /tmp에 20 에서 32MB 정도의 파티션을 따로 할당하는 것도 좋은 생각이다. 많은 사람들에게 계정을 발급해 줄 계획이라면, /home에 큰 파티션을 하나 주는 것이 좋다. 일반적으로, 컴퓨터를 어떻게 사용하느냐에 따라 파티션 설계 방법이 달라지게 마련이다.

매우 복잡한 시스템의 경우는 Multi Disk HOWTO를 참고하기 바란다. 여기에는 서버를 설치하고 설정하려는 사람들과 ISP의 관심을 끌 만한 깊이 있는 정보를 담고 있다.

스왑 파티션 크기와 관련해서는 여러가지 관점이 있다. 경험적으로 볼 때 스왑의 크기를 시스템의 메모리 크기와 같게 하면 원만하게 작동한다. 그러나 대부분의 사용자는 스왑의 크기를 64MB 이상으로 하고 있으며, 그렇다고 해서 별 다른 의의를 제기할 생각은 없다. 대부분의 경우에 스왑의 크기가 16MB 보다 작아서는 안된다. 물론 이러한 규칙에는 예외가 있다. 256MB의 메모리를 가진 시스템에서 10000 개의 연립 방정식을 풀려고 한다면 기가바이트 크기의 스왑도 모자랄 수 있다.

리눅스는 하나의 스왑 파티션에 128 메가바이트 이상의 스왑은 사용하지 않는다. 그 이상의 스왑이 필요하면 설치가 끝난 후에 여러개의 스왑 파티션을 만들고 /etc/fstab을 수정하면 가능하다. 그러나 큰 스왑 공간이 필요하면 다른 디스크에 스왑 파티션을 분산시켜야 할 것이다 (''스핀들''이라고 한다). 또는 이러한 제한이 완화된 최근의 리눅스 커널 (2.2 또는 그 이상)을 이용할 수도 있다 (시스템에 어떤 변화를 주어야 할 지도 모르니 주의 해야 한다).


4.5 파티션 예

저자가 집에서 사용하는 컴퓨터에는 32MB의 램과 1.7GB의 IDE 디스크 (/dev/hda)가 있다.. /dev/hda1에 500MB를 할당하여 다른 운영체제를 설치하였으며 (거의 사용하지 않기 때문에 200MB 정도로 만들어야 했다), /dev/hda3에 32MB 크기의 스왑 파티션을 할당하고 나머지 (/dev/hda2에 1.2GB)를 리눅스 파티션으로 만들었다.


4.6 설치하기 전에 파티션 나누기

파티션을 할 수 있는 때가 두 번 있다. 즉, 데비안을 설치하기 전 그리고 데비안을 설치하는 동안. 컴퓨터에 데비안 만을 설치할 계획이라면 설치 과정 중에 파티션 하면 된다 (``Partition a Hard Disk'', Section 7.6). 그러나 하나 이상의 운영체제를 설치할 계획이라면 해당 운영체제에서 파티션을 만들어 놓아야 한다.

데비안을 설치하기 전에 다른 운영체제에서 파티션하는 것과 관련된 내용을 설명하겠다. 다른 운영체제에서는 파티션 이름을 어떻게 붙이는지 그리고 리눅스에서는 그 파티션 이름을 어떻게 붙이는지 (리눅스에서 사용하는 장치명, Section 4.3) 알고 있어야 한다.


4.6.1 도스 또는 윈도즈에서 파티션 나누기

하드 디스크에 이미 존재하는 FAT 또는 NTFS 파티션을 다루고자 한다면 도스 또는 윈도즈에서 제공하는 도구를 이용하거나 아래의 설명을 참고하기 바란다. 그런 것이 아니라면 도스 또는 윈도즈에서 파티션 할 필요는 실제로 없다. 리눅스에서 제공하는 도구를 이용하는 것이 더 좋을 것이다.


4.7 도스, Win-32 또는 오에스투에서 데이타 손실 없이 파티션 나누는 방법

일반적으로 도스 (윈도즈 3.1 포함), Win32 (윈도즈 95, 98, NT) 또는 OS/2가 이미 설치되어 있는 하드 디스크에 데비안을 설치하려고 하는 경우가 대부분이다. 물론 기존의 시스템에 손상을 주면 안될 것이다. 기초 지식, Section 4.1에서 설명했다시피 사전에 어떤 준비를 하지 않는 이상, 기존의 파티션 크기를 줄이면 그곳에 있던 데이타에 손상이 가는 것은 거의 확실하다. 이제 설명할 방법은 데이타의 완벽한 보호를 보장해 주지는 않지만 실제 상황에서 매우 잘 작동한다. 예방책으로 백업을 해두는 것이 좋다.

계속하기 전에, 디스크를 어떻게 나눌 것인지 결정해야 한다. 여기서는 하나의 파티션을 두 조각으로 나누는 방법 만을 설명한다. 한 조각은 기존의 운영체제를 위해 그리고 다른 한 조각은 데비안을 위한 것이다. 데비안을 설치하는 동안에 그 한 조각을 여러분이 원하는 용도 (즉, 스왑 또는 파일시스템)로 사용할 기회가 있을 것이다.

파티션 정보를 바꾸기 전에, 모든 데이타를 파티션의 첫 부분으로 옮겨 놓음으로서 손상을 피할 수 있다. 파티션의 끝 부분에 파일이 있으면 얻을 수 있는 빈 공간이 줄어들기 때문에 데이타를 이동 시킨 후 다시 파티션 하는 사이에 파일을 만드는 일이 없도록 주의해야 한다.

첫번째로 필요한 것은 fips이다. 가까운 데비안 ftp 사이트의 tools/ 디렉터리에서 찾을 수 있다. 압축을 풀면 RESTORRB.EXE, FIPS.EXE, ERRORS.TXT이 나오는데 이들을 부팅가능한 플로피 디스크에 복사한다. 도스에서 부팅 디스크를 만들려면 sys a: 명령을 실행시키면 된다. fips에는 읽어 볼만한 매우 훌륭한 문서가 포함되어 있다. 디스크 압축 드라이버 또는 디스크 매니저를 사용한다면 분명히 읽어볼 필요가 있다. 디스크를 나누기 전에 읽어보기 바란다.

그 다음으로 해야 할 것은 모든 데이타를 파티션 시작 부분으로 옮기는 것이다. 도스 6.0 이상에서 제공하는 defrag를 이용하여 쉽게 할 수 있다. 같은 역할를 하는 다른 프로그램에 어떤 것들이 있는지 알고 싶으면 fips에 포함되어 있는 문서를 참고하기 바란다. 윈도즈95를 사용할 경우, 도스에서 defrag를 실행시켜서는 절대 안되며 윈도즈에서 defrag를 실행시켜야 한다. 윈도즈95 이상에서는 긴 파일 이름을 지원하기 위해 VFAT을 사용하며 도스는 이를 알지 못하기 때문이다.

디스크 조각 모음을 완료한 후 (용량이 큰 디스크의 경우 완료될 때 까지 오랜 시간이 걸릴 수도 있다), fips를 포함하고 있는 부팅 플로피 디스크를 이용하여 재부팅해야 한다. 그 후 a:\fips를 타이핑하여 실행 시키고 이어서 화면에 나타나는 지시에 따르면 된다.

fips를 이용한 파티션 나누기가 여의치 않다고 하더라도 그 외의 다른 많은 파티션 관리자를 이용할 수 있다.


4.8 도스에 할당할 파티션에 대해서

리눅스에서 제공하는 도구를 이용하여 도스에 할당할 파티션을 만들거나 도스 파티션의 크기를 바꾼 경우에 그 파티션으로 인한 문제점을 경험한 사람들이 많다. 예를 들어, 도스 또는 윈도즈에서 수행 능력이 떨어진다거나, scandisk와 문제를 일으킨다거나, 또는 다른 이해 못할 에러 등이 그것이다.

일단은, 도스용 파티션을 만들거나 크기를 변화시킨 후, 그 파티션의 처음 몇 섹터에 제로를 써 넣는 것이 좋다. 도스에서 format 명령을 실행하기 전에 아래의 예와 같은 명령을 리눅스에서 실행시키면 된다.

     dd if=/dev/zero of=/dev/hdXX bs=512 count=4


[ 이전 ] [ Abstract ] [ 저작권 ] [ 차례 ] [ 다음 ]
데비안 GNU/리눅스 2.1 설치 (Intel x86)
version 2.1.11, 26 June, 1999
Bruce Perens
Sven Rudolph
Igor Grobman
James Treacy
Adam Di Carlo