디스크 공간 할당하기

디스크 분할 계획

디스크를 가능한 가장 좋은 방법으로 분할한다는 것은 쉽지 않다. 나쁘게도, 디스크를 분할하는 일반적인 정확한 방법이 없다. 고려해야할 요인들이 너무 많다.

전통적인 방법은, /bin, /etc, /dev, /lib, /tmp와 시스템이 돌아가는데 필요한 다른 것들을 포함하는 (상대적으로) 작은 루트 파일시스템을 만드는 것이다. 이 방법으로, 루트 파일시스템(고유한 파티션이나 디스크에 있는)은 시스템을 작동시키는데 필요한 모든 것이 된다. 작은 루트 파일시스템을 만드는 이유는 만약 루트파일시스템이 작고 많이 사용되지 않으면, 시스템이 망가졌을 때, 파일시스템이 망가질 가능성이 적고, 그래서 시스템이 망가져서 생긴 문제들을 고치는 것이 쉽다는 것을 알 수 있을 것이다. 그리고, /usr, 사용자 홈 디렉토리(종종 /home)와 스왑 공간을 위해 다른 파티션을 만들던지 아니면 다른 디스크를 사용한다. 프로그램들(/usr밑에 있는)을 백업하는 건 보통 필요없기 때문에, 홈디렉토리(사용자의 파일들과 함께)를 홈디렉토리만의 파티션으로 떼어 놓는 것은 백업을 더 쉽게 한다. 네트웍 환경에서는 컴퓨터 대수만큼 수십에서 수백메가바이트씩에 달하는 양을 줄이면서, /usr을 몇대의 컴퓨터들이 공유하는 것도 가능하다(예를 들어 NFS를 이용해서).

많은 파티션을 가져서 생기는 문제는 안쓰고 있는 디스크 총량을 많은 조각으로 나눈다는 점이다. 디스크와 (희망차게도) 운영체제가 더 신뢰할 수 있는 요즈음, 많은 사람들은 모든 파일들을 포함하는 오로지 한 파티션을 선호한다. 반면에, 작은 파티션을 백업하는(그리고 복구하는)것이 고통이 덜할지도 모른다.

작은 하드디스크(커널 개발을 하지 않는다고 가정하고)는 아마도 한 파티션을 가지는 것이 가장 좋은 방법일 것이다. 큰 하드디스크는 단지 뭔가 정말 잘못될 경우, 상당수의 큰 파티션으로 나누는 것이 아마도 좋을 것이다.(작고 크다는 것이 여기에서 상대적인 감각으로 사용된다는 것에 유의하라. 디스크 공간의 필요성이 어떻게 반응할 지 결정한다.)

만약 여러개의 하드디스크를 가지고 있다면, 루트 파일시스템(/usr을 포함하는)을 한 디스크에 넣고, 홈디렉토리를 다른 디스크에 넣기를 원할지도 모른다.

다른 디스크 할당 계획을 가지고 약간 실험할 준비를 하는 것은 좋은 생각이다(첫번째 인스톨할 동안만이 아니라 시간에 걸쳐). 그렇게 하는 것은 필수적으로 시스템을 몇차례 인스톨하는 것을 필요로 하기 때문에 다소 일이 될 것이나, 디스크 분할을 정확히 했다고 확신할 수 있는 유일한 방법이다.

공간 요구량

설치하려는 리눅스 배포본에서 여러 설정에 따라 얼마나 많은 디스크량이 필요한지 약간의 지시가 있을 것이다. 따로 설치한 프로그램도 역시 같은 지시가 있을 것이다. 그런 지시들이 디스크 사용을 계획하는데 도움을 줄 것이나, 미래를 준비해야 하고 나중에 필요하다고 느낄 것들을 위해 약간의 여분의 공간을 확보해야 한다.

사용자 파일에 필요한 양은 사용자가 뭘 하길 바라는지에 의존한다. 대부분의 사람들이 가능한한 그들의 파일을 위해 많은 공간을 필요로 하는 것처럼 보이긴 하지만, 사용자들이 행복하게 살아가기 위해 필요한 공간은 저마다 다양하다. 어떤 사람들은 오로지 간단한 텍스트 작업을 하고 몇 메가바이트로 잘 살아갈 것이고, 다른 사람들은 힘든 이미지 처리를 하고 몇 기가바이트가 필요할 것이다.

그런데, 킬로바이트나 메가바이트로 주어지는 파일크기나 메가바이트로 주어지는 디스크 공간을 비교할 때, 두 단위가 다르게 사용될 수 있다는 것을 아는 것이 중요하다. 어떤 디스크 제조업체는 1 킬로바이트가 1000바이트고 1메가바이트는 1000킬로바이트인 척하는 것을 좋아한다. 나머지 모든 컴퓨터세계에서는 모든 단위에 1024를 사용하지만 말이다. 그래서 345MB 하드디스크는 실제적으로 330MB 하드디스크이다. [1]

스왑디스크 할당은 the section called 스왑 공간 할당하기 in Chapter 5에서 설명한다.

하드디스크 할당의 예

난 109MB하드디스크를 가진 적이 있다. 지금 난 330MB하드디스크를 사용하고 있다. 이 디스크들을 어떻게 왜 분할했는지 설명할 것이다.

내 필요와 내가 사용하는 운영체제가 바뀔 때, 많은 방법들로 109MB디스크를 분할했다. 2개의 전형적인 시나리오를 설명할 것이다. 첫번째, 리눅스와 함께 MS-DOS를 돌렸다. 도스를 위해 약 20MB의 하드디스크, 다시 말하면 MS-DOS, C 컴파일러, 편집기, 약간의 다른 유틸리티, 내가 작업하는 중이던 프로그램을 갖기에 충분할 정도인 양과, 밀실공포증을 느끼지 않을 충분한 디스크 여유 공간를 필요로 했다. 리눅스를 위해 10MB의 스왑파티션을 가졌고, 나머지, 즉 79MB는 리눅스에 있는 모든 파일들을 담는 단일 파티션이었다. 루트파티션, /usr, /home을 분리한 적도 있으나, 흥미있는 일을 할 파티션에서 결코 충분한 여분의 디스크가 없었다.

더 이상 MS-DOS를 사용할 필요가 없어졌을 때, 디스크를 다시 분할해서 12MB의 스왑파티션과 나머지를 다시 단일 파일시스템으로 했다.

다음과 같이 330MB는 몇개의 파티션으로 나눴다.

5 MBroot 파일시스템
10 MB스왑 파티션
180 MB/usr 파일시스템
120 MB/home 파일시스템
15 MB막 쓰는 파티션

막 쓰는 파티션은 고유한 파티션을 요구하는, 예를 들어 다른 리눅스 배포본을 시도하기나 파일시스템의 속도를 비교하기같은 일을 수행하기 위해 있다. 다른 것에 필요로 하지 않을 때는 스왑공간으로 사용했다(난 윈도우를 많이 열어놓는 것을 좋아한다).

리눅스에 디스크공간을 더 추가하기

적어도 하드웨어가 적절히 설치된 후라면(하드웨어 설치는 이 책의 범위에서 벗어난다), 리눅스에 디스크공간을 더 추가하는 것은 쉽다. 필요하다면 포맷하고, 위에서 설명한 대로 파티션과 파일시스템을 만들고, /etc/fstab에 적절하게 줄을 추가시켜 줘서 파티션이 자동적으로 마운트되게 한다.

디스크 공간을 절약하기 위한 팁

디스크 공간을 절약하는 가장 좋은 팁은 필요없는 프로그램들을 설치하는 것을 피하는 것이다. 대부분의 리눅스 배포본은 배포본들이 포함하고 있는 패키지들의 일부만을 설치할 옵션을 지니고, 필요를 분석하면 패키지들중 대부분이 필요없다는 것을 알아낼 지도 모른다. 많은 프로그램들이 다소 크기 때문에, 불필요한 패키지를 설치하지 않는 것은 많은 디스크 공간을 절약하는데 도움을 줄 것이다. 특정한 패키지나 프로그램이 필요할 지라도, 그 패키지나 프로그램 모두가 필요하지는 않을 것이다. 예를 들어, 어떤 온라인 문서, GNU Emacs의 Elisp파일들의 일부, X11 폰트의 일부, 프로그래밍을 위한 라이브러리의 일부는 불필요할 것이다.

만약 패키지를 삭제할 수 없다면, 압축을 알아볼 수도 있을 것이다. gzip이나 zip같은 압축 프로그램들은 각각의 파일들이나 파일의 묶음들을 압축(그리고 압축풀기)을 할 것이다. gzexe 시스템은 사용자에게 보이지 않게 프로그램들을 압축하고 압축을 풀 것이다(사용되지 않는 프로그램은 압축되고, 프로그램이 사용되면 압축을 푼다). 실험적인 Double 시스템은 파일시스템에 있는 그 파일들을 사용하는 프로그램 모르게 모든 파일들을 압축할 것이다. (MS-DOS에 있는 Stacker같은 제품에 친숙하다면 원리는 같다.)

Notes

[1]

Sic transit discus mundi.. 세상의 디스크들은 이렇게 물건너갔다..