"Trans:GentooAmd64Handbook2013-1-4"의 두 판 사이의 차이

Gentoo Korea Wiki
둘러보기로 가기 검색하러 가기
 
(같은 사용자의 중간 판 31개는 보이지 않습니다)
11번째 줄: 11번째 줄:
 
리눅스 시스템을 저장하려면 이론적으로 디스크의 전체 구역을 사용할 수 있지만 실제로는 거의 그렇게 하지 못합니다. 대신 전체 디스크 블록장치는 작은 부분으로 나누어 좀 더 관리하기 쉬운 블록 장치로 만듭니다. x86 시스템에서는 이를 ''분할 구역(파티션)''이라고 부릅니다. 현재 분할 구역을 나누는데 두가지 표준 MBR과 GPT를 활용합니다.
 
리눅스 시스템을 저장하려면 이론적으로 디스크의 전체 구역을 사용할 수 있지만 실제로는 거의 그렇게 하지 못합니다. 대신 전체 디스크 블록장치는 작은 부분으로 나누어 좀 더 관리하기 쉬운 블록 장치로 만듭니다. x86 시스템에서는 이를 ''분할 구역(파티션)''이라고 부릅니다. 현재 분할 구역을 나누는데 두가지 표준 MBR과 GPT를 활용합니다.
  
MBR(주 부트 레코드) 설정시 섹터 시작점과 분할 구역의 길이를 구분하는데 32비트 식별자를 사용하며, ''주 분할 구역'', ''확장 분할 구역'', ''논리 분할 구역'' 세 가지 방식을 지원합니다. ''주 분할 구역''은 MBR(주 부트 레코드)에 정보를 저장하는 분할 구역입니다. MBR 이 매우 작은(512 바이트) 만큼 네 개의 주 분할 구역만을 지정할 수 있습니다. (예를 들어 /dev/sda1 부터 /dev/sda4 까지 입니다).
+
MBR(주 시동 레코드) 설정시 섹터 시작점과 분할 구역의 길이를 구분하는데 32비트 식별자를 사용하며, ''주 분할 구역'', ''확장 분할 구역'', ''논리 분할 구역'' 세 가지 방식을 지원합니다. ''주 분할 구역''은 MBR(주 시동 레코드)에 정보를 저장하는 분할 구역입니다. MBR 이 매우 작은(512 바이트) 만큼 네 개의 주 분할 구역만을 지정할 수 있습니다. (예를 들어 /dev/sda1 부터 /dev/sda4 까지 입니다).
  
 
더 많은 분할 구역을 지원하려 주 분할 구역 중 하나를 ''확장 분할 구역''으로 표시할 수 있습니다. 이 분할 구역은 ''논리 분할 구역''을 보유할 수 있습니다(분할 구역 안의 분할 구역).
 
더 많은 분할 구역을 지원하려 주 분할 구역 중 하나를 ''확장 분할 구역''으로 표시할 수 있습니다. 이 분할 구역은 ''논리 분할 구역''을 보유할 수 있습니다(분할 구역 안의 분할 구역).
41번째 줄: 41번째 줄:
  
 
==== 고급 저장장치 ====
 
==== 고급 저장장치 ====
x86 설치 CD는 LVM2를 지원합니다. LVM2는 파티션 설정을 통해 유연성을 증대시킵니다. 설치 설명 중에, 우리는 "일반" 파티션에 초점을 맞추겠지만, LVM2을 지원한다는 사실에 대해 알고 있는 것 또한 좋습니다.
+
x86 설치 CD는 LVM2를 지원합니다. LVM2는 분할 구역 설정으로 유연성을 극대화합니다. 설치 설명 중에, 우리는 "일반" 분할 구역에 초점을 맞추겠지만, LVM2을 지원한다는 사실에 대해 알고 있는 것 또한 좋습니다.
  
=== 파티션 모양새 설계 ===
+
=== 분할 구역 모양새 설계 ===
==== 기본 파티션 모양새 ====
+
==== 기본 분할 구역 모양새 ====
여러분의 시스템에 대한 파티션 모양새를 그려보는데 관심이 없다면, 이 책을 통해 우리가 사용한 파티션 모양새를 사용해보실 수도 있습니다.
+
여러분의 시스템에 대한 분할 구역 모양새를 그려보는데 관심이 없다면, 이 책을 통해 우리가 사용한 분할 구역을 사용해보실 수도 있습니다.
  
 
{| cellspacing="1" cellpadding="1"
 
{| cellspacing="1" cellpadding="1"
! scope="col" bgcolor="#8866ff" |'''<font color="white">파티션</font>'''
+
! scope="col" bgcolor="#8866ff" |'''<font color="white">분할 구역</font>'''
 
! scope="col" bgcolor="#8866ff" |'''<font color="white">파일시스템</font>'''
 
! scope="col" bgcolor="#8866ff" |'''<font color="white">파일시스템</font>'''
 
! scope="col" bgcolor="#8866ff" |'''<font color="white">사이즈</font>'''
 
! scope="col" bgcolor="#8866ff" |'''<font color="white">사이즈</font>'''
56번째 줄: 56번째 줄:
 
| bgcolor="#ccccff" |'''(bootloader)'''
 
| bgcolor="#ccccff" |'''(bootloader)'''
 
| bgcolor="#ccccff" |'''2M'''
 
| bgcolor="#ccccff" |'''2M'''
| bgcolor="#ccccff" |'''BIOS 시동 파티션'''
+
| bgcolor="#ccccff" |'''BIOS 시동 분할 구역'''
 
|-
 
|-
 
| bgcolor="#ccccff" |'''/dev/sda2'''
 
| bgcolor="#ccccff" |'''/dev/sda2'''
 
| bgcolor="#ccccff" |'''ext2'''
 
| bgcolor="#ccccff" |'''ext2'''
 
| bgcolor="#ccccff" |'''32M'''
 
| bgcolor="#ccccff" |'''32M'''
| bgcolor="#ccccff" |'''시동 파티션'''
+
| bgcolor="#ccccff" |'''시동 분할 구역'''
 
|-
 
|-
 
| bgcolor="#ccccff" |'''/dev/sda3'''
 
| bgcolor="#ccccff" |'''/dev/sda3'''
 
| bgcolor="#ccccff" |'''(swap)'''
 
| bgcolor="#ccccff" |'''(swap)'''
 
| bgcolor="#ccccff" |'''512M 이상'''
 
| bgcolor="#ccccff" |'''512M 이상'''
| bgcolor="#ccccff" |'''스왑 파티션'''
+
| bgcolor="#ccccff" |'''스왑 분할 구역'''
 
|-
 
|-
 
| bgcolor="#ccccff" |'''/dev/sda4'''
 
| bgcolor="#ccccff" |'''/dev/sda4'''
 
| bgcolor="#ccccff" |'''ext4'''
 
| bgcolor="#ccccff" |'''ext4'''
 
| bgcolor="#ccccff" |'''디스크 나머지 공간'''
 
| bgcolor="#ccccff" |'''디스크 나머지 공간'''
| bgcolor="#ccccff" |'''루트 파티션'''
+
| bgcolor="#ccccff" |'''루트 분할 구역'''
 
|}
 
|}
  
파티션의 크기가 얼마나 되어야 하는지 심지어 얼마나 많은 파티션이 필요한지 알고 싶으시다면 계속 읽어내려가시기 바랍니다. 그렇지 않다면 [[#parted.EB.A5.BC_.EC.82.AC.EC.9A.A9.ED.95.98.EC.97.AC_.EB.94.94.EC.8A.A4.ED.81.AC_.EB.B6.84.ED.95.A0.ED.95.98.EA.B8.B0|parted를 사용하여 디스크 분할하기]] (또는 [[#fdisk.EB.A5.BC_.EC.82.AC.EC.9A.A9.ED.95.98.EC.97.AC_.EB.94.94.EC.8A.A4.ED.81.AC_.EB.B6.84.ED.95.A0.ED.95.98.EA.B8.B0|fdisk를 사용하여 디스크 분할하기]])를 읽어 분할을 계속 진행하십시오. 둘 다 파티션 도구인데, {{blue|fdisk}}는 잘 알려져 있고 안정적입니다. {{blue|parted}}는 좀 최근에 나왔는데 2TB이상의 파티션을 지원합니다.
+
분할 구역의 크기가 얼마나 되어야 하는지 심지어 얼마나 많은 분할 구역이 필요한지 알고 싶으시다면 계속 읽어내려가시기 바랍니다. 그렇지 않다면 [[#parted.EB.A5.BC_.EC.82.AC.EC.9A.A9.ED.95.98.EC.97.AC_.EB.94.94.EC.8A.A4.ED.81.AC_.EB.B6.84.ED.95.A0.ED.95.98.EA.B8.B0|parted를 사용하여 디스크 분할하기]] (또는 [[#fdisk.EB.A5.BC_.EC.82.AC.EC.9A.A9.ED.95.98.EC.97.AC_.EB.94.94.EC.8A.A4.ED.81.AC_.EB.B6.84.ED.95.A0.ED.95.98.EA.B8.B0|fdisk를 사용하여 디스크 분할하기]])를 읽어 분할을 계속 진행하십시오. 둘 다 구역 분할 도구인데, {{blue|fdisk}}는 잘 알려져 있고 안정적입니다. {{blue|parted}}는 좀 최근에 나왔는데 2TB이상의 분할 구역을 지원합니다.
  
  
 
==== 얼마나 많이, 얼마나 크게 할까요? ====
 
==== 얼마나 많이, 얼마나 크게 할까요? ====
많은 파티션들은 환경에 크게 의존합니다. 사용자가 많이 있다면 보안성을 증대하고 백업을 쉽게하기 위해 /home 을 따로 나누고 싶어할 것입니다. 젠투 시스템을 메일서버로 동작하게끔 하려면 /var에 모든 메일이 저장되므로 /var를 나눌 것입니다. 파일시스템에 대한 좋은 선택은 여러분이 가진 시스템의 성능을 극대화 할 것입니다. 게임서버라면 대부분의 게임 서버가 /opt에 설치 되므로 이것을 나눌 것입니다. 이유는 /home 과 비슷합니다. 보안과 백업이죠. /usr 는 커지는 그대로라도 유지하고 싶어할 것입니다. 주요 프로그램들이 들어가 있을 뿐만 아니라 다양한 소스코드를 제외한 500MB 가량의 포티지 트리들이 이 곳에 저장됩니다.
+
수많은 분할 구역은 환경에 크게 의존합니다. 사용자가 많이 있다면 보안성을 증대하고 백업을 쉽게하기 위해 /home 을 따로 나누고 싶어할 것입니다. 젠투 시스템을 메일서버로 동작하게끔 하려면 /var에 모든 메일이 저장되므로 /var를 나눌 것입니다. 파일시스템에 대한 좋은 선택은 여러분이 가진 시스템의 성능을 극대화 할 것입니다. 게임서버라면 대부분의 게임 서버가 /opt에 설치 되므로 이것을 나눌 것입니다. 이유는 /home 과 비슷합니다. 보안과 백업이죠. /usr 는 커지는 그대로라도 유지하고 싶어할 것입니다. 주요 프로그램들이 들어가 있을 뿐만 아니라 다양한 소스코드를 제외한 500MB 가량의 포티지 트리들이 이 곳에 저장됩니다.
  
여러분이 아시는 바와 같이 여러분이 무엇을 저장하고 싶은지에 크게 달려있습니다. 각각의 파티션과 볼륨은 다음 장점을 지니고 있습니다
+
여러분이 아시는 바와 같이 여러분이 무엇을 저장하고 싶은지에 크게 달려있습니다. 각각의 분할 구역과 볼륨은 다음 장점이 있습니다
  
* 각각의 파티션과 볼륨에 대해 가장 잘 동작하는 파일시스템을 선택할 수 있습니다.
+
* 각각의 분할 구역과 볼륨에 대해 가장 잘 동작하는 파일시스템을 선택할 수 있습니다.
 
* 어떤 기능을 상실한 도구가 계속 파일을 기록하는 경우 빈 공간이 부족해져 전체 시스템을 동작할 수가 없습니다.
 
* 어떤 기능을 상실한 도구가 계속 파일을 기록하는 경우 빈 공간이 부족해져 전체 시스템을 동작할 수가 없습니다.
* 필요한 경우 파일시스템 점검을 동시에 여러 부분에 대한 검사를 수행하여 시간을 줄입니다 (여러 파티션이 있을 때보단 여러 디스크가 있을 수록 좋겠지만).
+
* 필요한 경우 파일시스템 점검을 동시에 여러 부분에 대한 검사를 수행하여 시간을 줄입니다 (여러 분할 구역이 있을 때보단 여러 디스크가 있을 수록 좋겠지만).
* 일부 파티션이나 볼륨을 읽기 전용, nosuid(setuid 비트를 무시합니다), noexec(실행 비트를 무시합니다) 등으로 마운트하여 보안성을 향상할 수 있습니다.
+
* 일부 분할 구역이나 볼륨을 읽기 전용, nosuid(setuid 비트를 무시합니다), noexec(실행 비트를 무시합니다) 등으로 마운트하여 보안성을 향상할 수 있습니다.
  
그러나 이 뿐만 아니라 여러 파티션을 나누면 단점이 있기도 합니다. 제대로 설정하지 않으면 어떤 파티션은 남은 공간이 많지만 어떤 파티션은 그렇지 않을 것입니다. 다른 귀찮은 것 하나는 나누어 놓은 파티션인데 특히 /usr나 /var같은 중요한 마운트 지점은 종종 관리자가 다른 시동 스크립트를 시작하기 전에 파티션에 마운트 하게끔 initramfs로 시동하는 것이 필요합니다. 비록 항상 일어나는 일은 아니지만요. 이렇게 다양한 이득이 있습니다.
+
그러나 이 뿐만 아니라 여러 분할 구역을 나누면 단점이 있기도 합니다. 제대로 설정하지 않으면 어떤 분할 구역은 남은 공간이 많지만 어떤 분할 구역은 그렇지 않을 것입니다. 다른 귀찮은 것 하나는 나누어 놓은 분할 구역인데 특히 /usr나 /var같은 중요한 마운트 지점은 종종 관리자가 다른 시동 스크립트를 시작하기 전에 분할 구역에 마운트 하게끔 initramfs로 시동하는 것이 필요합니다. 비록 항상 일어나는 일은 아니지만요. 이렇게 다양한 이득이 있습니다.
  
 
SCSI 와 SATA에서는 GPT 레이블을 사용하지 않으면 15개의 분할구역 갯수 제한이 있습니다.
 
SCSI 와 SATA에서는 GPT 레이블을 사용하지 않으면 15개의 분할구역 갯수 제한이 있습니다.
  
 
==== 스왑 공간은 어떻게 할까요? ====
 
==== 스왑 공간은 어떻게 할까요? ====
스왑 파티션에 완벽한 값은 없습니다. 스왑 공간 사용의 목적은 내부 메모리(RAM)가 고갈 상태일때 커널로 디스크 공간을 제공하는 것입니다. 스왑 공간은 커널에게 디스크에서 바로 접근하지 않을 메모리 페이지를 옮길 수 있게(스왑, 페이지아웃)하며, 메모리를 비우기도 합니다. 물론, 메모리가 갑자기 필요할 때 이 페이지를 메모리로 돌려놓아야 하는데(페이지 인), 시간이 좀 걸립니다(자체 메모리와 비교하면 디스크는 매우 느립니다).
+
스왑 구역 분할에 대한 완벽한 값은 없습니다. 스왑 공간 사용의 목적은 내부 메모리(RAM)가 고갈 상태일때 커널로 디스크 공간을 제공하는 것입니다. 스왑 공간은 커널에게 디스크에서 바로 접근하지 않을 메모리 페이지를 옮길 수 있게(스왑, 페이지아웃)하며, 메모리를 비우기도 합니다. 물론, 메모리가 갑자기 필요할 때 이 페이지를 메모리로 돌려놓아야 하는데(페이지 인), 시간이 좀 걸립니다(자체 메모리와 비교하면 디스크는 매우 느립니다).
  
 
메모리를 요구하는 프로그램을 실행하는게 아니거나, 상당한 용량의 메모리를 보유하고 있다면, 많은 스왑 공간이 필요한게 아닙니다. 그러나, 스왑 공간은 최대 절전모드에서 메모리 전체 내용을 저장하는데도 사용합니다.  최대 절전 공간 기능을 활용하려 한다면, 더 큰 스왑 공간이 필요합니다. 보통 최소한 시스템에 있는 메모리 용량 만큼은 필요합니다.
 
메모리를 요구하는 프로그램을 실행하는게 아니거나, 상당한 용량의 메모리를 보유하고 있다면, 많은 스왑 공간이 필요한게 아닙니다. 그러나, 스왑 공간은 최대 절전모드에서 메모리 전체 내용을 저장하는데도 사용합니다.  최대 절전 공간 기능을 활용하려 한다면, 더 큰 스왑 공간이 필요합니다. 보통 최소한 시스템에 있는 메모리 용량 만큼은 필요합니다.
103번째 줄: 103번째 줄:
 
완벽함을 기하도록 하기 위해 GPT 파이션 배치를 GRUB2와 사용할 경우 또는 디스크에서 1MB 영역 이전에 첫번째 분할 구역을 시작할 때 GRUB2에서 MBR 분할 구역을 사용하는 경우 BIOS 시동 분할 구역이 필요하다고 말할 수 있습니다.
 
완벽함을 기하도록 하기 위해 GPT 파이션 배치를 GRUB2와 사용할 경우 또는 디스크에서 1MB 영역 이전에 첫번째 분할 구역을 시작할 때 GRUB2에서 MBR 분할 구역을 사용하는 경우 BIOS 시동 분할 구역이 필요하다고 말할 수 있습니다.
  
=== 기본: 디스크 분할 시 parted 사용하기 ===
+
=== 기본: parted를 사용하여 디스크 공간 나누기 ===
 
이 장에서는 앞서 언급한 예제 분할 구역 배치를 만드는 철차를 안내하겠습니다만, 편의를 위해 재차 언급하도록 하겠습니다.
 
이 장에서는 앞서 언급한 예제 분할 구역 배치를 만드는 철차를 안내하겠습니다만, 편의를 위해 재차 언급하도록 하겠습니다.
  
 
{|
 
{|
! scope="col" bgcolor="#8866ff" width="90" |'''<font color="white">분할 구역</font>'''
+
! scope="col" bgcolor="#8866ff" width="110" |'''<font color="white">분할 구역</font>'''
! scope="col" bgcolor="#8866ff" width="90" |'''<font color="white">설명</font>'''
+
! scope="col" bgcolor="#8866ff" width="110" |'''<font color="white">설명</font>'''
 
|-
 
|-
 
| bgcolor="#ccccff" |'''/dev/sda1'''
 
| bgcolor="#ccccff" |'''/dev/sda1'''
149번째 줄: 149번째 줄:
 
GPT 레이블 설정이 아직 끝나지 않았다면(예를 들어, 앞서 언급한 {{Blue|mklabel}} 이나, 디스크를 새로 포맷했을 경우), 디스크의 모든 기존의 분할 구역을 먼저 제거해야 합니다. 현재 분할 구역을 보려면 {{Blue|print}}를 입력하고, 제거할 분할 구역에 대해 <번호>대신 숫자로 rm <번호>을 입력하십시오.
 
GPT 레이블 설정이 아직 끝나지 않았다면(예를 들어, 앞서 언급한 {{Blue|mklabel}} 이나, 디스크를 새로 포맷했을 경우), 디스크의 모든 기존의 분할 구역을 먼저 제거해야 합니다. 현재 분할 구역을 보려면 {{Blue|print}}를 입력하고, 제거할 분할 구역에 대해 <번호>대신 숫자로 rm <번호>을 입력하십시오.
  
{{Example|코드 예제 3.3: 디스크에서 분할 구역 제거하기
+
{{Example|코드 예제 3.3: 디스크에서 분할 구역 제거하기|(parted) {{Blue|rm 2}} }}
 +
 
 +
필요하지 않은 분할 구역에 대해 같은 명령을 내리십시오. 그러나, 이 시점에서 실수를 하지 않았는지 확인하십시오. {{Blue|parted}}는 상태를 바꾸는 동작을 바로 실행합니다(사용자가 바꾼 내용을 스테이지에 쌓아두다가 저장하기 전에 "되돌리기"를 하거나 {{Blue|fdisk}}를 빠져나가는 방법으로 바꾼 내용을 취소하는 것과는 다릅니다).
 +
 
 +
==== 분할 구역 만들기 ====
 +
이제 앞에서 말한 분할 구역을 만들어보겠습니다. {{Blue|parted}}로 분할 구역을 만드는 것은 그리 어려운 일이 아닙니다. 필요한 모든 일은 {{Blue|parted}}에 다음 설정 내용을 알려주는 것 뿐입니다.
 +
 
 +
* 사용할 ''분할 구역 형식''. 보통 ''primary(주)'' 형식을 사용합니다. ''msdos'' 분할 구역 레이블을 사용한다면, 4개 이상의 주 분할 구역을 사용할 수 없음을 기억하십시오. 4개 이상의 분할 구역을 활용하려면, ''extended(확장)'' 분할 구역을 만든 다음 ''logical(논리)'' 분할 구역을 확장 분할 구역 안에 만드십시오. 
 +
* 분할 구역의 시작 위치 (MB, GB로 표현 가능)
 +
* 분할 구역이 끝나는 위치 (MB, GB로 표현 가능)
 +
 
 +
먼저 {{Blue|parted}}에게 메가바이트를 크기 단위로 쓰겠다고 알려줍시다(실제로는, 표준 표기 MiB로 줄여 부르는 메비바이트이지만, 보통 일반적으로 제일 많이 쓰는 표기인 MB로 쓰겠습니다).
 +
 
 +
{{Example|코드 예제 3.4: MiB 단위 사용하기|(parted) {{Blue|unit mib}} }}
 +
 
 +
이제 GRUB2 부트로더에서 사용할 2MB 용량의 분할 공간을 만들겠습니다. 이 동작을 수행하기 위해 {{Blue|mkpart}} 명령을 활용하여 {{Blue|parted}}에게 1MB 영역에서 3MB 영역까지의 공간을 활용하라고 일러두겠습니다(이리하여 2MB 크기의 분할 공간을 만듭니다).
 +
 
 +
{{Example|코드 예제 3.5: 2 MB 용량 분할 공간 만들기|
 +
(parted) {{Blue|mkpart primary 1 3}}<br />
 +
(parted) {{Blue|name 1 grub}}<br />
 +
(parted) {{Blue|set 1 bios_grub on}}<br />
 +
(parted) {{Blue|print}}<br />
 +
Model: Virtio Block Device (virtblk)<br />
 +
Disk /dev/sda: 20480MiB<br />
 +
Sector size (logical/physical): 512B/512B<br />
 +
Partition Table: gpt}}
 +
 
 +
시동 분할 공간(128MB), 스왑 분할 공간(예제에서는 512MB)에 대해 같은 과정을 진행하고, 루트 분할 공간에는 디스크 나머지 영역을 차지하도록 하십시오(이 경우 마지막 위치를 {{Blue|-1}}로 합니다. 음수 값은 디스크의 마지막 부분에 최대한 도달하라는 의미입니다).
 +
 
 +
{{Example|코드 예제 3.6: 다른 분할 공간 만들기|
 +
(parted) {{Blue|mkpart primary 3 131}}<br/>
 +
(parted) {{Blue|name 2 boot}}<br/>
 +
(parted) {{Blue|mkpart primary 131 643}}<br/>
 +
(parted) {{Blue|name 3 swap}}<br/>
 +
(parted) {{Blue|mkpart primary 643 -1}}<br/>
 +
(parted) {{Blue|name 4 rootfs}} }}
 +
 
 +
최종 결과는 다음과 비슷합니다:
 +
 
 +
{{Example|코드 예제 3.7: 현재 분할 공간 배치 모양새|
 +
(parted) {{Blue|print}}<br />
 +
Model: Virtio Block Device (virtblk)<br />
 +
Disk /dev/sda: 20480MiB<br />
 +
Sector size (logical/physical): 512B/512B<br />
 +
Partition Table: gpt<br />
 +
<br />
 +
Number  Start      End      Size    File system  Name  Flags<br />
 +
1      1.00MiB    3.00MiB  2.00MiB              grub  bios_grub<br />
 +
2      3.00MiB    131MiB  128MiB                boot<br />
 +
3      131MiB    643MiB  512MiB                swap<br />
 +
4      643MiB    20479MiB 19836MiB              rootfs
 +
}}
 +
 
 +
결과에 만족한다면  {{Blue|quit}} 명령을 사용하여 {{Blue|parted}}를 끝내십시오.
 +
 
 +
=== 대안: fdisk를 사용하여 디스크 공간 나누기 ===
 +
{{Important|2TB 용량보다 큰 단위의 분할 공간을 다루는 환경이라면, 이 절차 대신 [[#.EA.B8.B0.EB.B3.B8:_parted.EB.A5.BC_.EC.82.AC.EC.9A.A9.ED.95.98.EC.97.AC_.EB.94.94.EC.8A.A4.ED.81.AC_.EA.B3.B5.EA.B0.84_.EB.82.98.EB.88.84.EA.B8.B0|기본: parted를 사용하여 디스크 공간 나누기]] 절차를 따르십시오. {{Blue|fdisk}}에서는 큰 용량의 분할 공간을 다루지 못합니다. 게다가 fdisk에서는 MBR 배치를 활용합니다. fdisk 프로그램 대신, GPT를 지원하는 gdisk(젠투에서는 gptfdisk 꾸러미로 제공합니다)가 있지만, 젠투 설치 미디어엔 없을 것입니다.}}
 +
 
 +
다음 부분은 {{Blue|fdisk}}를 활용하여 어떻게 예제 분할 구역 배치를 하는지 설명합니다. 예제 분할 구역 배치는 이미 앞에서 언급했습니다:
 +
 
 +
{| cellspacing="1" cellpadding="1"
 +
! scope="col" bgcolor="#8866ff" |'''<font color="white">분할 구역</font>'''
 +
! scope="col" bgcolor="#8866ff" |'''<font color="white">설명</font>'''
 +
|-
 +
| bgcolor="#ccccff" |'''/dev/sda1'''
 +
| bgcolor="#ccccff" |'''BIOS 시동 분할 구역'''
 +
|-
 +
| bgcolor="#ccccff" |'''/dev/sda2'''
 +
| bgcolor="#ccccff" |'''시동 분할 구역'''
 +
|-
 +
| bgcolor="#ccccff" |'''/dev/sda3'''
 +
| bgcolor="#ccccff" |'''스왑 분할 구역'''
 +
|-
 +
| bgcolor="#ccccff" |'''/dev/sda4'''
 +
| bgcolor="#ccccff" |'''루트 분할 구역'''
 +
|}
 +
 
 +
여러분의 취향에 따라 분할 구역 배치를 바꾸어보십시오.
 +
 
 +
==== 현재 분할 구역 배치 보기 ====
 +
{{Blue|fdisk}}는 디스크의 구역을 나누는 잘 알려진 강력한 도구입니다. 구역을 나누려는 디스크에 대해 {{Blue|fdisk}}를 실행하십시오(예제에서는 /dev/sda를 사용합니다)
 +
 
 +
{{Example|코드 예제 4.1: fdisk 실행하기|<nowiki>#  </nowiki>{{Blue|fdisk /dev/sda}} }}
 +
 
 +
{{Blue|fdisk}}에 들어가면, 다음과 같은 프롬프트를 만납니다.
 +
 
 +
{{Example|코드 예제 4.2: fdisk 프롬프트|Command (m for help): }}
 +
 
 +
현재 디스크의 분할 구역 설정을 표시하려면 {{Blue|p}}를 입력하십시오.
 +
 
 +
{{Example|코드 예제 4.3: 분할 구역 설정 보기|Command (m for help): {{Blue|p}}<br/>
 +
<br/>
 +
Disk /dev/sda: 240 heads, 63 sectors, 2184 cylinders<br/>
 +
<nowiki>Units = cylinders of 15120 * 512 bytes</nowiki><br/>
 +
<br/>
 +
&nbsp;&nbsp;&nbsp;Device&nbsp;Boot&nbsp;&nbsp;&nbsp;&nbsp;Start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;&nbsp;&nbsp;&nbsp;Blocks&nbsp;&nbsp;&nbsp;Id&nbsp;&nbsp;System<br/>
 +
/dev/sda1&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;14&nbsp;&nbsp;&nbsp;&nbsp;105808+&nbsp;&nbsp;83&nbsp;&nbsp;Linux<br/>
 +
/dev/sda2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;49&nbsp;&nbsp;&nbsp;&nbsp;264600&nbsp;&nbsp;&nbsp;82&nbsp;&nbsp;Linux swap<br/>
 +
/dev/sda3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;70&nbsp;&nbsp;&nbsp;&nbsp;158760&nbsp;&nbsp;&nbsp;83&nbsp;&nbsp;Linux<br/>
 +
/dev/sda4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;71&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2184&nbsp;&nbsp;15981840&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;Extended<br/>
 +
/dev/sda5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;71&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;209&nbsp;&nbsp;&nbsp;1050808+&nbsp;&nbsp;83&nbsp;&nbsp;Linux<br/>
 +
/dev/sda6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;210&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;348&nbsp;&nbsp;&nbsp;1050808+&nbsp;&nbsp;83&nbsp;&nbsp;Linux<br/>
 +
/dev/sda7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;349&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;626&nbsp;&nbsp;&nbsp;2101648+&nbsp;&nbsp;83&nbsp;&nbsp;Linux<br/>
 +
/dev/sda8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;627&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;904&nbsp;&nbsp;&nbsp;2101648+&nbsp;&nbsp;83&nbsp;&nbsp;Linux<br/>
 +
/dev/sda9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;905&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2184&nbsp;&nbsp;&nbsp;9676768+&nbsp;&nbsp;83&nbsp;&nbsp;Linux<br/>
 +
<br/>
 +
Command (m for help):
 +
}}
 +
 
 +
이 각각의 디스크에는 7개의 리눅스 시스템을 탑재하고("Linux"라고 표시한 각각의 분할 구역), 하나의 스왑 분할 공간을 넣었습니다("Linux swap"으로 표시).
 +
 
 +
====모든 분할 구역 제거====
 +
먼저 디스크의 모든 분할 구역을 제거하겠습니다. 분할 구역을 삭제하려면 {{Blue|d}}를 입력하십시오. 예를 들어 기존의 /dev/sda1 분할 구역을 삭제하려면:
 +
 
 +
{{Example|코드 예제 4.4:분할 구역 삭제|Command (m for help): {{Blue|d}}<br/>
 +
Partition number (1-4): {{Blue|1}} }}
 +
 
 +
이 분할 구역을 삭제하는 것으로 일정을 잡았습니다. {{Blue|p}}를 입력하면 더이상 나타나지는 않습니다. 다만 바뀐 상태를 저장하기 전에는 지우지 않습니다. 실수하여 바꾼 내용을 저장하지 않고 취소하려면 {{Blue|q}}를 즉시 입력하고, 엔터키를 누르십시오. 그러면 분할 구역을 삭제하지 않습니다.
 +
 
 +
이제 시스템의 모든 분할 공간을 날리려는 상황을 가정하겠습니다. {{Blue|p}}를 입력하여 분할 구역 목록을 출력하고, {{Blue|d}}를 입력하여 몇가지 분할 구역을 삭제하십시오. 최종적으로, 디스크에 아무것도 없는 분할 구역 테이블 상태로 끝냅니다:
 +
 
 +
{{Example|코드 예제 4.5: 빈 분할 구역 테이블|Disk /dev/sda: 30.0 GB, 30005821440 bytes<br/>
 +
240 heads, 63 sectors/track, 3876 cylinders<br/>
 +
<nowiki>Units = cylinders of 15120 * 512 = 7741440 bytes</nowiki><br/>
 +
<br/>
 +
Device Boot&nbsp;&nbsp;&nbsp;&nbsp;Start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;&nbsp;&nbsp;&nbsp;Blocks&nbsp;&nbsp;&nbsp;Id&nbsp;&nbsp;System<br/>
 +
<br/>
 +
Command (m for help):<br/>}}
 +
 
 +
이제 메모리에 있는 분할 구역 테이블이 비어 분할 구역을 새로 만들 준비를 했습니다. 앞에서 언급한 기본 분할 구역 모양새를 활용하겠습니다. 물론 같은 분할 구역 모양새를 활용하기 싫다면, 이 절차를 따르지는 마십시오!
 +
 
 +
==== BIOS 시동 분할 구역 만들기 ====
 +
먼저 상당히 작은 BIOS 시동 분할 구역을 만들겠습니다. 새 분할 구역을 만드는 명령 {{Blue|n}}을 입력하고, {{Blue|p}}를 입력하여 주 분할 구역을 선택한 다음, {{Blue|1}}를 입력하여 첫번째 주 분할 구역을 선택하십시오. 처음 섹터를 물어보면 {{Blue|2048}} (부트 로더에 필요함)에서 시작하도록 입력한 다음 엔터키를 치십시오. 마지막 섹터를 물어보면 {{Blue|+2M}}을 입력하여 2MB 크기의 분할 구역을 만드십시오.
 +
 
 +
{{Example|코드 예제 4.6: BIOS 시동 분할 구역 만들기|Command (m for help): {{Blue|n}}<br/>
 +
Command action<br/>
 +
&nbsp;&nbsp;e&nbsp;&nbsp;&nbsp;extended<br/>
 +
&nbsp;&nbsp;p&nbsp;&nbsp;&nbsp;primary partition (1-4)<br/>
 +
{{Blue|p}}<br/
 +
Partition number (1-4): {{Blue|1}}<br/>
 +
First sector (64-10486533532, default 64): {{Blue|2048}}<br/>
 +
Last sector, +sectors +size{M,K,G} (4096-10486533532, default 10486533532): {{Blue|+2M}}
 +
}}
 +
 
 +
분할 구역 용도를 EFI로 표시하십시오
 +
 
 +
{{Example|코드 예제 4.7: EFI 용도 분할 구역 만들기|Command (m for help): {{Blue|t}}<br/>
 +
Selected partition {{Blue|1}}<br/>
 +
Hex code (type L to list codes): {{Blue|ef}}<br/>
 +
Changed system type of partition 1 to ef (EFI (FAT-12/16/32)) }}
 +
 
 +
==== 시동 분할 구역 만들기 ====
 +
이제 작은 시동 분할 구역을 만들겠습니다. 새 분할 구역을 만드는 명령 {{Blue|n}}을 입력하고, {{Blue|p}}를 입력하여 주 분할 구역을 선택한 후, {{Blue|2}}를 입력하여 두번째 주 분할 구역을 선택하십시오. 처음 섹터를 물어보면 엔터키를 쳐서 기본값을 수락하십시오. 마지막 섹터를 물어보면 {{Blue|+128M}}을 입력하여 128MB 크기의 분할 구역을 만드십시오.
 +
 
 +
{{Example|코드 예제 4.8: 시동 분할 구역 만들기|Command (m for help): {{Blue|n}}<br/>
 +
Command action
 +
&nbsp;&nbsp;e&nbsp;&nbsp;&nbsp;extended<br/>
 +
&nbsp;&nbsp;p&nbsp;&nbsp;&nbsp;primary partition (1-4)<br/>
 +
{{Blue|p}}<br/>
 +
Partition number (1-4): {{Blue|2}}<br/>
 +
First sector (5198-10486533532, default 5198): {{Red|(Hit enter)}}<br/>
 +
Last sector, +sectors +size{M,K,G} (4096-10486533532, default 10486533532): {{Blue|+128M}} }}
 +
 
 +
이제 {{Blue|p}}를 입력하면, 다음 분할 영역 출력이 나와야 합니다.
 +
 
 +
{{Example|코드 예제 4.9: 만든 시동 분할 구역|Command (m for help): {{Blue|p}}<br/>
 +
<br/>
 +
Disk /dev/sda: 30.0 GB, 30005821440 bytes<br/>
 +
240 heads, 63 sectors/track, 3876 cylinders<br/>
 +
<nowiki>Units = cylinders of 15120 * 512 = 7741440 bytes</nowiki><br/>
 +
<br/>
 +
&nbsp;&nbsp;&nbsp;Device&nbsp;Boot&nbsp;&nbsp;&nbsp;Start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Blocks&nbsp;&nbsp;&nbsp;&nbsp;Id&nbsp;&nbsp;System<br/>
 +
/dev/sda1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5198+&nbsp;&nbsp;&nbsp;&nbsp;ef&nbsp;&nbsp;EFI (FAT-12/16/32)<br/>
 +
/dev/sda2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;14&nbsp;&nbsp;&nbsp;&nbsp;105808+&nbsp;&nbsp;83&nbsp;&nbsp;Linux<br/>
 +
}}
 +
 
 +
이 분할 구역으로 시동할 수 있게 해야 합니다. 파티션의 시동 플래그 상태를 바꾸는 {{Blue|a}} 명령을 입력하고, {{Blue|2}}를 선택하십시오. {{Blue|p}}를 다시 입력하면, "Boot" 칸에서 <nowiki>*</nowiki> 표시를 볼 수 있습니다.
 +
 
 +
==== 스왑 분할 구역 만들기 ====
 +
이제 스왑 분할 구역을 만들어보겠습니다. 스왑 분할 구역을 만들려면, {{Blue|n}}을 입력하여 새 분할 구역을 만들고, {{Blue|p}}를 입력하여 주 분할 영역을 만들고 싶다고 알리십시오. 다음  {{Blue|3}}을 입력하여 이 예제의 경우 세번째 주 분할 영역 /dev/sda3을 만드십시오. 처음 섹터를 물어보면 엔터키를 치십시오. 마지막 섹터를 물어보면 {{Blue|+512M}}(또는 스왑 공간에 필요한 공간)을 입력하여 512MB 크기의 분할 공간을 만드십시오.
 +
 
 +
이 과정이 끝나면 분할 구역 형식을 설정하는 명령 {{Blue|t}}를 입력하고, {{Blue|3}}을 입력하여 분할 구역을 선택한 다음, {{Blue|82}}를 입력하여 "Linux swap" 형식으로 설정하십시오.
 +
 
 +
==== 루트 분할 구역 만들기 ====
 +
마지막으로, 루트 분할 구역을 만들어보겠습니다. 루트 분할 구역을 만들려면, 새 분할 구역을 만드는 명령 {{Blue|n}}을 입력하고, {{Blue|p}}를 입력하여 주 분할 구역을 선택한 다음, {{Blue|4}}를 입력하여 네번째 주 분할 구역을 선택하십시오. 이 예제의 경우 /dev/sda4입니다. 처음 섹터를 물어보면, 엔터키를 치십시오. 마지막 섹터를 물어보면, 디스크의 남은 나머지 공간을 취해 분할 구역을 만들기 위해 엔터키를 치십시오. 이 과정이 끝나면, {{Blue|p}}를 입력했을 때 분할 구역 테이블의 모습은 다음과 비슷해야 합니다:

2014년 3월 17일 (월) 22:38 기준 최신판

디스크 준비하기

블록 장치 소개

블록 장치

이제 우리는 젠투 리눅스의 디스크 측면의 모습과 리눅스 파일시스템, 분할 구역, 블록 장치를 포함한 일반적인 리눅스의 모습을 살펴보겠습니다. 그 다음 디스크와 파일시스템의 이모저모에 익숙해지고 나면 젠투 리눅스 설치를 위한 분할 구역과 파일시스템의 처리과정을 안내하겠습니다.

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

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

분할 구역

리눅스 시스템을 저장하려면 이론적으로 디스크의 전체 구역을 사용할 수 있지만 실제로는 거의 그렇게 하지 못합니다. 대신 전체 디스크 블록장치는 작은 부분으로 나누어 좀 더 관리하기 쉬운 블록 장치로 만듭니다. x86 시스템에서는 이를 분할 구역(파티션)이라고 부릅니다. 현재 분할 구역을 나누는데 두가지 표준 MBR과 GPT를 활용합니다.

MBR(주 시동 레코드) 설정시 섹터 시작점과 분할 구역의 길이를 구분하는데 32비트 식별자를 사용하며, 주 분할 구역, 확장 분할 구역, 논리 분할 구역 세 가지 방식을 지원합니다. 주 분할 구역은 MBR(주 시동 레코드)에 정보를 저장하는 분할 구역입니다. MBR 이 매우 작은(512 바이트) 만큼 네 개의 주 분할 구역만을 지정할 수 있습니다. (예를 들어 /dev/sda1 부터 /dev/sda4 까지 입니다).

더 많은 분할 구역을 지원하려 주 분할 구역 중 하나를 확장 분할 구역으로 표시할 수 있습니다. 이 분할 구역은 논리 분할 구역을 보유할 수 있습니다(분할 구역 안의 분할 구역).

각각의 분할 구역은 2TB 크기로 제한되어 있습니다(32비트 식별자의 한계). 또한 MBR 설정은 백업-MBR을 지원하지 않으므로 프로그램이나 사용자가 MBR을 덮어쓰기하면 모든 분할 구역 정보를 잃게 됩니다.

GPT(GUID 분할 구역 테이블) 설정은 분할 구역에 대해 64비트 식별자를 사용합니다. 분할 구역 정보를 저장하는 위치는 MBR의 512바이트 보다 크며 분할 구역의 갯수에 제한이 없습니다. 게다가 분할 구역 용량 제한 마저도 더 큽니다(거의 8ZB입니다. 네 제타바이트죠).

운영체제와 펌웨어 간의 시스템 소프트웨어 인터페이스가 UEFI(BIOS 대신)라면, MBR이 존재할때 발생하는 호환성 문제로, GPT는 가히 필수적이라고 할 수 있습니다.

GPT는 또한 디스크 마지막 부분에 GPT를 백업하는 기능적 장점이 있는데, 앞부분의 첫번째 GPT가 깨지면 복구할 때 활용할 수 있습니다. GPT는 CRC32 체크섬을 활용하여 헤더와 분할 구역 테이블의 오류를 감지합니다.

그래서 GPT를 사용할까요? MBR을 사용할까요?

위에 설명한 바대로, 언제든 GPT 활용이 권장접근 방식으로 생각될 수도 있습니다. 다만, 몇가지 주의사항이 있습니다.

BIOS 기반 컴퓨터에서 GPT를 활용하면 동작은 하겠지만, 마이크로소프트 윈도우 운영체제와는 듀얼 부팅 기능을 활용할 수 없습니다. 이유는, 마이크로소프트 윈도우에서 GPT 분할 구역 레이블을 감지하면 EFI 모드로 부팅하기 때문입니다.

몇가지 오류가 존재하는 바이오스나 BIOS/CSM/레거시 모드로 부팅하도록 설정한 EFI에서도 GPT 레이블 처리한 디스크로 부팅할때 문제가 있습니다. 이 경우 fdisk를 통해 자체적인 MBR 분할 구역에 시동/활성화 플래그를 추가하여 문제를 비껴갈 수 있습니다(parted 에서는 GPT 테이블을 인식하지만 자체적인 MBR 분할 구역은 보여주지 않을 것입니다):


코드 예제 1.1: 자체 MBR 분할 구역에 시동 플래그 활성화
# fdisk /dev/sda

WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! The util fdisk
doesn't support GPT. Use GNU Parted.

Command (m for help): a
Partition number (1-4): 1

Command (m for help): w


고급 저장장치

x86 설치 CD는 LVM2를 지원합니다. LVM2는 분할 구역 설정으로 유연성을 극대화합니다. 설치 설명 중에, 우리는 "일반" 분할 구역에 초점을 맞추겠지만, LVM2을 지원한다는 사실에 대해 알고 있는 것 또한 좋습니다.

분할 구역 모양새 설계

기본 분할 구역 모양새

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

분할 구역 파일시스템 사이즈 설명
/dev/sda1 (bootloader) 2M BIOS 시동 분할 구역
/dev/sda2 ext2 32M 시동 분할 구역
/dev/sda3 (swap) 512M 이상 스왑 분할 구역
/dev/sda4 ext4 디스크 나머지 공간 루트 분할 구역

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


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

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

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

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

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

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

스왑 공간은 어떻게 할까요?

스왑 구역 분할에 대한 완벽한 값은 없습니다. 스왑 공간 사용의 목적은 내부 메모리(RAM)가 고갈 상태일때 커널로 디스크 공간을 제공하는 것입니다. 스왑 공간은 커널에게 디스크에서 바로 접근하지 않을 메모리 페이지를 옮길 수 있게(스왑, 페이지아웃)하며, 메모리를 비우기도 합니다. 물론, 메모리가 갑자기 필요할 때 이 페이지를 메모리로 돌려놓아야 하는데(페이지 인), 시간이 좀 걸립니다(자체 메모리와 비교하면 디스크는 매우 느립니다).

메모리를 요구하는 프로그램을 실행하는게 아니거나, 상당한 용량의 메모리를 보유하고 있다면, 많은 스왑 공간이 필요한게 아닙니다. 그러나, 스왑 공간은 최대 절전모드에서 메모리 전체 내용을 저장하는데도 사용합니다. 최대 절전 공간 기능을 활용하려 한다면, 더 큰 스왑 공간이 필요합니다. 보통 최소한 시스템에 있는 메모리 용량 만큼은 필요합니다.

BIOS 시동 분할 구역은 무엇인가요?

BIOS 시동 분할 구역은 GRUB2와 같은 부트로더가 할당 저장 공간(MBR의 경우 수백 바이트)에 적절하지 않은 추가 데이터를 놓을 수 있게 하는 매우 작은(1~2MB) 분할 구역이며, 그 어디에든 위치할 수 없습니다.

각각의 분할 구역은 항상 필요한게 아니지만, 적은 공간 차지를 고려하며, 문서에 나타낸 내용보다 과다하게 다른 분할 구역 형식을 활용해야 한다면, 각각의 경우에 BIOS 시동 분할 구역을 만드는걸 추천합니다.

완벽함을 기하도록 하기 위해 GPT 파이션 배치를 GRUB2와 사용할 경우 또는 디스크에서 1MB 영역 이전에 첫번째 분할 구역을 시작할 때 GRUB2에서 MBR 분할 구역을 사용하는 경우 BIOS 시동 분할 구역이 필요하다고 말할 수 있습니다.

기본: parted를 사용하여 디스크 공간 나누기

이 장에서는 앞서 언급한 예제 분할 구역 배치를 만드는 철차를 안내하겠습니다만, 편의를 위해 재차 언급하도록 하겠습니다.

분할 구역 설명
/dev/sda1 BIOS 시동 분할 구역
/dev/sda2 시동 분할 구역
/dev/sda3 스왑 분할 구역
/dev/sda4 루트 분할 구역

여러분의 취향에 따라 분할 배치를 바꾸어보십시오.

현재 분할 구역 배치 보기

parted 프로그램은 디스크 공간을 나누기 위한 단순한 인터페이스를 제공하며, 매우 큰 분할 구역(2TB 이상)을 지원합니다. 디스크 상에서 parted를 실행하십시오(예제에서는 /dev/sda를 사용합니다). parted에게 최적 상태로 분할 구역을 정렬하도록 요청하겠습니다.


코드 예제 3.1: parted 시작하기
# parted -a optimal /dev/sda

GNU Parted 2.3
Using /dev/sda

Welcome to GNU Parted! Type 'help' to view a list of commands.


정렬이라 함은 각각의 분할 구역이 디스크상에 알려진 위치 내에서 시작함을 의미하며, 운영체제 수준의 디스크 동작이(디스크에서 페이지 전송) 내부 디스크 동작을 최소화 함을 의미합니다. 잘못 정렬한 분할 구역은 운영체제가 단일 페이지를 요청했을 경우 조차도 디스크가 페이지 두개를 요청할지도 모릅니다.

parted 에서 지원하는 모든 옵션을 찾아보려면, help를 입력하고 리턴 키를 누르십시오.

GPT 레이블 설정

x86/amd64의 대부분의 디스크는 msdos레이블을 사용합니다. parted를 사용하면, mklabel gpt 명령으로 디스크에 GPT 레이블을 놓을 수 있습니다.


주의: 분할 형식을 바꾸면 디스크의 모든 분할 설정을 제거합니다. 디스크의 모든 데이터를 잃게 됩니다.



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


디스크에 MBR 배치를 사용하려면, mklabel msdos 명령을 사용하십시오.

모든 분할 구역 제거

GPT 레이블 설정이 아직 끝나지 않았다면(예를 들어, 앞서 언급한 mklabel 이나, 디스크를 새로 포맷했을 경우), 디스크의 모든 기존의 분할 구역을 먼저 제거해야 합니다. 현재 분할 구역을 보려면 print를 입력하고, 제거할 분할 구역에 대해 <번호>대신 숫자로 rm <번호>을 입력하십시오.


코드 예제 3.3: 디스크에서 분할 구역 제거하기
(parted) rm 2


필요하지 않은 분할 구역에 대해 같은 명령을 내리십시오. 그러나, 이 시점에서 실수를 하지 않았는지 확인하십시오. parted는 상태를 바꾸는 동작을 바로 실행합니다(사용자가 바꾼 내용을 스테이지에 쌓아두다가 저장하기 전에 "되돌리기"를 하거나 fdisk를 빠져나가는 방법으로 바꾼 내용을 취소하는 것과는 다릅니다).

분할 구역 만들기

이제 앞에서 말한 분할 구역을 만들어보겠습니다. parted로 분할 구역을 만드는 것은 그리 어려운 일이 아닙니다. 필요한 모든 일은 parted에 다음 설정 내용을 알려주는 것 뿐입니다.

  • 사용할 분할 구역 형식. 보통 primary(주) 형식을 사용합니다. msdos 분할 구역 레이블을 사용한다면, 4개 이상의 주 분할 구역을 사용할 수 없음을 기억하십시오. 4개 이상의 분할 구역을 활용하려면, extended(확장) 분할 구역을 만든 다음 logical(논리) 분할 구역을 확장 분할 구역 안에 만드십시오.
  • 분할 구역의 시작 위치 (MB, GB로 표현 가능)
  • 분할 구역이 끝나는 위치 (MB, GB로 표현 가능)

먼저 parted에게 메가바이트를 크기 단위로 쓰겠다고 알려줍시다(실제로는, 표준 표기 MiB로 줄여 부르는 메비바이트이지만, 보통 일반적으로 제일 많이 쓰는 표기인 MB로 쓰겠습니다).


코드 예제 3.4: MiB 단위 사용하기
(parted) unit mib


이제 GRUB2 부트로더에서 사용할 2MB 용량의 분할 공간을 만들겠습니다. 이 동작을 수행하기 위해 mkpart 명령을 활용하여 parted에게 1MB 영역에서 3MB 영역까지의 공간을 활용하라고 일러두겠습니다(이리하여 2MB 크기의 분할 공간을 만듭니다).


코드 예제 3.5: 2 MB 용량 분할 공간 만들기

(parted) mkpart primary 1 3
(parted) name 1 grub
(parted) set 1 bios_grub on
(parted) print
Model: Virtio Block Device (virtblk)
Disk /dev/sda: 20480MiB
Sector size (logical/physical): 512B/512B

Partition Table: gpt


시동 분할 공간(128MB), 스왑 분할 공간(예제에서는 512MB)에 대해 같은 과정을 진행하고, 루트 분할 공간에는 디스크 나머지 영역을 차지하도록 하십시오(이 경우 마지막 위치를 -1로 합니다. 음수 값은 디스크의 마지막 부분에 최대한 도달하라는 의미입니다).


코드 예제 3.6: 다른 분할 공간 만들기

(parted) mkpart primary 3 131
(parted) name 2 boot
(parted) mkpart primary 131 643
(parted) name 3 swap
(parted) mkpart primary 643 -1

(parted) name 4 rootfs


최종 결과는 다음과 비슷합니다:


코드 예제 3.7: 현재 분할 공간 배치 모양새

(parted) print
Model: Virtio Block Device (virtblk)
Disk /dev/sda: 20480MiB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number Start End Size File system Name Flags

1       1.00MiB    3.00MiB  2.00MiB               grub   bios_grub
2 3.00MiB 131MiB 128MiB boot
3 131MiB 643MiB 512MiB swap
4 643MiB 20479MiB 19836MiB rootfs


결과에 만족한다면 quit 명령을 사용하여 parted를 끝내십시오.

대안: fdisk를 사용하여 디스크 공간 나누기


중요: 2TB 용량보다 큰 단위의 분할 공간을 다루는 환경이라면, 이 절차 대신 기본: parted를 사용하여 디스크 공간 나누기 절차를 따르십시오. fdisk에서는 큰 용량의 분할 공간을 다루지 못합니다. 게다가 fdisk에서는 MBR 배치를 활용합니다. fdisk 프로그램 대신, GPT를 지원하는 gdisk(젠투에서는 gptfdisk 꾸러미로 제공합니다)가 있지만, 젠투 설치 미디어엔 없을 것입니다.


다음 부분은 fdisk를 활용하여 어떻게 예제 분할 구역 배치를 하는지 설명합니다. 예제 분할 구역 배치는 이미 앞에서 언급했습니다:

분할 구역 설명
/dev/sda1 BIOS 시동 분할 구역
/dev/sda2 시동 분할 구역
/dev/sda3 스왑 분할 구역
/dev/sda4 루트 분할 구역

여러분의 취향에 따라 분할 구역 배치를 바꾸어보십시오.

현재 분할 구역 배치 보기

fdisk는 디스크의 구역을 나누는 잘 알려진 강력한 도구입니다. 구역을 나누려는 디스크에 대해 fdisk를 실행하십시오(예제에서는 /dev/sda를 사용합니다)


코드 예제 4.1: fdisk 실행하기
# fdisk /dev/sda


fdisk에 들어가면, 다음과 같은 프롬프트를 만납니다.


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


현재 디스크의 분할 구역 설정을 표시하려면 p를 입력하십시오.


코드 예제 4.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"라고 표시한 각각의 분할 구역), 하나의 스왑 분할 공간을 넣었습니다("Linux swap"으로 표시).

모든 분할 구역 제거

먼저 디스크의 모든 분할 구역을 제거하겠습니다. 분할 구역을 삭제하려면 d를 입력하십시오. 예를 들어 기존의 /dev/sda1 분할 구역을 삭제하려면:


코드 예제 4.4:분할 구역 삭제
Command (m for help): d
Partition number (1-4): 1


이 분할 구역을 삭제하는 것으로 일정을 잡았습니다. p를 입력하면 더이상 나타나지는 않습니다. 다만 바뀐 상태를 저장하기 전에는 지우지 않습니다. 실수하여 바꾼 내용을 저장하지 않고 취소하려면 q를 즉시 입력하고, 엔터키를 누르십시오. 그러면 분할 구역을 삭제하지 않습니다.

이제 시스템의 모든 분할 공간을 날리려는 상황을 가정하겠습니다. p를 입력하여 분할 구역 목록을 출력하고, d를 입력하여 몇가지 분할 구역을 삭제하십시오. 최종적으로, 디스크에 아무것도 없는 분할 구역 테이블 상태로 끝냅니다:


코드 예제 4.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):


이제 메모리에 있는 분할 구역 테이블이 비어 분할 구역을 새로 만들 준비를 했습니다. 앞에서 언급한 기본 분할 구역 모양새를 활용하겠습니다. 물론 같은 분할 구역 모양새를 활용하기 싫다면, 이 절차를 따르지는 마십시오!

BIOS 시동 분할 구역 만들기

먼저 상당히 작은 BIOS 시동 분할 구역을 만들겠습니다. 새 분할 구역을 만드는 명령 n을 입력하고, p를 입력하여 주 분할 구역을 선택한 다음, 1를 입력하여 첫번째 주 분할 구역을 선택하십시오. 처음 섹터를 물어보면 2048 (부트 로더에 필요함)에서 시작하도록 입력한 다음 엔터키를 치십시오. 마지막 섹터를 물어보면 +2M을 입력하여 2MB 크기의 분할 구역을 만드십시오.


코드 예제 4.6: BIOS 시동 분할 구역 만들기
Command (m for help): n

Command action
  e   extended
  p   primary partition (1-4)
p<br/ Partition number (1-4): 1
First sector (64-10486533532, default 64): 2048
Last sector, +sectors +size{M,K,G} (4096-10486533532, default 10486533532): +2M


분할 구역 용도를 EFI로 표시하십시오


코드 예제 4.7: EFI 용도 분할 구역 만들기
Command (m for help): t

Selected partition 1
Hex code (type L to list codes): ef

Changed system type of partition 1 to ef (EFI (FAT-12/16/32))


시동 분할 구역 만들기

이제 작은 시동 분할 구역을 만들겠습니다. 새 분할 구역을 만드는 명령 n을 입력하고, p를 입력하여 주 분할 구역을 선택한 후, 2를 입력하여 두번째 주 분할 구역을 선택하십시오. 처음 섹터를 물어보면 엔터키를 쳐서 기본값을 수락하십시오. 마지막 섹터를 물어보면 +128M을 입력하여 128MB 크기의 분할 구역을 만드십시오.


코드 예제 4.8: 시동 분할 구역 만들기
Command (m for help): n

Command action   e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 2
First sector (5198-10486533532, default 5198): (Hit enter)

Last sector, +sectors +size{M,K,G} (4096-10486533532, default 10486533532): +128M


이제 p를 입력하면, 다음 분할 영역 출력이 나와야 합니다.


코드 예제 4.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         3      5198+    ef  EFI (FAT-12/16/32)
/dev/sda2             3         14    105808+  83  Linux


이 분할 구역으로 시동할 수 있게 해야 합니다. 파티션의 시동 플래그 상태를 바꾸는 a 명령을 입력하고, 2를 선택하십시오. p를 다시 입력하면, "Boot" 칸에서 * 표시를 볼 수 있습니다.

스왑 분할 구역 만들기

이제 스왑 분할 구역을 만들어보겠습니다. 스왑 분할 구역을 만들려면, n을 입력하여 새 분할 구역을 만들고, p를 입력하여 주 분할 영역을 만들고 싶다고 알리십시오. 다음 3을 입력하여 이 예제의 경우 세번째 주 분할 영역 /dev/sda3을 만드십시오. 처음 섹터를 물어보면 엔터키를 치십시오. 마지막 섹터를 물어보면 +512M(또는 스왑 공간에 필요한 공간)을 입력하여 512MB 크기의 분할 공간을 만드십시오.

이 과정이 끝나면 분할 구역 형식을 설정하는 명령 t를 입력하고, 3을 입력하여 분할 구역을 선택한 다음, 82를 입력하여 "Linux swap" 형식으로 설정하십시오.

루트 분할 구역 만들기

마지막으로, 루트 분할 구역을 만들어보겠습니다. 루트 분할 구역을 만들려면, 새 분할 구역을 만드는 명령 n을 입력하고, p를 입력하여 주 분할 구역을 선택한 다음, 4를 입력하여 네번째 주 분할 구역을 선택하십시오. 이 예제의 경우 /dev/sda4입니다. 처음 섹터를 물어보면, 엔터키를 치십시오. 마지막 섹터를 물어보면, 디스크의 남은 나머지 공간을 취해 분할 구역을 만들기 위해 엔터키를 치십시오. 이 과정이 끝나면, p를 입력했을 때 분할 구역 테이블의 모습은 다음과 비슷해야 합니다: