![]() | 알림 |
|---|---|
이 부록은 x86 기반이 아닌 구조에는 적용되지 않지만 여기서 설명된 일반적인 개념은 적용될 수도 있습니다. |
디스크 파티션은 개인용 컴퓨터 (PC)의 기본적인 부분이며 오랫동안 그렇게 여겨져 왔습니다. 하지만 워낙에 많은 사용자들이 이미 운영체제가 설치되어 있는 컴퓨터를 구입해 왔기 때문에 비교적으로 소수의 사람들만이 파티션이 어떻게 이루어지는지를 이해하고 있습니다. 이 장에서는 왜 파티션을 사용해야 하며 어떻게 디스크 파티션이 이루어지는 지를 설명하여 여러분이 최대한 쉽고 간단하게 Red Hat Enterprise Linux 설치하실 수 있도록 도와드릴 것입니다.
이미 디스크 파티션에 익숙하시다면, C.1.4 절으로 건너 뛰어서 Red Hat Enterprise Linux 설치를 위해 디스크 공간 만드는 과정에 대한 자세한 정보를 얻으실 수 있습니다. 이 섹션에서는 또한 Linux 시스템에서 어떤 이름들이 파티션에서 사용되는지, 다른 운영 체제와 디스크 공간을 어떻게 공유하는지 등의 관련 사항들이 다루어질 것입니다.
하드 디스크는 매우 단순한 기능을 수행합니다. — 하드 디스크는 데이터를 저장하며, 명령에 따라 안전하게 사용자에게 그 데이터를 가져다 줍니다.
디스크 파티션과 같은 사항에 대해 이야기할 때에는 그 밑바탕이 되는 하드웨어에 대해 조금이라도 알아두셔야 합니다. 너무 자세한 사항들은 여러분을 혼란스럽게 할 수 있습니다. 따라서, 간단한 그림을 통해 디스크 드라이브가 파티션되면 어떤 일이 일어나는지를 쉽게 설명하려고 합니다. 그림 C-1은 사용된 적이 없는 새 드라이브 디스크를 보여주고 있습니다.
그다지 볼만한 것이 없습니다, 그렇지 않습니까? 그러나 가장 기본적인 단계에서 디스크 드라이브를 얘기한다면, 이것으로 충분합니다. 이 디스크에 데이터를 저장한다고 합시다. 현재 상태로는 저장이 불가능합니다. 먼저 해야할 일이 있습니다…
컴퓨터를 얼마정도 사용해 보신 분이라면, 이미 아셨을 것입니다. 드라이브를 포맷 (format)해야 한다는 걸 말입니다. 포맷하기 (통상, "파일 시스템(file system) 만들기")에서는, 드라이브에 정보를 쓰며, 포맷되지 않은 빈 공간의 순서를 준비할 것입니다.
그림 C-2에서 볼 수 있듯이, 파일 시스템으로 인해 만들어진 순서에는 다음과 같은 몇가지 단점이 있습니다:
드라이브의 일부 공간이 파일 시스템 관련 데이터를 저장하는 데 사용되므로 이것은 오버헤드(overhead)라 할 수 있습니다.
파일 시스템은 남은 공간을 작고 일정한 크기의 부분들로 나눕니다. Linux에서는, 이러한 부분들을 블록(blocks)이라고 부릅니다. [1]
파일 시스템을 통해서 디렉토리와 파일이 있을 수 있다는 점을 감안할 때, 이러한 단점들은 사소하다고 할 수 있습니다.
또한 기억해 두셔야할 것은 하나의 보편화된 파일 시스템이란 없다는 것입니다. 그림 C-3에서 보여지듯이, 디스크 드라이브 상에는 여러 다른 파일 시스템들 중에서 한가지 파일 시스템이 기록되어 있을 수 있습니다. 이미 추측하신 것처럼, 다른 파일 시스템들은 호환이 되지 않는 경향이 있습니다; 즉, 한 운영 체제가 특정 파일 시스템(또는 여러 관련 파일 시스템 타입)을 지원한다면 다른 파일 시스템들은 지원되지 않을 수 있습니다. 그러나 이것은 불변의 법칙은 아닙니다, 예를 들면, Red Hat Enterprise Linux는 (다른 운영 체제에 의해 자주 사용되는 많은 파일 시스템을 포함한) 여러 다양한 파일 시스템을 지원하여, 다른 파일 시스템 사이에서도 데이터 교환이 쉽게 이루어 질 수 있도록 해줍니다.
물론 디스크에 파일 시스템을 기록하는 것은 단지 시작에 불과합니다. 이러한 과정의 목표는 실제로 데이터를 저장하고 검색하는 것입니다. 몇개의 파일들이 기록된 후의 드라이브를 살펴보도록 합시다.
그림 C-4에서, 이전에 비어있었던 블록들 중의 일부가 현재 데이타를 가지고 있는 것을 볼 수 있습니다. 그러나, 이 그림을 보는 것 만으로는 도대체 얼마나 많은 파일들이 이 드라이브 상에 존재하는지 알 수 없습니다. 모든 파일이 최소 한개의 블록을 사용하거나 혹은 몇개의 파일들이 여러 블록을 사용할 수도 있으므로, 드라이브 상에 파일이 한개 또는 여러 개가 존재할 가능성이 있습니다. 또 다른 한가지 기억하셔야 할 것은 사용되지 않은 블록이 같이 한 곳에 모여있어야 할 필요는 없다는 것입니다; 사용된 블록과 사용되지 않은 블록들이 흩어져 있을 수도 있습니다. 이것은 단편화 (fragmentation)로 알려져 있습니다. 단편화는 기존 파티션의 크기를 재조정하려고 할 때 사용됩니다.
대부분의 컴퓨터 관련 기술처럼, 디스크 드라이브도 처음으로 소개된 이후 시간에 따라 계속 변화해 왔습니다. 특히, 더욱 커졌다고 할 수 있습니다. 눈에 보이는 크기가 아니라 정보를 저장하는 용량이 커졌다는 것입니다. 그리고 추가적인 용량 증가로 인해 디스크 드라이브가 사용되는 방식에 근본적인 변화가 생겼습니다.
디스크 드라이브의 용량이 커져감에 따라, 일부 사람들은 모든 포맷된 공간을 한 곳에 저장하는 것이 좋은 생각인지에 대한 의구심을 가지기 시작했습니다. 이러한 생각은 이성적인 이유와 기술적인 이유에서 비롯 되었습니다. 이성적인 면에서는, 일정 용량을 초과하면 용량이 커진 드라이브가 제공하는 추가 공간은 더 많은 혼란을 가져온다는 것입니다. 기술적인 면에서는, 일부 파일 시스템은 일정 용량 이상은 지원할 수 없게 디자인되었다는 것입니다. 혹은 파일 시스템이 대단한 용량의 큰 드라이브를 지원할 수 있다 하여도, 그 파일 시스템이 파일들을 추적하는데 사용하는 오버헤드는 과도하다 할 수 있습니다.
이러한 문제점에 대한 해결책은 디스크를 파티션 (Partition)으로 분할하는 것입니다. 각각의 파티션은 마치 별개의 디스크처럼 취급됩니다. 이것은 파티션 테이블(Partition table)을 추가함으로서 이루어 집니다.
![]() | 알림 |
|---|---|
이 장에 나오는 그림에서는 파티션 테이블이 실제 디스크 드라이브와 별개인 것처럼 보여집니다. 그러나 이것이 전부 다 정확하다고 할 수는 없습니다. 실제로, 파티션 테이블은 어떤 파일 시스템이나 사용자 데이타 이전에 디스크 가장 처음에 저장됩니다. 하지만 쉬운 설명을 위해, 여기 그림에서는 별개로 취급하기로 합니다. |
그림 C-5에서 보여지듯이, 파티션 테이블은 4 부분으로 분할되어 있습니다. 각 부분은 단독 파티션을 정의하기 위하여 필요한 정보를 저장할 수 있으며 따라서 파티션 테이블은 4개의 파티션을 정의할 수 없음을 의미합니다.
각 파티션 테이블의 항목은 파티션의 여러 중요한 특성들을 포함하고 있습니다:
디스크에서 파티션이 시작하고 끝나는 지점들
파티션의 "활성화" 여부
파티션 타입
이러한 특성들 각각에 대해 더 자세히 알아보도록 합시다. 시작하는 지점과 끝나는 지점은 실제로 파티션의 크기와 디스크 상 위치를 지정합니다. "활성화(active)" 플래그(flag)는 몇몇 운영 체제의 부트 로더에 의해 사용됩니다. 다른 말로 하면, 파티션 내에서 "활성화"라고 표시된 운영 체제만이 부팅된다는 것입니다.
파티션 타입은 약간 혼동될 수 있습니다. 타입은 파티션의 예상 사용량을 나타내는 숫자입니다. 이 말이 막연하게 들린다면 그것은 아마도 파티션 타입의 의미 자체가 약간 막연하기 때문입니다. 일부 운영 체제들은 파티션 타입을 이용하여 특정 파일 시스템 타입을 나타내고, 특정한 운영 체제와 관련된 파티션을 플래그하며, 부팅 가능한 운영 체제를 포함하는 파티션을 표시합니다.
이 시점에서 여러분은 이러한 모든 복잡한 파티션 유형 이 어떻게 사용되는지 궁금하실 것입니다. 한가지 예로서 그림 C-6을 보십시오.
많은 경우에 오직 단독 파티션만이 파티션 이전에 사용되었던 방식을 복제하면서 전체 디스크를 메꾸고 있습니다. 파티션 테이블에서는 오직 한가지 항목만이 사용되며 그것은 파티션의 시작을 가르킵니다.
우리는 이번 파티션을 "DOS" 타입으로 분류 했습니다. 이것은 비록 표 C-1에 열거된 여러 파티션 타입 목록들 중의 하나에 불과하지만, 본 설명을 위해서는 적당하다고 생각됩니다.
표 C-1에는 자주 사용되면서도 애매한 일부 파티션 타입과 숫자값의 목록이 포함되어 있습니다.
| 파티션 타입 | 값 | 파티션 타입 | 값 |
|---|---|---|---|
| Empty | 00 | Novell Netware 386 | 65 |
| DOS 12-bit FAT | 01 | PIC/IX | 75 |
| XENIX root | 02 | Old MINIX | 80 |
| XENIX usr | 03 | Linux/MINUX | 81 |
| DOS 16-bit <=32M | 04 | Linux swap | 82 |
| Extended | 05 | Linux native | 83 |
| DOS 16-bit >=32 | 06 | Linux extended | 85 |
| OS/2 HPFS | 07 | Amoeba | 93 |
| AIX | 08 | Amoeba BBT | 94 |
| AIX bootable | 09 | BSD/386 | a5 |
| OS/2 Boot Manager | 0a | OpenBSD | a6 |
| Win95 FAT32 | 0b | NEXTSTEP | a7 |
| Win95 FAT32 (LBA) | 0c | BSDI fs | b7 |
| Win95 FAT16 (LBA) | 0e | BSDI swap | b8 |
| Win95 Extended (LBA) | 0f | Syrinx | c7 |
| Venix 80286 | 40 | CP/M | db |
| Novell | 51 | DOS access | e1 |
| PPC PReP 부트 | 41 | DOS R/O | e3 |
| GNU HURD | 63 | DOS secondary | f2 |
| Novell Netware 286 | 64 | BBT | ff |
표 C-1. 파티션 타입
물론 시간이 흐르면서 4개의 파티션으로는 충분하지 않다는 사실이 분명해 졌습니다. 디스크 드라이브가 계속 증가해가면서, 사람의 능력으로 4개의 합리적인 크기의 파티션을 설정하고 또 디스크 공간을 남겨놓는 것이 더욱 힘들어진 것입니다. 따라서 더 많은 파티션을 생성할 수 있는 방법이 필요해 졌습니다.
확장된 파티션을 입력하십시오. 아마 표 C-1에서 이미 눈치 채셨듯이, "확장된" 파티션 타입을 찾으실 수 있습니다. 이것이 바로 확장된 파티션의 심장부라 할 수 있는 파티션 타입입니다.
파티션이 생성되면 그 타입은 "확장됨(Extended)"으로 설정되며, 확장된 파티션 테이블이 작성됩니다. 원래 확장된 파티션은 그것만으로 디스크 드라이브와 유사합니다 — 확장된 파티션은 그 안에 완전히 속해있는 한개나 그 이상의 파티션들 (4 개의 기본 파티션(Primary partition)에 반하여 현재 논리 파티션(logical partition)라고 불리우는 파티션들)을 가리키는 파티션 테이블을 가지고 있습니다. 그림 C-7은 한개의 기본 파티션과 두개의 논리 파티션 (더불어 약간의 파티션되지 않은 빈 공간)을 포함하는 하나의 확장된 파티션을 가지고 있는 디스크 드라이브를 보여줍니다.
이 그림에서 보여지듯이 기본 파티션과 논리 파티션 사이에는 차이점이 존재합니다 — 기본 파티션은 오직 4개 까지 있을 수 있지만, 존재할 수 있는 논리 파티션의 숫자에는 한계가 정해져 있지 않습니다. 그러나 현실적으로 리눅스에서 파티션이 사용되는 방식으로 인해 단독 디스크 드라이브 상에 12개 이상의 논리 파티션을 정의하거나 사용하는 것은 좋은 생각이 아닙니다.
지금까지 파티션에 대해 기본적인 이야기를 해보았습니다. 이제 Red Hat Enterprise Linux의 설치를 위해서 지금까지 익힌 내용을 어떻게 사용할 수 있는지 알아봅시다.
하드 디스크를 재파티션하려고 하실때 직면하게 될 세가지 시나리오가 있습니다:
파티션되지 않은 빈 공간이 있는 경우
사용되지 않은 파티션 있는 경우
활발하게 사용 중인 파티션 내에 사용 가능한 빈 공간이 있는 경우
각각의 시나리오를 순서대로 살펴봅시다.
![]() | 알림 |
|---|---|
다음에 나오는 그림은 명확하고 쉬운 묘사를 위하여 단순화된 것이니 실제로 Red Hat Enterprise Linux를 설치하실 때 보시게 될 정확한 파티션 배치는 아니라는 것을 기억해 주십시오. |
이 경우에 이미 정의된 파티션은 전체 하드 디스크를 채우고 있지 않으며, 어느 정의된 파티션에도 속하지 않는 할당되지 않은 (unallocated) 공간을 남겨둡니다. 그림 C-8을 보시면 이것이 어떻게 나타날지 알 수 있습니다.
그림 C-8에서 1은 할당되지 않은 공간이 있는 정의되지 않은 파티션을 의미하고 2는 할당된 공간이 있는 정의된 파티션을 나타냅니다.
생각해보시면, 사용되지 않은 하드 디스크 또한 이 범주에 속합니다. 단 한가지 차이점은 모든 공간이 어떤 정의된 파티션에도 속하지 않는다는 것입니다.
다음으로, 조금 더 보편화된 상황에 대해 설명하도록 하겠습니다.
이 경우에 여러분은 더 이상 사용하지 않는 한 개나 그 이상의 파티션을 가지고 계실 것입니다. 아마도 과거에 다른 운영 체제를 가지고 있다가 그 운영 체제에 부여한 파티션이 더 이상 사용되지 않고 있을 수도 있습니다. 그림 C-9에서 그러한 상황을 묘사하고 있습니다.
그림 C-9에서 1은 사용되지 않은 파티션을 의미하며 2는 사용되지 않은 파티션을 리눅스 용으로 재할당하는 것을 나타냅니다.
만일 여러분이 이러한 경우라고 생각되시면, 사용되지 않은 파티션에 공간을 할당하여 사용할 수 있습니다. 먼저 그 파티션을 삭제하신 후 그 공간에 적절한 리눅스 파티션(들)을 만드십시오. 수동으로 그 파티션을 삭제하시거나 또는 설치 과정에서 파티션을 직접 생성할 기회가 주어집니다. 새로운 파티션을 생성하기 전에 그 파티션을 삭제해 주십시오.
Linux는 디스크 파티션을 문자와 숫자의 조합으로 나타내며 이러한 방식은 특히 하드 디스크와 파티션을 "C 드라이브"로 부르는 데 익숙한 사용자에겐 혼란스럽게 느껴질 것입니다. DOS/Windows에서는 다음과 같은 방식으로 파티션의 이름을 지정합니다:
DOS/Windows가 읽을 수 있는지 알아보기 위해 각각의 파티션의 타입을 검사합니다.
만일 그 파티션 타입이 호환 가능하다면, "드라이브 문자"를 배정합니다. 드라이브 문자는 "C"로 시작해서 이름을 지정해줄 파티션의 숫자에 따라서 다음에 오는 문자를 지정받습니다.
그 다음에 오는 드라이브 문자는 해당 파티션과 그 파티션에 포함된 파일 시스템을 지칭하는데 사용됩니다.
Red Hat Enterprise Linux는 다른 운영 체제들이 사용하는 것보다 더욱 유연하면서 보다 많은 정보를 전달할 수 있는 이름 지정 스키마를 사용합니다. 이러한 이름 지정 스키마는 파일 기반이며 /dev/xxyN와 같은 형식의 파일 이름을 사용합니다.
위의 파티션 이름 지정 스키마에 대한 해석 방법은 다음과 같습니다:
이것은 모든 장치 파일이 들어있는 디렉토리의 이름을 뜻합니다. 파티션은 하드 디스크 상에 있으며, 그 하드 디스크는 장치이므로, 가능한 모든 파티션을 나타내는 파일들은 /dev/에 존재합니다.
파티션 이름의 첫 두 글자는 파티션이 존재하는 장치의 타입을 나타냅니다. 보통 hd (IDE 디스크) 또는 sd (SCSI 디스크)로 나타납니다.
이 문자는 어떤 장치위에 파티션이 있는지 나타냅니다. 예를 들면, /dev/hda (첫번째 IDE 하드 디스크) 또는 /dev/sdb (두번째 SCSI 디스크).
마지막 숫자는 파티션을 표시합니다. 처음 4개의 (기본 또는 확장된) 파티션들은 1 에서 4까지 숫자로 지정됩니다. 논리 파티션은 5에서 시작합니다. 따라서, 예를 들면, /dev/hda3는 첫번째 IDE 하드 디스크 상의 세번째 기본 또는 확장된 파티션을 나타내며 /dev/sdb6는 두번째 SCSI 하드 디스크 상의 두번째 논리 파티션을 나타냅니다.
![]() | 알림 |
|---|---|
파티션 타입에 기초한 이름 지정 관례는 없습니다; DOS/Windows 와는 달리, Red Hat Enterprise Linux에서 모든 파티션들을 식별 가능합니다. 물론, Red Hat Enterprise Linux가 모든 파티션 타입의 데이터에 접근할 수 있다는 의미는 아닙니다, 하지만 많은 경우에 다른 운영 체제에 부여된 파티션의 데이터에 접근이 가능하다는 것입니다. |
앞에서 설명된 정보를 머릿 속에 새겨 두십시오. Red Hat Enterprise Linux에 필요한 파티션을 설정시 훨씬 이해하기가 쉬울 것입니다.
만일 Red Hat Enterprise Linux 파티션이 다른 운영 체제가 사용하고 있는 파티션의 하드 드라이브를 공유하게 된다해도 대부분의 경우 아무런 문제가 없습니다. 하지만 리눅스와 일부 다른 운영 체제의 조합에는 각별한 주의가 요구됩니다.
리눅스를 처음 사용하시는 분들이 가장 혼란스러워 하는 문제는 어떻게 파티션을 사용하고 리눅스 운영 체제가 어떻게 파티션에 접근하는지에 대해서 입니다. DOS/Windows에서는 비교적 간단합니다: 각각의 파티션은 "드라이브 문자"를 갖습니다. 그후 여러분은 정확한 드라이브 문자를 사용하여 상응하는 파티션의 파일과 디렉토리를 알아낼 수 있습니다.
이것은 일반적으로 리눅스가 파티션과 디스크 기억 장치를 다루는 방법과는 전혀 다릅니다. 주요 차이점은 개별 파티션을 사용하여 파일과 디렉토리의 단독 세트를 지원하는데 필요한 기억 장치의 일부를 형성한다는 점입니다. 이것은 마운팅 (mounting) 과정을 통하여 디렉토리와 파티션을 결합시킴으로서 가능합니다. 파티션을 마운팅함으로서 마운트 지점 (mount point)으로 알려진 지정 디렉토리의 시작에서 그 파티션의 기억 장치가 사용 가능해집니다.
예를 들어, 만일 /dev/hda5 파티션이 /usr/에서 마운트 되었다면, /usr/ 하의 모든 파일들과 디렉토리들은 /dev/hda5 위로 옮겨질 것입니다. 따라서 /usr/share/doc/FAQ/txt/Linux-FAQ 파일은 /dev/hda5에 저장되는 반면에 /etc/X11/gdm/Sessions/Gnome은 그렇지 않습니다.
앞의 예시에서 /usr/ 밑에 위치한 한 개 이상의 디렉토리가 다른 파티션들의 마운트 지점이 될 수도 있습니다. 예를 들면, 한 파티션 (/dev/hda7라고 합시다)이 /usr/local/ 에 마운트될 수 있고 그렇다면 /usr/local/man/whatis 는 /dev/hda5 대신에 /dev/hda7 위에 있게 됩니다.
Red Hat Enterprise Linux 설치 준비 시점에서, 여러분은 새로운 운영 체제가 사용할 파티션의 숫자와 크기를 미리 염두해 두셔야 합니다. 리눅스 커뮤니티 내에서도 "파티션 숫자"에 대한 논쟁이 계속되고 있으며, 그 곳에서 언급되는 수치 만큼 많은 파티션 배치 (layout)가 존재한다고 해도 과언이 아닐 것입니다.
특별히 다른 이유가 있지 않는 한 반드시 다음에 나오는 파티션들을 생성하시기 권장합니다: swap, /boot/ (/boot/ 파일은 pSeries 시스템에서만 필요하며 iSeries 시스템에서는 필요하지 않습니다), PPC PReP Boot, / (root). V5R2 이후 버전 OS/400에서는 새로운 가상 디스크를 동적으로 추가 가능합니다.
보다 많은 정보를 원하신다면, 2.15.4 절을 참조하시기 바랍니다.
| [1] | 블록은 우리가 생각하고 있는 것과 달리 정말로 일정한 크기로 되어 있습니다. 또한 보통 디스크 드라이브는 수천개의 블록들을 포함하고 있다는 것을 명심해 주십시오. 하지만 이야기를 진행하기 위해서, 이러한 약간의 차이는 생각하지 않기로 합니다. |