GentooX86 Handbook_Ko_1-4
1.1.1. 블록 장치 ¶우리는 일반적인 리눅스와 젠투리눅스의 관점에서 리눅스 파일시스템, 파티션, 블록장치를 포함하는 디스크 측면으로의 올바른 시각을 가지게 될 것입니다. 그러면 디스크의 내외부 적으로 친숙해질 것이고 젠투 리눅스를 설치하는데 있어 파일 시스템과 파티션을 설정하는 과정을 통해 독자 여러분들을 이끌 것입니다.
그러면 이를 시작하기 위해 우리는 블록 장치를 소개하고자 합니다. 대부분의 잘 알려진 블록 장치는 아마도 /dev/sda로 이름이 붙은 리눅스 시스템에서 첫번째 드라이브로 표현되는 개체일 것입니다. SCSI와 직렬ATA 드라이브는 /dev/sd* 로 명명되고 IDE 드라이브들은 저널 상에서 새로운 libata 프레임워크의 동작과 함께 /dev/sd*로 이름이 붙을 것입니다. 만약 오래된 디바이스 프레임워크를 사용한다면 첫번째 IDE드라이브는 /dev/hda입니다.
블록 장치들은 디스크 인터페이스를 추상화 하여 그 윗 단계에서 존재합니다. 사용자 프로그램들은 인터페이스가 IDE냐 SCSI냐 또는 그 외의 어떤 다른것들이냐 걱정할 필요 없이 디스크와 상호작용하기 위해 이들 블록 디바이스들을 사용할 수 있습니다. 프로그램은 연속적으로 임의접근가능한 512-바이트 블록들로 이루어진 디스크의 저장공간에 대해 간단하게 주소매김 할 수 있습니다.
1.1.2. 파티션 ¶비록 이것이 리눅스 시스템을 적재하기 위해 전체 디스크를 이론적으로 사용하는것이 가능하다 할지라도 통상적으로는 거의 불가능합니다. 대신, 전체 디스크 블록장치를 좀 더 관리하기 쉽도록 더 작게 쪼갤 수는 잇습니다. x86시스템에서는 이것을 파티션이라고 부릅니다.
파티션은 주, 논리, 확장의 세가지 타입으로 분류됩니다.
주 파티션은 MBR(마스터 부트 레코드)에 정보가 들어가는 파티션입니다. MBR은 매우 작으며 (512 바이트), 오직 네개의 주 파티션이 정의될 수 있습니다. (예를 들어, /dev/sda1 부터 /dev/sda4 까지).
확장 파티션은 더 많은 파티션을 포함한 특별한 주 파티션입니다 (다시 말해 확장파티션은 네개의 주파티션 중 하나가 되어야 합니다). 이런 파티션은 그 자체로서 존재하는 것이 아니지만 네개의 파티션 수가 너무 작다고 생각되면 이전 호환성을 잃지 않고 포매팅 계획을 확장하기 위한 탄력성을 가져옵니다.
논리 파티션은 확장 파티션 내에 존재합니다. 그것들의 정의는 MBR에 있는 것은 아니고 확장파티션 내부에 선언되어 있습니다.
1.2.1. 기본 분할 설계 ¶시스템을 위해 파티션 계획을 그리는것에 그닭 흥미를 느끼지 못한다면 이 책을 통해 우리가 언급하는 파티션 설계 방식을 사용할 수 있습니다.
파티션을 얼마나 크게 나누어야 하는지 얼마나 많은 수의 파티션을 쪼개야 하는지 알고 싶다면 쭉 읽어내려가길 바랍니다. 그렇지 않다면 ![]() 1.2.2. 얼마나 많이, 얼마나 크게 나누어야 하죠? ¶파티션의 수는 구성할 환경에 의해 결정됩니다. 예를 들어 많은 사용자를 거느리고 있다면, /home 파티션을 분리하여 보안성을 강화하고 백업을 쉽게 만들길 원할 것입니다. 젠투를 메일 서버로서의 기능역할을 수행하기 위해 설치한다면 /var 파티션을 따로 분리하여 모든 메일이 /var 로 저장되게할 것입니다. 파일 시스템에서의 좋은 선택은 성능을 극대화 할 것입니다. 게임 서버는 /opt를 분할하여 게임서버들이 /opt로 설치가 되게 하도록 할 것입니다.
그 이유는 다음과 같은데,
/home 분할: 보안과 백업.
/usr 의 크기유지: 어플리케이션의 대부분이 이곳에 들어갈 뿐만 아니라 포티지 트리만 해도 다양한 소스를 제외하고서라도 500MB를 초과하기 때문입니다.
본 바와 같이 어떻게 목적을 이루느냐에 따라 달라집니다. 파티션이나 볼륨을 분리하는데 있어 다음과 같은 잇점이 있습니다.
다음 파티션의 예를 통해, 랩탑에서 사용하는 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> (Unpartitioned space for future usage: 2 GB) /usr는 거의 찼습니다 (83% used) 하지만, 모든 소프트웨어가 설치되었고, /usr 는 더이상 사용량을 증가시키지 않을 것입니다. 비록 디스크 용량의 극히 일부를 /var 에 과도하게 할당한 것처럼 보이지만, Portage는 저 파티션을 패키지를 컴파일 하는데 기본으로 사용한다는 것을 기억해야 합니다. /var 파티션을 좀더 적당하게 1GB로 나눈다면, 오픈오피스와 같은 "무식하게 큰" 패키지를 컴파일 하기 위해 필요한, 충분한 용량을 가진 파티션을 가리키기 위해 /etc/make.conf 의 PORTAGE_TMPDIR 변수의 대안 값이 필요하게 될 것입니다.
1.3. fdisk를 사용하여 디스크를 분할하기 ¶다음 파트에서는 앞서 명칭을 들어 설명한 파티션 배치의 예제를 어떻게 만드는가에 대해 설명하겠습니다.
취향에 따라 파티션 배치를 변경하여 보도록 합시다. 1.3.1. 현재 파티션 배치 보기 ¶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): 이 부분적인 디스크는 7개의 리눅스 파일 시스템을 적재하도록 설정되었습니다. (각각의 파티션이 동일하게 "Linux"로 나열되어 있고, 이와 같이 swap파티션 하나가 있습니다("Linux swap"으로 표시가 되어 있음).
1.3.2. 모든 파티션 삭제 ¶우리는 존재하는 모든 파티션을 디스크로부터 삭제하도록 하겠습니다. d를 입력하여 파티션 하나를 삭제해보도록 하겠습니다. 다음은 존재하는 /dev/sda1을 삭제하는 예제입니다.
예제 3-4 : 파티션 삭제
Command (m for help): d Partition number (1-4): 1 파티션은 삭제되기로 계획 되었습니다. 이는 p를 입력하여 리스트를 출력하면 더이상 나타나지 않을 것입니다만 상태를 저장하기 전까진 실제로 지워지지 않습니다. 만약 실수를 했다면 q를 입력하고 즉시 빠져나와 삭제되지 않도록 합니다.
이제, 실제로 모든 파티션을 날린다고 가정하고 반복적으로 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): 이제 메모리안에서의 파티션 테이블은 비어있고, 파티션을 새로 만들 준비가 되었습니다. 우리는 이미 앞서 언급된 기본적인 파티션 계획을 그대로 이용할 것입니다. 물론 이런 형태를 원하는게 아니라면 문자 그대로 따라하지 않으셔도 됩니다.
1.3.3. 부트 파티션 생성 ¶먼저 작은 부트 파티션을 만들도록 하겠습니다. 새로운 파티션을 만들기 위해 n을 입력하고, p를 입력하여 주 파티션을 선택하며, 그 다음에는 1을 입력하여 첫번째 주 파티션임을 알리도록 합니다. 첫번째 실린더 입력에서는 그냥 엔터를 칩니다. 마지막 실린더를 입력하라는 물음에는 +32M 을 그대로 입력하여 32MB사이즈로 만들어주고 부팅가능 플래그를 설정합니다.
예제 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): (Hit 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" 컬럼에 표시된 것을 볼 수 있을 것입니다.
1.3.4. 스왑 파티션 생성 ¶이제 스왑 파티션을 만들어보도록 합시다! 이를 위해서는 새 파티션을 생성하기 위해 n을 입력하고 주 파티션임을 알리기 위해 p를 입력합니다. 2를 입력하여 두번째 주 파티션(우리의 경우에는 /dev/sda2)임을 알려줍니다. 첫번째 실린더를 묻는 물음에 그냥 엔터를 집니다. 마지막 실린더를 묻는 물음에는 +512M 룰 입력하여 생성 크기가 512MB가 되게 합니다. 이것이 끝나면 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 1.3.5. 루트 파티션 생성 ¶마지막으로 루트 파티션을 만들어봅시다! (아~ 끝나가네요 ^^) n을 입력하여 새로운 파티션 생성을 선택하고, p를 입력하여 주 파티션임을 알립니다. 3을 눌러 세번째 주 파티션이 되게 합니다. 우리의 경우에는 /dev/sda3가 되겠지요. 첫번째 실린더를 묻는 물음에는 그냥 엔터를 칩니다. 마지막 실린터를 묻는 물음에는 그냥 엔터를 쳐서 디스크 상의 남은 공간을 모두 사용하도록 합니다. 이 단계들이 완료되면 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 1.3.6. 파티션 배치 저장 ¶파티션 배치를 저장하고 fdisk를 빠져나가려면 w 를 입력하세요.
예제 3-10: fdisk 저장하고 종료하기
Command (m for help): w 이제 파티션이 만들어졌습니다.
![]() 1.4.1. 소개 ¶이제 파티션이 다 만들어졌고 파일 시스템을 위치할 때입니다. 파일 시스템 선택에 관심 없고, 이 핸드북에서 우리가 기본으로 사용하는것에 만족감을 느끼지 못하겠다면,
![]() 1.4.2. 파일시스템 ¶리눅스 커널은 다양한 파일시스템을 지원합니다. 우리는 리눅스 시스템에서 일반적으로 사용되는 ext2, ext3, ReiserFS, XFS, JFS 에 대해 설명하도록 하겠습니다.
ext2 는 믿을만하며 참신한 리눅스 파일시스템이지만 메타데이터 저널링 기능이 없어 시스템 시작시간에 파일 시스템 검사시 약간의 시간을 소요합니다. 저널링이 지원되지 않는 이것보다 일관적으로 매우 빠르게 검사되어 일반적으로 더 많은 것들이 준비된 새로운 세대의 저널링 파일 시스템 선택이 있습니다. 저널링 파일 시스템은 모순된 상태가 되는 파일 시스템의 상황과 시스템 부팅시 긴 시간동안의 지연을 막습니다.
ext3 는 ext2 파일 시스템의 저널링 버전입니다. 포화 데이터와 순차테이터 저널링 과 같은 다른 향상된 저널링 모드가 추가 되어 빠른 복구를 위한 메타데이터 저널링이 제공됩니다. 이는 거의 대부분의 상황에서 고도의 성능을 가능케 하는 HTree 인덱스를 사용합니다. 정리하자면 ext3는 매우 우수하고 신뢰성있는 파일시스템입니다. Ext3는 모든 목적, 모든 플랫폼의 파일 시스템으로서 추천됩니다.
ext4 는 ext3 저널링 파일 시스템의 향상된 버전입니다. 16TB 까지의 대형파일 시스템을 지원하며, 저널체크섬과 온라인 조각모음 지원으로 파일 시스템의 성능향상과 신뢰성을 제공합니다.
JFS 는 IBM의 고성능 저널링 파일 시스템입니다. JFS는 다양산 상황에서 좋은 성능을 보이는, 가볍고 빠르며 신뢰성있는 B+트리 기반 파일 시스템입니다.
ReiserFS 는 B+트리 기반 저널링 파일 시스템으로 특히 CPU사이클이 많이 돌아가는 경비 측면에 있어 많은 작은 파일들을 다룰때 전반적인 퍼포먼스가 우수합니다. ReiserFS는 다른 파일 시스템에 비해 적게 관리됩니다.
XFS 메타데이터 저널링이 적용된 파일 시스템으로 견고한 특징들이 갖춰져 있으며 확장성에 최적화되어 있습니다. XFS 는 다양한 하드웨어적 문제로 인해 거의 잊혀지는 것 같습니다.
1.4.3. 파티션에 파일 시스템 적용하기 ¶파일 시스템을 파티션이나 볼륨에 생성하기 위해서는 각각의 가능한 파일시스템에 따라 사용될 수 있는 도구들이 있습니다.
예제에서는 부트 파티션을 ext2로 사용하고 (예제의 /dev/sda1), 루트 파티션을 ext3로 사용하기 위해 (예제의 /dev/sda3) 다음 명령을 사용하고 있습니다. 예제 4-1 : 파티션에 파일 시스템 적용
# mke2fs /dev/sda1 # mke2fs -j /dev/sda3 이제 새로 만들어진 파티션 (혹은 논리 볼륨)파일 시스템을 만들어봅시다.
1.4.4. 스왑 파티션 활성화하기 ¶mkswap은 스왑 파티션을 초기화 하기 위해 사용하는 명령입니다.
예제 4-2 : 스왑 시그내춰 생성
# mkswap /dev/sda2 스왑파티션을 활성화 하기 위해 swapon명령을 사용합니다.
예제 4-3 : 스왑 파티션 활성화
# swapon /dev/sda2 위에 알려드린 명령을 이용하여 스왑파티션을 생성하고 활성화해보세요.
1.5. 마운트 ¶이제 파티션들이 초기화 되었고 파일 시스템을 적재하였습니다. 이들 파티션을 마운트 할 때입니다. mount 명령을 이용합니다. 생성한 모든 파티션들을 마운트 할 필요한 디렉토리를 생성하는것을 잊으시면 안됩니다. 다음 예제에서 우리는 루트파티션과 부트파티션을 마운트 합니다.
예제 5-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에 마운트 해야만 할 것입니다. 그러나 우리는 먼저 파티션에 필요한 파일들을 위치시킬 필요가 있습니다.
![]() |