Trans:GentooX86Handbook1-4

Gentoo Korea Wiki
둘러보기로 가기 검색하러 가기

디스크 준비하기

블록 장치 소개

블록 장치

이제 우리는 젠투 리눅스의 디스크 측면의 모습과 리눅스 파일시스템, 파티션, 블록 장치를 포함한 일반적인 리눅스의 모습을 취할 것입니다. 그 다음 디스크와 파일시스템의 이모저모에 익숙해지고 나면 젠투 리눅스 설치를 위한 파티션과 파일시스템의 처리과정을 안내받을 것입니다.

시작에 즈음하여 블록 장치를 소개하도록 하겠습니다. 가장 잘 알려진 블록 장치는 아마도 리눅스 시스템에서 첫 번째 드라이브로 나타나는 /dev/sda가 아닌가 싶습니다. SCSI와 직렬 ATA 드라이브들 모두 /dev/sd*로 표시합니다. 게다가 커널의 새로운 libata 프레임워크에서는 IDE 드라이브 조차도 /dev/sd*로 표시합니다.만약 오래된 장치 프레임워크를 사용한다면, 첫번째 IDE 드라이브는 /dev/hda 입니다.

위에 나타난 이 블록장치는 디스크의 추상 인터페이스입니다. 사용자 프로그램은 드라이브가 IDE인지 SCSI인지 그 말고 다른 장치인지 전혀 신경쓰지 않고 디스크와 상호작용하기 위해 이 블록 장치를 사용할 수 있습니다. 프로그램은 연속된, 임의 접근가능한 512 바이트 블록의 모음으로 디스크의 저장소에 주소를 지정할 수 있습니다.

파티션

리눅스 시스템을 저장하기 위해 이론적으로 디스크의 전체 구역을 사용할 수 있지만 실제로는 거의 그렇게 하지 못합니다. 대신 전체 디스크 블록장치는 작은 부분으로 나뉘어 좀 더 관리하기 쉬운 블록 장치가 됩니다. x86 시스템에서는 이를 파티션이라고 부릅니다.

파티션은 주 파티션, 확장 파티션, 논리 파티션 세 가지 형태로 나눕니다.

주 파티션은 MBR(주 부트 레코드)에 정보를 저장하는 파티션입니다. MBR 이 매우 작은(512 바이트) 만큼 네 개의 주 파티션만을 지정할 수 있습니다. (예를 들어 /dev/sda1 부터 /dev/sda4 까지 입니다).

확장 파티션은 더 많은 파티션을 포함할 수 있는 특별한 주 파티션(가능한 네 개의 주 파티션 중에 하나는 반드시 확장 파티션이 되어야 한다는 의미)입니다. 본래 어떤 파티션의 경우 존재할 수 없지만 네 개로는 부족할 때, 이전 호환성을 잃지 않고 구성계획을 확장할 수 있는 기회를 가져왔습니다.

논리 파티션은 확장 파티션 내부에 있는 파티션입니다. 이들 설정 내용은 MBR 안에 들어가 있지 않고 확장 파티션 안에 들어가 있습니다.

고급 저장장치

x86 설치 CD는 LVM2를 지원합니다. LVM2는 파티션 설정을 통해 유연성을 증대시킵니다. 설치 설명 중에, 우리는 "일반" 파티션에 초점을 맞추겠지만, LVM2을 지원한다는 사실에 대해 알고 있는 것 또한 좋습니다.

파티션 모양새 설계

기본 파티션 모양새

여러분의 시스템에 대한 파티션 모양새를 그려보는데 관심이 없다면, 이 책을 통해 우리가 사용한 파티션 모양새를 사용해보실 수도 있습니다.

파티션 파일시스템 사이즈 설명
/dev/sda1 ext2 32M 시동 파티션
/dev/sda2 (swap) 512M 스왑 파티션
/dev/sda3 ext3 디스크 나머지 공간 루트 파티션

파티션의 크기가 얼마나 되어야 하는지 심지어 얼마나 많은 파티션이 필요한지 알고 싶으시다면 계속 읽어내려가시기 바랍니다. 그렇지 않다면 fdisk를 사용하여 디스크 분할하기 또는 parted를 사용하여 디스크 분할하기 (둘 다 파티션 도구인데, fdisk는 잘 알려져 있고 안정적입니다. parted는 좀 최근에 나왔는데 2TB이상의 파티션을 지원합니다)를 읽어 분할을 계속 진행하도록 합니다.

얼마나 많이, 얼마나 크게 할까요?

많은 파티션들은 환경에 크게 의존합니다. 사용자가 많이 있다면 보안성을 증대하고 백업을 쉽게하기 위해 /home 을 따로 나누고 싶어할 것입니다. 젠투 시스템을 메일서버로 동작하게끔 하려면 /var에 모든 메일이 저장되므로 /var를 나눌 것입니다. 파일시스템에 대한 좋은 선택은 여러분이 가진 시스템의 성능을 극대화 할 것입니다. 게임서버라면 대부분의 게임 서버가 /opt에 설치 되므로 이것을 나눌 것입니다. 이유는 /home 과 비슷합니다. 보안과 백업이죠. /usr 는 커지는 그대로라도 유지하고 싶어할 것입니다. 주요 프로그램들이 들어가 있을 뿐만 아니라 다양한 소스코드를 제외한 500MB 가량의 포티지 트리들이 이 곳에 저장됩니다.

여러분이 아시는 바와 같이 여러분이 무엇을 저장하고 싶은지에 크게 달려있습니다. 각각의 파티션과 볼륨은 다음 장점을 지니고 있습니다

  • 각각의 파티션과 볼륨에 대해 가장 잘 동작하는 파일시스템을 선택할 수 있습니다.
  • 어떤 기능을 상실한 도구가 계속 파일을 기록하는 경우 빈 공간이 부족해져 전체 시스템을 동작할 수가 없습니다.
  • 필요한 경우 파일시스템 점검을 동시에 여러 부분에 대한 검사를 수행하여 시간을 줄입니다 (여러 파티션이 있을 때보단 여러 디스크가 있을 수록 좋겠지만).
  • 일부 파티션이나 볼륨을 읽기 전용, nosuid(setuid 비트를 무시합니다), noexec(실행 비트를 무시합니다) 등으로 마운트하여 보안성을 향상할 수 있습니다.

그러나 이 뿐만 아니라 여러 파티션을 나누면 단점이 있기도 합니다. 제대로 설정하지 않으면 어떤 파티션은 남은 공간이 많지만 어떤 파티션은 그렇지 않을 것입니다. 다른 귀찮은 것 하나는 나누어 놓은 파티션인데 특히 /usr나 /var같은 중요한 마운트 지점은 종종 관리자가 다른 시동 스크립트를 시작하기 전에 파티션에 마운트 하게끔 initramfs로 시동하는 것이 필요합니다. 비록 항상 일어나는 일은 아니지만요. 이렇게 다양한 이득이 있습니다.

SCSI 와 SATA에서는 GPT 레이블을 사용하지 않는한 15개의 분할구역 갯수 제한이 있습니다.

(웹서버, 메일서버, 그놈 등이 들어있는)시연 랩탑에서 보여드리기 위해 20GB 디스크에 대한 구역 분할의 예를 보여드리겠습니다:


코드 예제 2.1: 파일시스템 사용 예제
$ df -h
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/sda5     ext3    509M  132M  351M  28% /
/dev/sda2     ext3    5.0G  3.0G  1.8G  63% /home
/dev/sda7     ext3    7.9G  6.2G  1.3G  83% /usr
/dev/sda8     ext3   1011M  483M  477M  51% /opt
/dev/sda9     ext3    2.0G  607M  1.3G  32% /var
/dev/sda1     ext2     51M   17M   31M  36% /boot
/dev/sda6     swap    516M   12M  504M   2% <not mounted>

(나중에 사용하기 위해 남겨둔 용량: 2 GB)


/usr은 여기서는 용량이 차 있지 않(83% 사용)지만 모든 프로그램을 설치하면 /usr 사용량은 더이상 늘어나려고 하지 않을 것입니다. 비록 /var의 디스크 용량이 지나치게 적은 기가바이트의 용량을 할당한 것 같지만, 포티지가 꾸러미를 컴파일하는데 기본으로 이 파티션을 사용할 것임을 기억해 두시기 바랍니다. 만약 /var 를 1GB 용량 만큼 좀 더 합당한 공간을 유지하려면 /etc/make.conf에 PORTAGE_TMPDIR 변수를 통해 오픈오피스와 같은 엄청나게 큰 꾸러미를 컴파일하기 위해 충분한 빈 공간을 가진 파티션을 여러분이 가리킬 필요가 있을 것입니다.

fdisk를 사용하여 디스크 분할하기


중요: 2TB보다 큰 용량의 파티션을 다룰 환경이라면 parted를 사용하여 디스크 분할하기방법을 대신 이용해주시기 바랍니다. fdisk 는 대형 파티션을 다룰 수 없습니다.


다음 부분에서는 fdisk를 사용해서 어떻게 파티션 배치를 만드는지 설명합니다. 파티션 배치 예제는 앞에서 설명했습니다.

파티션 설명
/dev/sda1 시동 파티션
/dev/sda2 스왑 파티션
/dev/sda3 루트 파티션

여러분의 취향에 따라 파티션 배치를 바꿔보세요.

현재 파티션 배치 보기

fdisk는 여러분의 디스크를 파티션으로 나누는 잘 알려진 강력한 도구입니다. fdisk를 여러분의 디스크에 대해 실행합니다. (저희 같은 경우는 /dev/sda를 사용합니다)


코드 예제 3.1: fdisk 시작하기
# fdisk /dev/sda


fdisk를 실행하면 다음과 같은 프롬프트를 맞이하게 될 것입니다.


코드 예제 3.2: fdisk 프롬프트
Command (m for help):


p를 입력하여 현재 디스크의 파티션 설정을 표시합니다


코드 예제 3.3: 파티션 설정 예제
Command (m for help): p

Disk /dev/sda: 240 heads, 63 sectors, 2184 cylinders
Units = cylinders of 15120 * 512 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/sda1   *         1        14    105808+  83  Linux
/dev/sda2            15        49    264600   82  Linux swap
/dev/sda3            50        70    158760   83  Linux
/dev/sda4            71      2184  15981840    5  Extended
/dev/sda5            71       209   1050808+  83  Linux
/dev/sda6           210       348   1050808+  83  Linux
/dev/sda7           349       626   2101648+  83  Linux
/dev/sda8           627       904   2101648+  83  Linux
/dev/sda9           905      2184   9676768+  83  Linux

Command (m for help): 


이 디스크 부분은 ("Linux swap"으로 표시한)스왑 파티션과 ("Linux"라고 표시한 제각각의)7개의 Linux 파일시스템을 적재하도록 설정했습니다.

모든 파티션 제거

먼저 이 디스크에 있는 기존의 모든 파티션을 제거할 것입니다. 파티션을 삭제하려면 d를 입력합니다. 기존의 /dev/sda1를 삭제하는 것을 예로 들어보겠습니다.


코드 예제 3.4: 파티션 삭제
Command (m for help): d

Partition number (1-4): 1


파티션은 지워지는 것으로 계획되었습니다. p를 입력하면 더이상 보이지 않겠지만 여러분이 바꾼 내용을 저장하기 전에는 지워지지 않을 것입니다. 여러분이 실수를 했고 바꾼 내용을 저장하지 않고 멈추려면, q라고 바로 입력하고 Enter 키를 누르면 삭제하지 않을 것입니다.

이제 여러분이 시스템에 있는 모든 파티션을 싹 날리려고 한다면, p를 입력해서 파티션 목록을 출력하고 d를 입력해서 많은 파티션을 지우는 일을 반복합니다.이렇게 하면 파티션 테이블에 아무것도 남지 않은 상황으로 끝낼 것입니다.


코드 예제 3.5: 빈 파티션 테이블
Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot    Start       End    Blocks   Id  System

Command (m for help):


이제 메모리에 있는 파티션 테이블은 비어있고 파티션을 만들 준비가 되었습니다. 앞에서 설명한대로 기본 파티션 모양새를 사용할 것입니다. 물론 여러분이 똑같은 파티션 모양새를 쓰고 싶지 않다면 글자 그대로의 방법을 따라가지 않아도 됩니다.

부트 파티션 만들기

먼저 작은 부트 파티션을 만들어보겠습니다. n을 입력하여 새로운 파티션을 만들고 p를 입력하여 주 파티션을 선택한 다음 첫번째 주 파티션을 선택하기 위해 1을 입력합니다. 첫번째 실린더를 물어볼 때, Enter키를 누르고, 32MB 크기의 파티션을 만들기 위해 +32M를 입력한 다음 시동가능 플래그를 설정합니다.


코드 예제 3.6: 부트 파티션 만들기
Command (m for help): n

Command action
e extended
p primary partition (1-4)
p

Partition number (1-4): 1

First cylinder (1-3876, default 1): (Enter를 칩니다)

Using default value 1

Last cylinder or +size or +sizeM or +sizeK (1-3876, default 3876): +32M


이제 p를 입력하면 다음 파티션 출력 결과를 보실 것입니다.


코드 예제 3.7: 만들어 놓은 부트 파티션
Command (m for help): p

Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/sda1             1        14    105808+  83  Linux


시동 가능한 파티션으로 만들어야 합니다. 파티션의 시동가능 플래그를 바꾸기 위해 a를 입력하고, 1을 선택합니다. 다시 p를 입력하면 Boot 칸에 * 이 찍힌 것을 보실 수 있을 것입니다.

스왑 파티션 만들기

이제 스왑 파티션을 만들어보도록 하겠습니다. 스왑 파티션을 만들려면 새 파티션을 만들기 위해 n을 입력하고, 주 파티션을 원한다는 것을 알리기 위해 p를 입력합니다. 그 다음 우리 같은 경우에는 /dev/sda2, 즉 두번째 주 파티션을 만들기 위해 2를 입력합니다. 첫번째 실린더를 물어볼 때 Enter키를 누릅니다. 마지막 실린더를 물어볼 때 512MB 크기의 파티션을 만들기 위해 +512M를 입력합니다. 이 과정이 끝나면 파티션 형식을 설정하기 위해 t를 입력하고, 여러분이 만든 파티션인 2를 입력하신 다음, 파티션 형식을 "Linux Swap"으로 설정하기 위해 82를 입력합니다. 이 과정이 끝나면, p를 입력하여 다음과 같이 보이도록 합니다.


코드 예제 3.8: 스왑 파티션을 만든 후의 파티션 목록
Command (m for help): p

Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/sda1   *         1        14    105808+  83  Linux
/dev/sda2            15        81    506520   82  Linux swap


루트 파티션 만들기

마지막으로 루트 파티션을 만들어보도록 하겠습니다. 루트 파티션을 만들려면 새 파티션을 만들기 위해 n을 입력하고, 주 파티션을 원한다는 것을 알리기 위해 p를 입력합니다. 그 다음 우리 같은 경우에는 /dev/sda3, 즉 세번째 주 파티션을 만들기 위해 3을 입력합니다. 첫번째 실린더를 물어볼 때 Enter키를 누릅니다. 마지막 실린더를 물어볼 때 Enter키를 눌러서 여러분의 디스크의 남은 용량으로 파티션을 만들게 합니다. 이 과정이 모드 끝나면 p를 입력하여 다음과 같이 보이도록 합니다.


코드 예제 3.9: 루트 파티션을 만든 후의 파티션 목록
Command (m for help): p

Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/sda1   *         1        14    105808+  83  Linux
/dev/sda2            15        81    506520   82  Linux swap
/dev/sda3            82      3876  28690200   83  Linux


파티션 배치 저장하기

파티션 배치를 저장하고 fdisk를 빠져나가려면 w를 입력합니다.


코드 예제 3.10: 저장하고 fdisk 나가기
Command (m for help): w


이제 파티션이 만들어졌으니, 파일시스템 만들기로 계속 진행하도록 하겠습니다.

parted를 사용하여 디스크 분할하기

이 장에서는 앞의 설명에서 보여준 파티션 배치 예제를 만들도록 안내할 것입니다. 이전 장과는 달리 parted 프로그램을 대신 사용하는 방법을 설명할 것입니다. partedfdisk는 같은 기능을하므로 fdisk를 사용해서 이미 시스템의 파티션을 나누었다면 이 장을 건너뛰고 파일시스템 만들기로 계속 진행할 수 있습니다.

우리가 사용할 파티션 배치 예제를 다음 표로 보여드리겠습니다

파티션 설명
/dev/sda1 시동 파티션
/dev/sda2 스왑 파티션
/dev/sda3 루트 파티션

여러분의 취향에 따라 파티션 배치를 바꿔보세요.

현재 파티션 배치 보기

parted프로그램은 fdisk의 다양한 면에 있어서 좀 더 최신의 면을 갖추고 있습니다. 여러분의 디스크에 대해 파티션을 나누는데 더 간단한 인터페이스를 제공하며 매우 큰 파티션(2 TB 이상)을 지원합니다. 디스크에서 parted를 여러분의 디스크에 대해 실행합니다.(저희 같은 경우는 /dev/sda를 사용합니다)


코드 예제 4.1: parted 시작하기
# parted /dev/sda

GNU Parted 2.3 Using /dev/vda Welcome to GNU Parted! Type 'help' to view a list of commands.


parted에서 지원하는 모든 옵션 보시려면 help를 입력하고 Return키를 누릅니다. 이제 선택한 디스크에 대해 현재 사용하고 있는 파티션을 보여달라고 parted에 요청하는 단계로 계속할 차례입니다. 사용중인 파티션을 보기 위해 print 명령을 사용할 수 있습니다.


코드 예제 4.2: parted가 보여주는 파티션 설정 예제
(parted) print
Model: SCSI Block Device
Disk /dev/sda: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system     Flags
 1      512B    2148MB  2148MB  primary  ext4
 2      2148MB  3222MB  1074MB  primary  linux-swap(v1)
 3      3222MB  21.5GB  18.3GB  primary                  lvm


선택 사항: GPT 레이블 설정하기

x86/amd64의 대부분의 디스크는 msdos레이블을 사용하여 준비합니다. 그러나 큰 파티션(2 TB이상)을 만들려면 여러분의 디스크에 gpt (GUID 파티션 형식)레이블을 사용해야 합니다. parted를 사용하면 mklabel gpt}} 명령으로 소기의 목적을 달성할 수 있습니다.


주의: 파티션 형식을 바꾸면 디스크의 모든 파티션을 지울 것입니다. 디스크의 모든 데이터를 잃을 것입니다



코드 예제 4.3: GPT 레이블 설정하기
(parted) mklabel gpt


모든 파티션 제거하기

(mklabel 실행을 미리 했다거나, 디스크를 새로 포맷한 이유로) 아직 끝나지 않았다면, 디스크에서 기존의 모든 파티션을 제거해야 합니다. rm <number>를 입력합니다. <number>에는 삭제하려는 파티션의 번호가 들어갑니다.


코드 예제 4.4: 디스크에서 파티션 삭제하기
(parted) rm 2


필요없는 다른 모든 파티션에 대해서도 같은 동작을 수행합니다. 그러나 여기서 실수 한게 있는지 확인해보시기 바랍니다. parted는 바꾼 내용을 바로 실행합니다 (내린 명령을 쌓아두고 fdisk에서 저장하고 나가기 전에 바꾼 내용을 "되돌리기"할 수 있게 하는 fdisk와는 다릅니다).

파티션 만들기

이제 이전에 보여준 파티션을 만들어보도록 하겠습니다 parted로 파티션을 만드는 것은 그다지 어렵지 않습니다. 우리가 할 필요가 있는 모든 것은 다음 설정에 대해 parted가 알려줄 것입니다.

  • 사용할 파티션 형식입니다. 보통 파티션 갯수를 (msdos 파티션 레이블을 붙여서) 네 개를 넘기지 않는 경우에 파티션이 됩니다. 이 경우가 아니라면 디스크의 나머지 영역을 제공하는 네번째 확장 파티션을 만들고 그 안에 논리 파티션을 만들 필요가 있을 것입니다. gpt 레이블을 붙인 파티션을 사용한다면 주 파티션의 갯수에는 제한이 없습니다.
  • 사용할 파일시스템 형식입니다. parted 프로그램에서는 대부분의 일반 파일 시스템을 지원하며 이 파티션에서 사용할 필요가 있는 파티션 ID의 종류를 알고 있습니다. 이는 parted 가 파일 시스템을 파티션에 만들것이다라는 의미가 아닙니다 (mkpartfs 명령으로 할 수 있지만 보통 이런 목적으로는 mkfs.* 명령을 사용할 것입니다). 파티션 ID는 각각의 파티션과 뭘 할지 파악할 자동 감지 도구에서 사용합니다.
  • 파티션의 시작 위치(MB 또는 GB 단위로 표현할 수 있습니다)
  • 파티션의 마지막 위치(MB 또는 GB 단위로 표현할 수 있습니다)

parted의 또 다른 장점중 하나는 여러분이 보실 다음 예제와 같이 올바른 시작위치와 끝 위치를 자동으로 찾아서 파티션 크기를 쉽게 사용할 수 있는 것입니다.


코드 예제 4,5: 파티션 만들기
# 32MB /boot 파티션을 만듭니다

(parted) mkpart primary ext2 0 32mb
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? i

# 512MB 스왑 파티션을 만듭니다
(parted) mkpart primary linux-swap 32mb 542mb

# 남은 공간에 대한 파티션을 만듭니다.
# -1s (음의 부호, 하나, s)는 디스크의 마지막을 의미합니다
(parted) mkpart primary ext4 542mb -1s
Warning: You requested a partition from 542MB to 21.5GB.
The closest location we can manage is 542MB to 21.5GB.
Is this still acceptable to you? Yes/No? y


이제 모든 것이 기대하던대로 되었는지 확인하기 위해 파티션 배치를 다시 한 번 print 할 수 있습니다. 결과에 만족한다면, parted를 빠져나가기 위해 quit명령을 사용합니다.

파일시스템 만들기

이제 파티션을 만들었다면 만들어놓은 파티션에 파일시스템을 올려놓을 차례입니다. 어떤 파일시스템을 선택할 것인지 신경쓰지 않고 저희가 사용하는 핸드북에 있는 기본 그대로를 쓰는 것이 좋다면 파티션에 파일시스템 적용하기로 넘어가도록 합니다. 그렇지 않으면 사용할 수 있는 파일시스템이 어떤것이 있는지 알아보기 위해 계속 읽어내려가보세요.

파일시스템

리눅스 커널에서는 다양한 파일시스템을 지원합니다. 저의는 리눅스 시스템에서 보통 사용하는 파일시스템으로서 ext2, ext3, ext4, ReiserFS, XFS, JFS를 설명할 것입니다.

ext2는 시도가 있던 진정한 리눅스 파일시스템이지만 메타데이터 저널링기능이 없습니다. 이는 시작시간의 파일시스템 검사루틴에서 조금 더 많은 시간소모를 할 수 있다는 의미입니다. 이제 일관성 검사를 더욱 빠르게 할 수 있고 비 저널링의 대체 수단으로써 일반적으로 더욱 선호하는 차세대 저널링 파일시스템의 상당한 선택요소가 있습니다. 저널링 파일시스템은 여러분이 시스템을 시동하고 파일시스템에 비일관 상태가 발생했을 때 긴 지연시간을줄입니다. 젠투를 (4GB 보다 작은)아주 작은 용량의 디스크에 설치한다면 여러분이 파일시스템을 만들때 충분한 양의 inode를 예약하기 위해 ext2에게 요청할 필요가 있을 것입니다. mke2fs 프로그램은 파일시스템이 가져야 할 inote 수를 계산하기 위해 "inode당 바이트 수" 설정을 사용합니다. mke2fs -T small /dev/<device> 를 실행하면 주어진 파일시스템에서 수많은 inode에 대해 inode 하나당 16kB 에서 4kB로 "inode당 바이트 수"가 1/4로 줄어듭니다. mke2fs -i <ratio> /dev/<device> 명령을 사용하면 이후 설정을 조절할 수 있습니다.

ext3는 빠른 복구를 위한 메타데이터 저널링을 제공하며, 게다가 전체 데이터와 정렬된 데이터 저널링과 같은 강화 저널링 모드도 지원하는 ext2 파일시스템의 저널링 버전입니다. 대부분의 모든 상황에서 고성능 동작이 가능한 HTree 색인을 사용합니다. 간단히 말해 ext3는 아주 좋은 믿을 수 있는 파일시스템입니다. ext3을 모든 목적의 모든 플랫폼 파일시스템으로 추천합니다. 젠투를 (4GB 보다 작은) 매우 작은 디스크에 설치한다면 파일시스템을 만들때 충분한 양의 inode를 예악하기 위해 ext3에게 요청할 필요가 있을 것입니다. mke2fs 프로그램은 파일시스템이 가져야 할 inode 수를 계산하기 위해 "inode당 바이트 수" 설정을 사용합니다. mke2fs -j -T small /dev/<device> 를 실행하면 주어진 파일 시스템에서 수많은 inode에 대해 inode 하나당 16kB에서 4kB로 "inode당 바이트 수"가 1/4로 줄어듭니다. mke2fs -j -i <ratio> /dev/<device> 명령을 사용하면 이후 설정을 조절할 수 있습니다.

ext4는 ext3으로부터 갈라져 나와 성능을 향상시키고 디스크상 형식에 대해 적절한 수정을 가하여 용량 제한을 없애는 새로운 기능을 포함하여 만든 파일시스템입니다. 볼륨 하나의 크기를 1EB까지 늘릴 수 있고, 파일 최대 크기는 16TB가 될 수 있습니다. 기존의 ext2/3 비트맵 블록 할당 대신에 ext4는 대용량 파일 성능을 끌어올리고 단편화를 줄인 extents를 사용합니다. ext4는 디스크의 데이터 배치에 대해 최적화 할 더 많은 방법을 파일시스템 드라이버에 제공하는 좀 더 세련된 블록 할당 알고리즘(지연할당 및 다중블록 할당)을 제공합니다. ext4 파일시스템은 생산단계 코드 안정성과 대부분의 수십년 쯤 오래된 파일 시스템에 확장 기능을 도입하기 위한 결정 사이에서 나온 절충안입니다.

JFS는 IBM의 고성능 저널링 파일시스템입니다. JFS는 다양한 상황속에서도 좋은 성능을 내는, 가볍고 빠르며 믿을 수 있는 B+트리 기반 파일시스템입니다.

ReiserFS는 전반적으로 좋은 성능을 내며 특히 용량이 작은 수많은 파일들을 다룰 때 더 많은 CPU 사이클을 소비하는 경우 좋은 성능이 나는 B+트리 기반 저널링 파일시스템입니다. ReiserFS는 다른 파일시스템보다 적게 관리되고 있는 것으로 보입니다.

XFS는 견고한 기능 모음을 지니고 있으며 확장성에 있어 최적화 된 메타데이터 저널링 파일시스템입니다. XFS는 다양한 하드웨어 문제에 대해 그다지 관대하진 않은 것 같습니다. :$

파티션에 파일시스템 적용하기

파티션이나 볼륨에 파일시스템을 만들기 위해 제각각 가능한 파일시스템에 대해 서용할 수 있는 도구들이 있습니다.

파일시스템 만들기 명령
ext2 mkfs.ext2
ext3 mkfs.ext3
ext4 mkfs.ext4
reiserfs mkreiserfs
xfs mkfs.xfs
jfs mkfs.jfs

예를 들어 ext2 부트 파티션과 (저희 예제에서는 /dev/sda1 입니다) ext3 루트 파티션 (저희 예제에서는 /dev/sda3 입니다) 을 가지려면 다음 명령을 사용합니다.


코드 예제 5.1: 파티션에 파일시스템 적용하기
# mkfs.ext2 /dev/sda1

# mkfs.ext3 /dev/sda3


이제 여러분이 새로 만든 파티션 (또는 논리 볼륨) 에 파일시스템을 만들었습니다.

스왑 파티션 활성화하기

mkswap은 스왑 파티션을 초기화할 때 사용하는 명령입니다.


코드 예제 5.2: 스왑 서명 만들기
# mkswap /dev/sda2


스왑 파티션을 활성화하려면 swapon을 사용합니다:


코드 예제 5.3: 스왑 파티션 활성화하기
# swapon /dev/sda2


위에서 보여준 명령으로 스왑 파티션을 만들고 활성화했습니다.

마운트

이제 여러분의 파티션을 초기화했고 파일시스템을 올렸습니다. 이제 이들 파티션을 마운트할 차례입니다. mount 명령을 사용합니다. 여러분이 만든 파티션에 대해 필요한 마운트 디렉터리를 만드는 걸 까먹지 말길 바랍니다. 예제를 통해 루트 파티션과 부트 파티션을 마운트하도록 하겠습니다.


코드 예제 6.1: 파티션 마운트하기
# mount /dev/sda3 /mnt/gentoo

# mkdir /mnt/gentoo/boot
# mount /dev/sda1 /mnt/gentoo/boot



참고: /tmp를 나누어 놓은 파티션에 놓고 싶다면 마운트한 다음에 권한을 변경(chmod 1777 /mnt/gentoo/tmp)했는지 확인하시기 바랍니다. 이 조치는 /var/tmp에 대해서도 행해야 합니다.


또한 proc 파일시스템 (커널의 가상 인터페이스) 을 /proc에 마운트해야 합니다. 하지만 그 전에 파티션에 필요한 파일들을 복사해야 합니다.

젠투 설치파일 설치하기로 계속 진행합니다.