This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.
Please visit our production wiki at https://wiki.gentoo.org
Handbook:X86/Installation/Disks/ko
블록 장치 소개
블록 장치
리눅스 파일 시스템, 분할 영역, 블록 장치 등 젠투 리눅스 및 일반적인 리눅스 운영체제의 바람직한 디스크 측면의 양상을 살펴보도록 하겠습니다. 디스크와 파일 시스템의 입출력을 이해하고 나서, 젠투 리눅스 설치에 필요한 분할 영역과 파일 시스템을 설정하겠습니다.
시작에 앞서 블록 장치를 살펴보도록 하죠. 아마~도 리눅스 시스템에서 첫번째 드라이브로 표시하는 대부분 잘 알려진 블록 장치는 /dev/sda겠죠. SCSI와 직렬 ATA 드라이브 둘 다 /dev/sd*와 같은 식으로 표시합니다. 게다가 커널의 libata 프레임워크에서는 IDE 드라이브도 마찬가지로 /dev/sd*로 표시합니다. 이전 장치 프레임워크에서 첫번째 IDE 드라이브는 /dev/hda입니다.
위에 나타낸 블록 장치는 디스크의 추상 인터페이스를 표현합니다. 사용자 프로그램은 블록 장치가 IDE가 됐든 SCSI가 됐든 뭐가 됐든지간에 신경쓰지 않고 디스크와 소통을 수행할 때 이 블록 장치를 사용할 수 있습니다. 프로그램에서는 디스크의 저장 공간에 대해, 연속적이며, 임의로 접근하는 512 바이트 블록의 모음으로 다룰 수 있습니다.
분할 영역 테이블
비록 (예를 들어서 btrfs RAID를 만든다 치면) 이론적으로 리눅스 시스템을 저장할 디스크 전체를 분할하지 않고도 사용할 수 있다고는 하지만, 실제로는 거의 불가능합니다. 대신, 전체 디스크 블록 장치를 더 작게 나누고, 더 관리하기 쉬운 블록 장치로 만들 수 있습니다. x86 시스템에서는, 분할 영역(파티션)이라고 합니다. 현재 MBR과 GPT 두가지 분할 표준 기술이 있습니다.
MBR
MBR(주 부트 레코드) 설정은 시작 섹터 및 분할 영역의 길이, 그리고 다음의 분할 영역 형식을 지원하는 32비트 식별자를 사용합니다: 주, 확장, 논리. 주 분할 영역은 마스터 부트 레코드 자체에 저장한 정보를 지니고 있습니다. 주 부트 레코드는 매우 작으며(보통 512 바이트) 디스크의 맨 처음에 위치합니다. 공간이 작기 때문에 오직 네 개의 주 분할 영역만을 지원합니다(예를 들자면, /dev/sda1부터 /dev/sda4까지).
더 많은 분할 영역을 지원하려면 주 분할 영역 중 하나를 확장 분할 영역으로 표시할 수 있습니다. 이 분할 영역은 논리 분할 영역(분할 영역 안의 분할 영역)을 보유할 수 있습니다.
Although still supported by most motherboard manufacturers partition tables are considered legacy. Unless working with hardware that is pre-2010, it best to partition a disk using a GUID Partition Table. Readers who must proceed with MBR should acknowledge the following information:
- Most post-2010 motherboards consider MBR a legacy (supported, but not ideal) boot mode.
- Due to using 32-bit identifiers, master boot record partitioning tables cannot handle disks that are greater than 2 TiBs in size.
- Unless a extended partition is created, MBR supports a maximum of four partitions.
- The MBR setup does not provide any backup-MBR, so if an application or user overwrites the MBR, all partition information is lost.
The Handbook authors suggest using GPT whenever possible for Gentoo installations.
GPT
GPT (GUID 분할 영역 테이블) 설정에선 분할 영역에 64비트 식별자를 사용합니다. 분할 영역 정보를 저장하는 위치는 512 바이트의 MBR보다 훨씬 크며, GPT 디스크 분할 영역의 수는 실제로 제한이 없습니다. 또한 분할 영역 크기도 훨씬 큰 제한 용량 값 범위에 들어갑니다(거의 8 ZB - 예, 제타바이트입니다).
운영 체제와 펌웨어의 시스템 프로그램 인터페이스가 (BIOS 대신) UEFI일 때, GPT는 MBR로 인한 호환성 문제가 일어나는 현 상황에서 단연 필수라 할 수 있습니다.
GPT는 또한 검사합과 중복을 활용하는 이점이 있습니다. CRC32 검사합 값을 활용하여 헤더와 분할 영역 테이블의 오류를 찾으며 디스크의 마지막 부분에 GPT 정보를 백업합니다. 백업 데이블은 디스크 시작 부분의 주 GPT가 손상됐을 경우 복원할 때 사용할 수 있습니다.
GPT냐 MBR이냐
위 설명을 바탕으로 생각해볼 것은 GPT 방식이 언제든 추천방식이어야 한다는 점입니다. 그런데 몇가지 함정이 숨어있습니다.
BIOS 기반 컴퓨터에서 GPT를 다룬다면, 마이크로소프트 윈도우 운영체제와 듀얼 부팅을 할 수 없습니다. 마이크로소프트 윈도우는 GPT 분할 영역 레이블을 감지하면 UEFI 모드로 부팅합니다.
BIOS/CSM/레거시 모드에서 부팅하도록 설정한 몇가지 버그가 있는 마더보드 펌웨어에서도 GPT 레이블을 붙인 디스크에서 부팅할 때 문제가 있습니다. 이런 경우, fdisk에서 -t dos
옵션을 추가하여 MBR 형식으로 분할 영역 테이블을 강제로 읽게합니다.
이 경우, fdisk를 실행하고 a 키로 첫번째 분할 영역 (1) 플래그 상태를 바꾸십시오. 그 다음 디스크의 바뀐 상태를 기록(w)하고 fdisk 프로그램을 빠져나오십시오:
user $
fdisk -t dos /dev/sda
Welcome to fdisk (util-linux 2.24.1). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): a Partition number (1-4): 1 Command (m for help): w
UEFI 사용
운영체제를 부팅할 때 (BIOS 대신) UEFI를 사용하는 시스템에 젠투를 설치할 경우, EFI 시스템 분할 영역(ESP)을 만드는 과정이 중요합니다. 아래에 설명할 parted의 절차에는 이 동작을 올바르게 처리하는데 필요한 포인터가 있습니다.
ESP는 (때로는 리눅스 시스템에서 vfat으로 나타나는) FAT 종류 중 하나여야 합니다. 공식 UEFI 명세en에서는 UEFI 펌웨어에서, ESP를 활용할 때 FAT32를 추천하지만, FAT 12, 16, 32 파일 시스템을 인식한다고 명시되어 있습니다. ESP를 FAT32로 포맷하기로 합니다:
root #
mkfs.fat -F 32 /dev/sda2
FAT 변종을 ESP에 사용하지 않으면 시스템의 UEFI 펌웨어를 부트로더(또는 리눅스 커널)에서 찾을 수 있음을 장담할 수 없으며 대부분의 경우 시스템 부팅이 불가능합니다!
고급 저장장치
Btrfs RAID
위에 언급한 대로, btrfs에는 여러 장치에 파일 시스템을 만드는 기능이 있습니다. 이런 방식으로 만든 btrfs 파일 시스템은 raid0, raid1, raid10, raid5, raid6 모드로 동작할 수 있습니다. RAID 5와 RAID 6 모드는 상당한 수준으로 개선됐지만, 여전히 불안정한 것 같습니다. 다중 장치 파일 시스템을 만들고 나면, 몇가지 명령으로 새 장치를 추가하고 이전 장치를 제거할 수 있습니다. btrfs는 다른 파일 시스템보다 초심자에게 그다지 익숙하지 않은 더 많은 기능이 있습니다.
ext4 파일 시스템에서 btrfs 파일 시스템으로 변환할 수 있으며, 안정적으로 시험을 잘 거친 파일 시스템에 젠투를 설치하고 나서 btrfs 같은 새 파일 시스템을 단지 시험 목적으로 활용하여 지식을 넓혀 나가려는 사용자에게 유용합니다.
LVM
x86 설치 CD에서는 논리 볼륨 관리자(LVM)을 지원합니다. LVM에서는 분할 영역 설정을 통해 유연성을 제공합니다. 아래 설치 과정은 일반 분할 영역을 중점적으로 다루지만, 이런 방식을 원할 경우를 대비하여 LVM을 지원한다는 사실을 알아두시는 게 유익합니다. 자세한 내용은 LVM 게시글을 살펴보십시오. 초보자 여러분은 LVM의 완전한 설명은 이 안내서의 내용 범위에 벗어난다는 사실을 알아두셨으면 합니다.
기본 분할 형태
이 핸드북의 나머지 부분에서는 다음 공간 분할 형태를 간단한 배치 예제로 활용합니다:
분할 영역 | 파일 시스템 | 크기 | 설명 |
---|---|---|---|
/dev/sda1 | (부트로더) | 2M | BIOS 부트 분할 영역 |
/dev/sda2 | ext2 (UEFI를 사용하는 경우 fat32) | 128M | 부트/EFI 시스템 분할 영역 |
/dev/sda3 | (스왑) | 512M 이상 | 스왑 분할 영역 |
/dev/sda4 | ext4 | 디스크 나머지 부분 | 루트 분할 영역 |
이 내용으로 충분하고 독자 여러분이 GPT 방식으로 진행하겠다면 기본: 디스크 분할시 parted 사용편으로 넘어갈 수 있습니다. 여전히 MBR 방식(이보쇼?!)을 선호하고 예제 배치를 따라가겠다면 대안: 디스크 분할시 fdisk 사용편으로 넘어갈 수 있습니다.
fdisk와 parted는 디스크 공간 분할 유틸리티입니다. fdisk는 잘 알려진, 안정적인 프로그램이며 MBR 공간 분할 방식에 추천하지만 parted는 GPT 공간 분할 방식을 지원하는 리눅스용 첫 블록 장치 관리 유틸리티 중 하나입니다. fdisk 인터페이스 방식을 선호하는 사용자라면 parted 대신 gdisk(GPT fdisk)를 사용할 수 있습니다.
만들기 절차를 진행하기 전에 해당 절의 첫번째 부분에서는 분할 영역 형태를 어떻게 만드는지와 일반적인 문제를 언급하는 내용을 다루겠습니다.
분할 배치 설계
분할 영역을 얼마나 많이, 크게 할까요?
분할 영역의 수는 환경에 따라 다릅니다. 예를 들어, 사용자가 많을 경우 보안성을 개선하고 백업을 쉽게 하기 위해 /home/을 나누는 것이 좋습니다. 젠투를 메일 서버로 설치한다면, /var/에 모든 메일을 저장하므로 /var/를 나누어야 합니다. 파일 시스템의 탁월한 선택은 성능을 극대화합니다. 게임 서버는 게임 서버를 설치할 /opt/를 따로 나눕니다. 이유는 /home/과 비슷합니다: 보안과 백업이죠. 대부분의 상황에서 /usr/는 거대한 상태고 남아있습니다. 주요 프로그램을 저장할 뿐만 아니라, (보통 /usr/portage에 기본으로 들어가는) 젠투 이빌드 저장소는 거의 650MB를 차지합니다. 이 디스크 공간은 보통 이빌드 저장소내에 저장하는 packages/와 distfiles/ 디렉터리는 제외하고 추산합니다.
관리자 취향에 달려있습니다. 분할 영역 또는 볼륨을 나누면 다음과 같은 장점이 있습니다:
- 각 분할 영역 또는 볼륨에 대해 최상의 동작을 수행하는 파일 시스템을 선택합니다.
- 제 기능을 상실한 도구가 분할 영역 또는 볼륨에 계속 파일을 기록할 경우, 남아 있는 공간이 없어져 전체 시스템이 동작하지 않습니다.
- 필요한 경우, (이 장점은 여러 개의 분할 영역보다는 여러 대의 디스크에서 더 돋보이지만) 동시에 여러 분할 영역을 검사할 수 있어, 파일 시스템 검사 시간을 줄일 수 있습니다.
- 일부 분할 영역 또는 볼륨을 읽기 전용,
nosuid
(setuid 무시),noexec
(실행 비트 무시) 등으로 마운트하여 보안성을 개선할 수 있습니다.
그러나, 마찬가지로 다중 분할 영역에는 단점도 존재합니다. 제대로 설정하지 않으면 어떤 분할 영역에는 공간이 상당히 남지만, 다른 분할 영역은 그렇지 않을 수 있습니다. 다른 골칫거리는 분할 영역이 나뉘어져 있는 상황입니다. /usr/ 또는 /var/와 같은 중요한 마운트 지점은 특히 그렇습니다. 다른 부팅 스크립트를 시작하기 전에 분할 영역을 마운트하려면 관리자가 종종 initramfs로 부팅해야합니다. 항상 있는 경우는 아니기 때문에 결과가 다양하게 나타납니다.
디스크에서 GPT 레이블을 사용하지 않으면 SCSI와 SATA에서는 분할 영역 갯수가 15개로 제한되어있습니다.
스왑 공간이 무엇인가요?
완벽한 스왑 분할 영역 값은 없습니다. 스왑 영역의 존재 목적은 내부 메모리(RAM)가 용량 고갈에 처해있을 때 커널에서 디스크 공간을 제공하려는 것입니다. 스왑 영역은 커널에서 곧 접근하지 않을 메모리 페이지를 디스크(스왑 또는 페이지-아웃)에 옮기고 메모리를 확보할 수 있도록 합니다. 물론 메모리가 갑자기 필요할 때도 이 페이지를 메모리에 되돌려놓습니다만(페이지-인), 시간이 오래걸립니다(내부 메모리에 비해 디스크는 비교적 매우 느립니다).
시스템이 메모리를 집중적으로 사용하는 프로그램을 실행하려 하지 않거나 시스템에 충분한 메모리가 있을 경우 많은 스왑 영역이 필요하지 않을지도 모릅니다. 그러나 스왑 영역은 최대 절전모드 기능을 사용할 경우 전체 메모리 공간을 사용하기도 합니다. 시스템을 최대 절전모드로 진입하려 한다면, 더 큰 스왑 영역이 필요하며, 최소한, 종종 시스템에 대용량의 메모리를 설치합니다.
BIOS 부트 분할 영역이란?
BIOS 부팅 분할 영역은 매우 작(1~2MB)으며 GRUB2와 같은 부트로더가 할당 저장 공간(MBR의 경우 몇 백 메가바이트정도 저장함)에 맞지 않는 추가 데이터를 저장할 수 있으며, 어떤 위치에든 둘 수 있는건 아닙니다.
일부 분할 영역은 항상 필요하지 않지만 적은 공간을 차지함을 고려해야 하며 과다한 공간 분할의 차이를 문서로 기록하기 어렵기 때문에, 문서화 한 내용에 대해 분할 영역을 만드는 방법만 추천합니다.
완벽을 기하기 위해, GPT 분할 영역 배치를 GRUB2에서 활용할 때 또는 GRUB2에서 디스크 처음 부분 1MB 영역 앞 부분에 첫 분할 영역을 시작하는 MBR 분할 영역 배치를 활용할 때 BIOS 부팅 분할 영역이 필요합니다.
기본: 디스크 분할시 parted 사용
이 절에서는 앞서 언급한 절차에서 설명한 분할 영역 배치 예제를 사용합니다:
분할 영역 | 설명 |
---|---|
/dev/sda1 | BIOS 부팅 분할 영역 |
/dev/sda2 | 부트 분할 영역 |
/dev/sda3 | 스왑 분할 영역 |
/dev/sda4 | 루트 분할 영역 |
개인 취향에 따라 분할 영역 배치를 바꾸십시오.
parted에서 현재 분할 영역 배치 보기
parted 프로그램에는 디스크 공간 분할에 활용할 간단한 인터페이스를 공하며 (2TB 이상) 매우 큰 분할 영역 크기를 지원합니다. parted 다시 실행하십시오(여기서는 /dev/sda를 활용). parted에 최적의 분할 영역 정렬을 요청하는 것이 좋습니다.
root #
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를 입력하고 Enter를 누르십시오.
GPT 레이블 설정
대부분 x86 또는 amd64에서는 디스크를 msdos 레이블로 준비합니다. parted에서 디스크에 GPT 레이블을 쓰게 하는 명령은 mklabel gpt:
분할 영역 형식을 바꾸면 디스크의 모든 분할 영역이 날아갑니다. 디스크의 모든 데이터를 잃습니다.
(parted)
mklabel gpt
MBR 배치 방식의 디스크를 만들려면, mklabel msdos 명령을 사용하십시오.
parted에서 모든 분할 영역 제거
아직 끝난 과정이 아니라면(mklabel 동작을 미리 처리했거나, 디스크를 새로 포맷했을 경우), 먼저 모든 분할 영역을 디스크에서 제거하십시오. print를 입력하여 현재 분할 영역 상태를 보고, rm <N>를 입력하되, <N>
자리에는 제거할 분할 영역 번호를 넣으십시오.
(parted)
rm 2
필요없는 다른 모든 분할 영역에도 똑같은 동작을 진행하십시오. 그러나 여기서 실수하지 않았는지 확인하십시오. parted에서는 상태 바꾸기를 즉시 처리합니다(작업을 스테이지에 올려놓아 디스크의 상태를 저장하고 나가기 전에 실행 취소가능한 fdisk와는 다릅니다).
분할 영역 만들기
이제 parted에서 다음 설정으로 분할 영역을 만들겠습니다:
- 사용할 분할 영역 형식. 주 분할 영역이 보통입니다. msdos 분할 영역 레이블을 사용한다면, 주 분할 영역을 네개 이상은 만들 수 없다는 점을 기억하십시오. 네개 이상의 분할 영역이 필요하다면, 네 분할 영역 중 하나는 확장 분할 영역이어야 하고 논리 분할 영역을 확장 분할 영역에 넣어야합니다.
- 분할 영역의 시작 지점(MB, GB 등으로 표현할 수 있음)
- 분할 영역의 끝 지점(MB, GB 등으로 표현할 수 있음)
우선 parted에 우리가 다룰 크기를 메가바이트 단위로 알려주십시오(실제로는 표준 표기법인 MiB로 줄여 쓰는 메비바이트지만, 보다 일반적으로 쓰는 MB로 적겠습니다):
(parted)
unit mib
이제 GRUB2 부트로더에서 나중에 사용할 2MB 분할 영역을 만드십시오. mkpart 명령을 사용하시고 parted에 1MB 위치에서 3MB 위치까지 사용(2MB 크기의 분할 영역을 만듬)한다고 알려주십시오.
(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 Number Start End Size File system Name Flags 1 1.00MiB 3.00MiB 2.00MiB grub bios_grub
부팅 분할 영역(128MB), 스왑 분할 영역(예제에서는 512MB), 나머지 디스크 공간을 모두 차지하는 루트 분할 영역(디스크의 끝 부분은 분할 영역이 최대한 다다를 수 있는 -1MB이며 이런 의미에서 마지막 위치를 -1로 적음)에 같은 동작을 진행하십시오.
(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
시스템을 부팅할 때 (BIOS 대신) UEFI 인더페이스를 사용한다면, 부트 분할 영역을 EFI 시스템 분할 영역으로 표시하십시오. parted에서는 분할 영역에 boot 옵션을 설정할 때 EFI 시스템 분할 영역으로 자동으로 표시해줍니다:
(parted)
set 2 boot on
최종 결과는 다음과 같습니다:
(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 boot 3 131MiB 643MiB 512MiB swap 4 643MiB 20479MiB 19836MiB rootfs
UEFI 설치시, 부팅 플래그와 ESP플래그는 부팅 분할 영역에 나타납니다.
parted를 빠져나가려면 quit 명령을 사용하십시오.
대안: 디스크 분할시 fdisk 사용
최근의 fdisk에서 GPT를 지원해야하지만, 아직도 문제가 있습니다. 아래에 제시한 절차는 MBR 분할 영역 배치를 사용할 경우를 가정합니다.
다음 부분에서는 fdisk를 사용하여 예제 분할 영역 배치를 만드는 방법을 설명합니다. 예제 분할 영역 배치는 앞서 언급했습니다:
분할 영역 | 설명 |
---|---|
/dev/sda1 | BIOS 부팅 분할 영역 |
/dev/sda2 | 부팅 분할 영역 |
/dev/sda3 | 스왑 분할 영역 |
/dev/sda4 | 루트 분할 영역 |
개인 취향에 따라 분할 영역 배치를 바꾸십시오.
현재 분할 영역 배치 보기
fdisk는 디스크를 분할 영역으로 나누는 유명하고 강력한 도구입니다. fdisk를 디스크에서 다시 실행해보십시오(예제에서는 /dev/sda를 사용):
root #
fdisk /dev/sda
GPT 지원을 활용하려면
-t gpt
를 추가하십시오. 기본 동작을 MBR로 바꾸는 최근 fdisk 개발 버전에서 fdisk 출력을 잘 살펴보려면 추천합니다. 이 절차의 나머지 부분에서는 MBR 배치 사용을 가정합니다.p키를 사용하여 현재 분할 영역 설정을 표시하십시오:
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
각각의 디스크에는 하나의 스왑 분할 영역과("Linux Swap"으로 나타남) 7개의 리눅스 시스템(각각의 분할 영역이 "Linux"라고 나타남)을 넣도록 설정했습니다.
fdisk에서 모든 분할 영역 제거
디스크에서 모든 분할 영역을 제거하십시오. d를 입력하여 분할 영역을 삭제하십시오. 기존의 /dev/sda1 분할 영역을 삭제하려면:
Command (m for help):
d
Partition number (1-4): 1
분할 영역을 삭제할 예정입니다. 분할 영역 목록에는 더이상 나타나지 않겠지만(p) 바뀐 내용을 저장하기 전에는 지워지지 않습니다. 사용자가 실수했을 경우 진행을 멈출 수 있습니다. 이 경우 q를 바로 입력하고 Enter를 치면 분할 영역을 삭제하지않습니다.
p를 입력하여 분할 영역 목록을 출력하고 d와 삭제할 분할 영역 번호를 입력하는 과정을 반복하십시오. 최종적으로, 분할 영역 테이블을 비웠습니다:
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
이제 메모리에 있는 분할 영역 테이블을 비웠고, 분할 영역을 만들 준비를 끝냈습니다.
BIOS 부팅 분할 영역 만들기
먼저 매우 작은 BIOS 부팅 분할 영역을 만들겠습니다. 새 분할 영역을 만드는 명령 n을 입력하시고, 주 분할 영역을 선택할 p를 입력한 후, 1을 입력하여 첫번째 주 분할 영역을 선택하십시오. 첫번째 섹터를 물어보면 2048부터 시작하는지(부트로더에 필요함)확인한 후 Enter를 치십시오. 마지막 섹터를 물어보면 +2M을 입력하여 2MB 크기의 분할 영역을 만드십시오:
2048 섹터 시작점은 이 분할 영역을 부트로더에서 인식하지 못했을 때 고장 배제 대책으로 활용하려는 용도입니다.
Command (m for help):
n
Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First sector (64-10486533532, default 64): 2048 Last sector, +sectors +size{M,K,G} (4096-10486533532, default 10486533532): +2M
UEFI 용도로 분할 영역을 표시하십시오:
Command (m for help):
t
Selected partition 1 Hex code (type L to list codes): 4 Changed system type of partition 1 to 4 (BIOS boot)
MBR 분할 영역 배치 방식에 UEFI 사용을 권장하지 않습니다. UEFI 기능이 있는 시스템을 사용한다면 GPT 배치 방식을 활용하십시오.
부팅 분할 영역 만들기
이제 작은 부트 분할 영역을 만들겠습니다. 새 분할 영역을 만드는 명령 n을 입력하시고, 주 분할 영역을 선택할 p를 입력한 후, 두번째 주 분할 영역을 선택할 2를 입력하십시오. 첫번째 섹터를 물어보면 그냥 Enter를 치십시오. 마지막 섹터를 물어보면 +128M을 입력하여 128MB 크기의 분할 영역을 만드십시오:
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를 누르면 다음 분할 영역 출력이 나타납니다:
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를 입력하여 fdisk
에게 주 분할 영역 만들기를 지시한 후, 3을 입력하여 세번째 주 분할 영역 /dev/sda3을 만드십시오. 첫번째 섹터를 물어보면 Enter를 치십시오. 마지막 섹터를 물어보면 +512M(또는 필요한 스왑 공간만큼)을 입력하여 512MB 크기의 분할 영역을 만드십시오.
이 과정이 끝난 후 분할 영역 형식을 설정하는 명령 t를 입력하고, 3을 입력하여 방금 만든 분할 영역을 입력한 후, 82를 입력하여 "Linux Swap" 형식으로 바꾸십시오.
루트 분할 영역 만들기
마지막으로, 루트 분할 영역을 만들려면, 새 분할 영역을 만드는 명령 n을 입력하시고, p를 입력하여 fdisk에게 주 분할 영역 만들기를 지시한 후, 4를 입력하여 네번째 주 분할 영역 /dev/sda4를 만드십시오. 첫번째 섹터를 물어보면 Enter를 치십시오. 마지막 섹터를 물어보면 Enter를 쳐서 디스크의 나머지 공간을 취하는 분할 영역을 만드십시오. 이 과정이 끝나면 p를 입력하였을 때 다음과 같은 분할 영역 테이블 모습이 나타나야합니다:
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 /dev/sda3 15 81 506520 82 Linux swap /dev/sda4 82 3876 28690200 83 Linux
분할 영역 배치 저장하기
분할 영역 배치를 저장하고 fdisk를 빠져나가려면 w를 입력하십시오.
Command (m for help):
w
분할 영역을 만들었다면 이제 파일 시스템을 올려놓을 차례입니다.
파일 시스템 만들기
도입부
이제 분할 영역을 만들었고, 파일 시스템을 제 위치에 얹어놓을 차례입니다. 다음 절에서는 리눅스에서 지원하는 다양한 파일 시스템을 설명합니다. 어떤 파일 시스템을 사용할 지 이미 알고 있는 독자라면 파티션에 파일 시스템 반영하기로 계속 진행할 수 있습니다. 그렇지 않으면 계속 읽어 내려가면서 쓸 수 있는 파일시스템이 어떤 종류가 있는지 알아보십시오.
파일 시스템
다양한 파일 시스템이 있습니다. 일부는 x86 아키텍처에서 안정적입니다 - 중요한 분할 영역을 위해서라면 좀 더 시험적인 분할 영역을 선택하기 전에 파일 시스템과 지원 상태에 대한 내용을 좀 더 읽어보시는 것이 좋겠습니다.
- btrfs
- 스냅샷, 검사합을 통한 자체복구, 투명 압축, 하위 볼륨, 통합 RAID 같은 고급 기능을 제공하는 차세대 파일 시스템입니다. 일부 배포판은 이미 특별한 옵션으로 탑재했지만 실무에서 쓰기엔 준비가 미흡합니다. 파일 시스템이 깨지는 경우가 다반사입니다. 개발자들은 이전 버전에 문제가 있기 때문에 안전을 위해 최신 커널 버전을 사용하라고 합니다. 몇년 동안 이래왔고 무엇인가 바뀐다고 하면 너무 일찍 언급합니다. 깨지는 문제를 고친다고 하면 가끔 이전 커널에 있던 대로 돌아갑니다. 파일 시스템을 쓰려 한다면 위험을 감수하십시오!
- ext2
- 검증된 리눅스 파일시스템이지만 메타데이터 저널링기능이 없습니다. 이는 시작시간의 파일시스템 검사루틴에서 조금 더 많은 시간소모를 할 수 있다는 의미입니다. 이제 일관성 검사를 더욱 빠르게 할 수 있고 비 저널링의 대체 수단으로써 일반적으로 더욱 선호하는 차세대 저널링 파일시스템의 상당한 선택요소가 있습니다. 저널링 파일시스템은 시스템을 시동하고 파일시스템에 비일관 상태가 발생했을 때 긴 지연시간을 줄입니다.
- ext3
- 빠른 복구 기능을 제공하는 메타데이터 저널링을 제공하며, 게다가 전체 데이터와 정렬된 데이터 저널링과 같은 강화 저널링 모드도 지원하는 ext2 파일시스템의 저널링 버전입니다. 대부분의 모든 상황에서 고성능 동작이 가능한 HTree 색인을 사용합니다. 간단히 말해 ext3는 아주 좋은 믿을 수 있는 파일시스템입니다. ext3을 모든 목적의 모든 플랫폼 파일시스템으로 추천합니다.
- ext4
- ext3으로부터 갈라져 나와 성능을 향상시키고 디스크상 형식에 대해 적절한 수정을 가하여 용량 제한을 없애는 새로운 기능을 포함하여 만든 파일시스템입니다. 볼륨 하나의 크기를 1EB까지 늘릴 수 있고, 파일 최대 크기는 16TB가 될 수 있습니다. 기존의 ext2/3 비트맵 블록 할당 대신에 ext4는 대용량 파일 성능을 끌어올리고 단편화를 줄인 extents를 사용합니다. ext4는 디스크의 데이터 배치에 대해 최적화 할 더 많은 방법을 파일시스템 드라이버에 제공하는 좀 더 세련된 블록 할당 알고리즘(지연할당 및 다중블록 할당)을 제공합니다. ext4는 모든 목적의 모든 플랫폼의 파일 시스템에 추천합니다.
- f2fs
- 플래시 지향 파일 시스템은 처음에 낸드 플래시 메모리에서 활용할 목적으로 삼성에서 만들었습니다. 2016년 2/4분기 시점에, 이 파일 시스템은 여전히 미완의 상태지만 젠투를 마이크로SD 카드, USB 드라이브, 기타 플래시 기반 저장 장치에 설치할 경우 괜찮은 선택입니다.
- JFS
- IBM의 고성능 저널링 파일시스템입니다. JFS는 다양한 상황속에서도 좋은 성능을 내는, 가볍고 빠르며 믿을 수 있는 B+트리 기반 파일시스템입니다.
- ReiserFS
- 전반적으로 좋은 성능을 내며 특히 용량이 작은 수많은 파일들을 다룰 때 더 많은 CPU 사이클을 소비하는 경우 좋은 성능이 나는 B+트리 기반 저널링 파일시스템입니다. ReiserFS는 다른 파일시스템보다 덜 관리중인 것으로 보입니다.
- XFS
- 견고한 기능 모음을 지니고 있으며 확장성에 있어 최적화 된 메타데이터 저널링 파일시스템입니다. XFS는 다양한 하드웨어 문제에 대해 그다지 관대하진 않은 것 같습니다.
- vfat
- FAT32로 알려진 vfat은 리눅스에서 지원하지만 권한 설정은 지원하지 않습니다. 여러 운영 체제간 상호 운용성을 목적으로(주로 마이크로소프트 윈도우) 활용하지만 일부 시스템 펌웨어(UEFI)용으로도 필요합니다.
- NTFS
- "New Technology" 파일 시스템은 마이크로 소프트의 대표 파일 시스템입니다. 위의 vfat과 비슷하게 BSD 또는 리눅스에서 필요한 권한 설정 또는 확장 속성을 저장하지 않기에 루트 파일 시스템으로 활용할 수 없습니다. 오직 마이크로소프트 윈도우와 상호 연동할 때만 활용해야합니다(오직 이 경우에만 역점을 둠을 참고하십시오).
(8GB 이하의) 작은 분할 영역에서 ext2, ext3, ext4 를 사용한다면, 충분한 inode 갯수를 예약할 적당한 옵션으로 파일 시스템을 만들어야합니다. mke2fs(mkfs.ext2)에서는 "아이노드 당 바이트" 설정을 사용하여 파일 시스템에서 보유할 아이노드 갯수를 계산합니다. 작은 분할 영역일수록 아이노드 갯수를 늘리는 것이 좋습니다.
ext2에서는, 다음 명령을 사용하시면 됩니다:
root #
mkfs.ext2 -T small /dev/<device>
ext3과 ext4에서는, -j
옵션을 추가하여 저널링을 활성화하십시오:
root #
mkfs.ext2 -j -T small /dev/<device>
각 16kB 영역을 하나의 4kB 영역으로 줄이는 "아이노드 당 바이트"로 주어진 파일 시스템의 아이노드 갯수를 네 배로 뻥튀기(?)합니다. 비율값을 부여하여 속성을 조절할 수 있습니다:
root #
mkfs.ext2 -i <ratio> /dev/<device>
분할 영역에 파일 시스템 반영하기
분할 영역 또는 볼륨에 파일 시스템을 만들 때, 각 파일 시스템에서 사용할 수 있는 도구가 있습니다. 각 파일 시스템의 추가 정보를 살펴보려면 하단 표의 파일 시스템 이름을 누르십시오:
파일시스템 | 구성 명령 | 최소 CD 포함? | 꾸러미 |
---|---|---|---|
btrfs | mkfs.btrfs | Yes | sys-fs/btrfs-progs |
ext2 | mkfs.ext2 | Yes | sys-fs/e2fsprogs |
ext3 | mkfs.ext3 | Yes | sys-fs/e2fsprogs |
ext4 | mkfs.ext4 | Yes | sys-fs/e2fsprogs |
f2fs | mkfs.f2fs | Yes | sys-fs/f2fs-tools |
jfs | mkfs.jfs | Yes | sys-fs/jfsutils |
reiserfs | mkfs.reiserfs | Yes | sys-fs/reiserfsprogs |
xfs | mkfs.xfs | Yes | sys-fs/xfsprogs |
vfat | mkfs.vfat | Yes | sys-fs/dosfstools |
NTFS | mkfs.ntfs | Yes | sys-fs/ntfs3g |
예를 들어, 예제 분할 영역 구조와 같이 ext2 형식의 부팅 분할 영역 (/dev/sda2) 과 ext4 형식의 루트 분할 영역 (/dev/sda4)을 취하려면, 다음 명령을 사용할 수 있습니다:
root #
mkfs.ext2 /dev/sda2
root #
mkfs.ext4 /dev/sda4
이제 새로 만든 분할 영역(또는 논리 분할 영역)에 파일 시스템을 만들겠습니다.
스왑 분할 영역 활성화
mkswap은 스왑 분할 영역을 초기화하는 명령입니다:
root #
mkswap /dev/sda3
스왑 분할 영역을 활성화하려면, swapon 명령을 사용하십시오:
root #
swapon /dev/sda3
위에 언급한 명령으로 스왑을 만들고 활성화하십시오.
루트 분할 영역 마운트
이제 분할 영역을 초기화했고 파일 시스템을 넣었으므로 분할 영역을 마운트할 차례입니다. mount 명령을 사용하지만 만들어놓은 모든 분할 영역에 대해 마운트 디렉터리를 만들 필요는 없다는 사실을 잊지 마십시오. 예제를 통해 우리는 루트 분할 영역을 마운트하겠습니다:
root #
mount /dev/sda4 /mnt/gentoo
/tmp/를 따로 나눈 분할 영역에 두어야 한다면, 마운트하기 전에 퍼미션을 바꾸었는지 확인하십시오:
root #
chmod 1777 /mnt/gentoo/tmp
지침을 따르고 나면 proc 파일 시스템(커널 가상 인터페이스)와 다른 커널 의사 파일 시스템을 마운트합니다. 그러나 우선 젠투 설치 파일을 설치하겠습니다.