디스크 관리 부분(force님, freemir님, 잔디님)
1. cfdisk 소개
2. cfdisk에서의 파티션 설정
3. 하드디스크 추가
4. Software-RAID HOWTO
######################################################################
디스크 관리부분
######################################################################
*1. cfdisk 소개
1. cfdisk란?
cfdisk는 기존의 숫자 선택을 통한 일방적인 진행을 통해 설정하던 fdisk를 메뉴화
시키고, 조금 더 인터렉티브(interactive)하게 만든 것으로, 현재 레드햇 리눅스
(Red Hat Linux) 7.2 이니그마(Enigma)에서도 Disk Druid, fdisk와 함께 채용하고
있을 정도로 상당히 편리한 파티셔닝(partitioning) 도구라고 할 수 있습니다.
데비안(Debian GNU/Linux)의 경우는 파티셔닝 도구로 cfdisk를 기본으로 채택하고
있습니다. 기존의 레드햇 사용자의 경우는 cfdisk가 처음보는 형태라 dselect와
더불어 접근하는데 있어 발생하는 거부감으로 인해 접근에 어려움이 있으리라 생각
합니다. 이에, cfdisk의 기본적인 모습부터 활용까지 알아보도록 하겠습니다.
2. cfdisk의 시작
cfdisk를 사용하려면 파티션을 나누는 작업을 하는 것이므로 일반적으로 root로
로그인(login)하시거나 su(substitute user : 사용자 전환) 명령을 통해 root로
전환이 필요합니다. 또는, 그룹(group : /etc/group) 권한에서 disk 권한이 필요
합니다. sudo를 이용하셔서 root 권한을 획득하셔도 무방합니다.
서론이 길었군요. cfdisk의 실행은 결론적으로 "디스크 사용 권한(access permission)을
가진 상태에서 cfdisk를 입력하여 실행하면 된다"입니다.
---------------------------------------------------------------------
# cfdisk
---------------------------------------------------------------------
---cfdisk의 옵션에 대해---
"cfdisk --help"를 실행해 보면 몇 가지 옵션을 볼 수 있습니다.
이 옵션을 보면 다음과 같습니다.
cfdisk -v
- cfdisk의 버전을 출력합니다.
cfdisk -P {r|s|t} [option] 장치
- 해당 장치(device)의 파티션 정보를 출력합니다.
예를 들어 "cfdisk -P r /dev/hda"라고 한다면 /dev/hda 장치의 파티션 정보를
Raw 형식으로 보여줍니다.
Disk Drive: /dev/hda
Sector 0:
0x000: FA E8 42 00 81 01 4C 49 4C 4F 01 00 16 02 00 00
0x010: 00 00 00 00 5D 4C 6D 38 5B 00 00 00 00 00 00 00
만약 r 옵션 대신 s 옵션을 사용한다면, 파티션 정보를 섹터로
Partition Table for /dev/hda
First Last
# Type Sector Sector Offset Length Filesystem Type (ID) Flags
-- ------- -------- --------- ------ --------- ---------------------- ---------
1 Primary 0 385559 63 385560 Linux (83) Boot (80)
2 Primary 385560 33591914 0 33206355 Extended (05) None (00)
과 같은 파티션 요약정보를 보여줍니다.
마지막으로, t 옵션을 사용한다면, 파티션 정보를 테이블 형태로
Partition Table for /dev/hda
---Starting--- ----Ending---- Start Number of
# Flags Head Sect Cyl ID Head Sect Cyl Sector Sectors
-- ----- ---- ---- ---- ---- ---- ---- ---- -------- ---------
1 0x80 1 1 0 0x83 254 63 23 63 385497
2 0x00 0 1 24 0x05 254 63 1023 385560 33206355
과 같이 보여줍니다.
이 것이 -P 옵션이고
다른 옵션으로는 -a, -z, -c C -h -H -s S 등이 있으며, -a는 하이라이팅
(선택 영역을 반전시켜 주는 것) 대신 화살표를 사용하도록 해주며, -z는
현재 설정되어 있는 모든 파티션을 무시하고 0 파티션 즉, 아무것도 설정이 안된
것으로 간주한 상태에서 시작합니다.
-c C -h H -s S는 현재 커널이 읽어들인 하드디스크 정보를 무시하고 사용자가
직접 Cylinder(실린더), Head(헤드), Sector(섹터) 값을 입력하는 것입니다.
-----------------------------------------------------------------------
이렇게 실행을 하시면 [그림 1]과 같은 화면 구성을 보실 수 있습니다.
[그림 1 cfdisk-2-1.jpg]
한가지씩 알아 보도록 하겠습니다.
cfidk 2.11n
- cfdisk의 버전(version)을 표시하는 부분입니다.
Disk Drive: /dev/hda
- 현재 편집중인 파티션을 의미합니다. /dev/hda 인 것으로 보아 IDE 방식
하드디스크로 메인보드(Mainboard)의 프라이머리(Primary) 마스터(Master)에
연결되어 있습니다.
Size: 30738677760 bytes
- 현재 편집 중인 하드디스크의 크기를 의미합니다.
Heads: 255 Sectors per Track: 63 Cylinders: 3737
- 하드디스크의 헤더 수, 트랙 당 섹터 수, 실린더 수를 나타냅니다.
Name
- 하드디스크 파티션의 이름을 나타냅니다.
Flags
- 해당 파티션의 상태를 나타냅니다. "Boot"라고 표시되어 있는 것이 부팅 파티션입니다.
Part Type
- 파티션 종류를 나타냅니다. Primary와 Logical이 있으며, Primary는 말 그대로
주 파티션이고 Logical은 논리 파티션으로 확장(Extended) 파티션에 사용자가
사용할 수 있도록 논리적으로 분리해 놓은 파티션을 의미합니다. 참고적으로
하나의 하드 디스크에는 최대 4개까지의 주 파티션이 생성될 수 있으며 4개까지
주 파티션이 생성된 다음에는 빈 공간(Free Space)가 있어도 파티션 생성이 불가합니다.
FS Type
- 파티션의 파일시스템(file system) 종류를 나타냅니다. 현재 Linux ReiserFS와
Linux swap 파티션이 보여지고 있습니다.
[Label]
- 해당 파티션의 레이블 즉, 이름을 나타냅니다.
Size (MB)
- 해당 파티션의 크기를 MB(Mega Byte)로 나타냅니다.
Bootable
- 선택된 파티션을 부팅 파티션으로 지정합니다.
Delete
- 선택된 파티션을 삭제합니다.
Help
- cfdisk 사용법의 설명을 보여줍니다.
Maximize
- 선택된 파티션을 남은 공간을 모두 이용하며 최대 크기로 만듭니다.
Print
- 현재의 설정 상태를 Raw, Sectors, Table 형태로 보여주며, 파일로 저장,
또는 화면상으로 출력할 수 있습니다. "cfdisk -P" 옵션을 실행하는 것과 동일합니다.
Quit
- cfdisk를 종료합니다.
Type
- 현재 선택된 파티션의 종류를 결정합니다.
Units
- 한 번 선택할 때마다 우측 크기 정보를 크기(Size) -> 섹터(Sectors) ->
실린더(Cylinders)로 변경합니다.
*2. cfdisk 에서의 파티션 설정
1. 파티션 생성(Creation of Partition)
파티션을 만드려면 현재 표시되어 있는 커서를 "Pri/Log Free Space" 즉, 빈 공간으로
이동시킵니다.
메뉴에서 [New]를 선택하면 [그림 2]의 화면이 나타납니다.
[그림 2 cfdisk-3-1.jpg]
- [Primary] : 주(Primary) 파티션을 만드는 것으로, 하나의 하드 디스크 당 최대
4개의 주 파티션이 만들어 질 수 있으며, MS Windows의 경우 1개의 주 파티션을
생성하며, 나머지는 모두 확장(Extended) 파티션 상의 논리(Logical) 파티션으로
만듭니다.
- [Logical] : 논리(Logical) 파티션으로 만드는 것으로, 주 파티션과 같은 갯수
제한이 없다. (정확히는 있으나 신경을 쓰지 않아도 된다)
논리 파티션을 생성할 것이므로 [Logical]을 선택하면 [그림 3]의 화면이 나타납니다.
[그림 3 cfdisk-3-2.jpg]
Size는 말 그대로 크기를 지정하는 부분입니다.
필자의 경우는 현재 남은 13538.81MB를 둘로 나눌 생각이므로 일단은 6500MB로 지정했습니다.
크기를 지정해주면 [그림 4]의 화면이 나타납니다.
[그림 4 cfdisk-3-3.jpg]
- [Beginning] : 남은 섹터의 시작 부분부터 입력한 크기만큼 만드는 것을 의미합니다.
- [ End ] : 남은 섹터의 끝 부분부터 입력한 크기만큼 만드는 것을 의미합니다.
시작부분부터 만드는 것이 통례적이므로 [Beginning]을 선택합니다.
이제 하나의 파티션 생성이 되었습니다. 이렇게 생성을 마치면 [그림 5]와 같은 화면이
나타납니다.
[그림 5 cfdisk-3-4.jpg]
이름은 파티션 생성 순서에 따라 hda10으로 지정되었으며, 파일시스템 종류는 Linux로
기본 값이 선택되어 있습니다. 이름은 입력을 해주지 않았으므로 정해지지 않았습니다.
2. 파티션 종류 변경
파티션의 종류를 바꿔 보도록 하겠습니다.
메뉴에서 [Type]을 선택합니다.
[그림 6]과 같은 해당 번호당 지정되어 있는 파일시스템 종류를 나타내주며,
아무 키(key)나 누르면 두 번째 설명 페이지로 넘어갑니다. 아무 키나 눌러봅니다.
그러면, [그림 7]과 같이 파일시스템 설명이 계속 나오고 선택할 파일시스템의 종류를
입력하라고 나타납니다.
[그림 6 cfdisk-4-1.jpg]
[그림 7 cfdisk-4-2.jpg]
스왑(swap) 파티션으로 변경하기 위해 82를 입력했습니다.
[그림 8]처럼 6.5GB짜리 스왑 파티션이 만들어졌습니다.
[그림 8 cfdisk-4-3.jpg]
3. 파티션 삭제
파티션을 지워보도록 하겠습니다.
선택한 파티션을 지우려면 메뉴에서 [Delete]를 선택합니다.
그러면 삭제됩니다. (물어보지도 않습니다.)
4. 파티션 정보 기록
변경사항을 기록해 보겠습니다.
기록하지 않으면 변경한 사항이 기록되지 않습니다.
기록하려면 [Write]를 선택합니다.
선택을 하면 [그림 9]와 같이 현재 파티션 테이블을 디스크에 기록할 것인지 "yes"나
"no"로 대답하라는 문구가 나타납니다.
기록할 것이니 "yes"를 입력합니다. 물론, 기록하지 않으려면 "no"를 선택하시면 됩니다.
[그림 9 cfdisk-6-1.jpg]
"yes"를 선택하면 잠시 후 파티션 정보를 기록 중이라는 문구가 나타나고 다시
cfdisk 주 화면이 나타납니다.
5. cfdisk 종료
메뉴에서 [Quit]를 선택합니다.
*3. 하드디스크 추가
하드 디스크를 새로 추가 하는 작업을 다음과 같은 단계로 구분해 보았다.
단계---------------------------------------------+
1. 사전 확인 사항 점검 |
2. 하드디스크 추가 장착(커널에 인식) |
3. 파티션 작성 |
4. 파일 시스템을 포맷 |
5. 파일 시스템 마운트(/etc/fstab에 설정) |
6. 재부팅후 확인 |
------------------------------------------------+
1. 사전 확인 사항 점검
1.1 현재 사용중인 하드디스크 확인(/etc/fstab 내용확인)
----------------------------------------------------------------------
jandie@master:~$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/hda1 / reiserfs defaults,notail 0 0
/dev/hda2 none swap sw 0 0
proc /proc proc defaults 0 0
/dev/fd0 /floppy auto defaults,user,noauto 0 0
/dev/cdroms/cdrom0 /cdrom0 iso9660 defaults,ro,user,noauto 0 0
/dev/cdroms/cdrom1 /cdrom1 iso9660 defaults,ro,user,noauto 0 0
/dev/hda3 /usr reiserfs defaults,notail 0 0
/dev/hda5 /var reiserfs defaults,notail 0 0
/dev/hda6 /home reiserfs defaults,notail 0 0
/dev/hda7 /boot ext2 defaults 0 0
/dev/hda8 /home2 reiserfs defaults 0 0
tmps /dev/shm tmpfs defaults 0 0
jandie@master:~$
---------------------------------------------------------------------
1.2 df명령어로 내용확인
-h옵션은 용량단위를 보기 쉽게 해줌
-h, --human-readable
print sizes in human readable format (e.g., 1K 234M 2G)
---------------------------------------------------------------------
jandie@master:~$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda1 957M 120M 837M 13% /
/dev/hda3 4.7G 2.7G 1.9G 58% /usr
/dev/hda5 2.8G 488M 2.3G 18% /var
/dev/hda6 20G 15G 4.6G 77% /home
/dev/hda7 99M 23M 71M 25% /boot
/dev/hda8 8.9G 702M 8.2G 8% /home2
tmps 188M 0 187M 0% /dev/shm
jandie@master:~$
---------------------------------------------------------------------
1.3 mount명령어로 내용확인
---------------------------------------------------------------------
jandie@master:~$ mount
/dev/hda1 on / type reiserfs (rw,notail)
proc on /proc type proc (rw)
/dev/hda3 on /usr type reiserfs (rw,notail)
/dev/hda5 on /var type reiserfs (rw,notail)
/dev/hda6 on /home type reiserfs (rw,notail)
/dev/hda7 on /boot type ext2 (rw)
/dev/hda8 on /home2 type reiserfs (rw)
tmps on /dev/shm type tmpfs (rw)
jandie@master:~$
---------------------------------------------------------------------
하드디스크 내용과 파티션,마운트위치를 정확히 파악하셔야합니다.
2.하드디스트 추가 장착후 재부팅
2.1 재부팅후 확인(dmesg)
---------------------------------------------------------------------
jandie@master:~$ dmesg|grep hd
Kernel command line: BOOT_IMAGE=unstable ro root=341 hdd=ide-scsi
ide_setup: hdd=ide-scsi
hda: WDC WD400BB-00CFC0, ATA DISK drive
hdb: WDC WD205BA, ATA DISK drive
hdc: CRD-8402B, ATAPI CD/DVD-ROM drive
hdd: HL-DT-ST GCE-8160B, ATAPI CD/DVD-ROM drive
hda: 78165360 sectors (40021 MB) w/2048KiB Cache, CHS=4865/255/63
hdb: 40088160 sectors (20525 MB) w/2048KiB Cache, CHS=2495/255/63
hdc: ATAPI 48X CD-ROM drive, 128kB Cache
jandie@master:~$
---------------------------------------------------------------------
hdb가 추가되었습니다.
3. 파티션 작성
하드장착이 확인되었으면 fdisk로 파티션생성을 합니다.(파티션 생성은 cfdisk나
기타 파티션 작성 프로그램으로 작성하면 됩니다.)
---------------------------------------------------------------------
jandie@master:~$ fdisk /dev/hda (아무것도 적지 않으면 첫번째 IDE 드라이브가 기본값)
Command (m for help):
(첫번째로 p명령으로 파티션레이블의 현재상태를 확인한다.)
Command (m for help): p
Disk /dev/hda: 16 heads, 38 sectors, 683 cylinders
Units = Cylinders of 608 * 512 bytes
Device Boot Begin Start End Blocks Id System
/dev/hda1 * 1 1 203 61693 83 ext2
Command (m for help):
(/dev/hda1에 약60M 한개의 ext2파티션이 만들어져있다.)
command (m for help):n
Command action
e extend
p primary partition(1-4)
p
(생성할 파티션의 종류를 물어온다. 확장파티션 또는 프라이머리파티션 인지.
파티션이 4개가 넘어갈 경우 프라이머리파티션중 하나를 extend로 설정하여 나눠주면 된다.
예제는 프라이머리로만 가능)
Partition Number(1-4):2
first cylinder (204-683):204
Last cylinder or +size or +sizeM or +sizeK (204-683):+80M
---------------------------------------------------------------------
생성할 파티션번호는 1번이 사용중이므로 2번을 선택한다.
파티션의 시작실린더번호를 물어온다.
204부터 683실린더까지 사용할수 있으므로 204를 입력한다. 끝나는 실런더를 지정할때는
바이트/킬로바이트/메가바이트 단위 크기 지정이 가능하다.
대부분 메가바이트를 사용할것이다.
p로 확인을 한후 t명령어로 파티션타입을 지정해주면된다.
작업이 끝난후 w 명령어로 저장후 빠져나온다.
저장하지 않고 빠져나올경우엔 q 명령을 쓴다.
4. 작성된파티션에 파일시스템 생성
4.1 ext2
가장 흔하게 사용되는 filesystem은 Second Extended Filesystem ( ext2fs )이다.
Ext2fs filesystem은 가장 효율적이고 유연한 filesystem중의 하나이다: 이는
filename을 256자까지 가능하게 하며, filesystem 크기는 4 테라바이트까지 가능하다.
그러나 내부적으로는 우리는 extfs filesystem을 사용한다고 가정한다.
4.2 ext2 파일 시스템 생성
mkfs 명령을 사용하여 파일시스템을 만들 수 있다. 흔히 말하는 '포맷'과 비슷하다.
ext2파일시스템은 mkfs.ext2를 사용한다. mkfs.ext2와 mke2fs는 같다.
---------------------------------------------------------------------
mkfs -t type device blocks
ex> mkfs -t ext2 -c /dev/hda2 1000
---------------------------------------------------------------------
1메가 hda2 하드를 나타낸다.
하지만 대부분 자동으로 파티션크기를 인식하여 처리하므로 blocks인수는 적어주지
않는다. 괜히 잘못써주면 다른파티션까지 몽땅 날아가는 수가 있으므로 왠만하면
비어두자. 일반적으로 간단하게 mke2fs device 로 간단히 해결가능하다.
mkfs의 옵션
-c 파일시스템을 만들면서 물리적인 배드블럭을 점검
(-v 진행과정 출력옵션)
5.파일 시스템 마운트
mount 명령을 통하셔 파일 시스템을 마운트 하여야 합니다.
mount 명령에 대한 자세한 사항은 참고란을 하십시오.
---------------------------------------------------------------------
# mount -t ext2 /dev/hda3 /mnt/unstable1
# mount -t ext2 /dev/hda5 /mnt/stable
---------------------------------------------------------------------
부팅시 자동 마운트를 위한 /etc/fstab 편집
형식은 device mount-point type options
각각의 의미는 mount명령과 같다.
---------------------------------------------------------------------
jandie@master:~$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/hdb1 / reiserfs defaults,notail 0 0
/dev/hdb2 none swap sw 0 0
proc /proc proc defaults 0 0
/dev/fd0 /floppy auto defaults,user,noauto 0 0
/dev/cdroms/cdrom0 /cdrom0 iso9660 defaults,ro,user,noauto 0 0
/dev/cdroms/cdrom1 /cdrom1 iso9660 defaults,ro,user,noauto 0 0
/dev/hdb3 /usr reiserfs defaults,notail 0 0
/dev/hdb5 /var reiserfs defaults,notail 0 0
/dev/hdb6 /home reiserfs defaults,notail 0 0
/dev/hdb7 /boot ext2 defaults 0 0
/dev/hdb8 /home2 reiserfs defaults 0 0
tmps /dev/shm tmpfs defaults 0 0
/dev/hda3 /mnt/unstable1 ext2 defaults,noauto 0 0 *추가!
/dev/hda5 /mnt/stable ext2 defaults,noauto 0 0 *추가!
jandie@master:~$
---------------------------------------------------------------------
ex>
#device directory type options
/dev/hda2 / ext2 defaults
/dev/hda3 /windog ext2 defaults
/dev/cdrom /mnt/cdrom iso9660 ro,user
/proc /proc proc none
/dev/hda1 none swap sw
Options 설명 부분 -------------------------------------------------
user옵션은 root가 아닌 사용자도 그 파일시스템을 마운트할 수 있도록 해준다.
ro는 읽기전용옵션이다.
noauto옵션은 /etc/fstab에 등록은 하지만 부팅시 자동으로 마운트하지 않도록 해준다.
대부분의 파일시스템에서는 defaults옵션을 쓰면 충분하다.
rw,async 등의 많은 옵션을 작동시켜준다.
-------------------------------------------------------------------
mount -a 명령은 /etc/fstab에 등록된 모든 파일시스템을 마운트한다.
6. 재부팅후 df와mount를 사용해 추가된 파티션을 확인한다.
참고
----------------------------------------------------------------------
fdisk옵션과 mount 사용법
1.fdisk 옵션
Command (m for help): m
command action
a toggle a read only flag
b edit bsd disklabel
c toggle the mountable flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition`s system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
Command (m for help):
a 파티션을 설정할 수 있음.
b 디스크라벨 설정.
c 마운트 가능한 파티션을 설정할 수 있음.
d 파티션을 삭제할 수 있음.
l 설정가능한 파티션 타입을 보여줌.
m 파티션 설정도움말을 보여줌.
n 새로운 파티션을 생성할 수 있음.
o 도스파티션 테이블을 생성함.
p 현재 설정된 파티션을 보여줌
q 설정된 정보를 저장하지않고 fdisk를 빠져나감.
s SUN 디스크라벨을 생성함.
t 파티션 타입을 변경할 수 있음.
u 유닛정보를 열람하거나 변경할 수 있음.
v 지정된 파티션을 검사함.
w 현재까지 설정한 파티션정보를 저장하고 fdisk를 빠져나감.
x 파티션설정 전문가 모드를 들어감. 전문가모드에서 실린더수나
헤드수,트랙당 섹터수를 변경할수 있음.
파티션번호화 실린더번호를 정확히입력하여
용도대로 명령어를 사용하시면됩니다.
n을 사용하여 새 파티션을 만들고
d를 사용하여 파티션을 삭제하고
t를 사용하여 파티션 타입을 변경하고
p을 사용하여 확인하고
w를 사용하고 저장하고 빠져나온다.
2. mount
리눅스에서 파일시스템에 접근하려면 먼저 어떤 디렉토리에 마운트해야한다.
마운트를 함으로써 파일스템의 파일들이 마치 그 디렉토리에 존재하는 것처럼
보이게 한다. mount명령어는 root로 실행해야한다.
---------------------------------------------------------------------
mount -t type device mount-point
---------------------------------------------------------------------
type은 파일시스템이름이고 device는 파일시스템이 위치하고 있는 물리적장치인다(/dev/)
mount-point는 파일시스템을 마운트할 디렉토리이다.
ex> /dev/hda2 파티션을 /mnt라는 디렉토리에 마운트
---------------------------------------------------------------------
mount -t ext2 /dev/hda2 /mnt
---------------------------------------------------------------------
그밖에 iso9660파일시스템의 씨디롬을 마운트 시킬 경우엔
mount -t iso9660 -r /dev/cdrom /mnt 이런식으로 적어주면된다.
(-r은 읽기전용 옵션)
---------------------------------------------------------------------
*5. 소프트웨어 레이드 하우투 (Software-RAID HOWTO)
Jakob OEstergaard (jakob@ostenfeld.dk)
v. 0.90.7 19th of January 2000
이 HOWTO는 리눅스상에서 어떻게 소프트웨어 레이드를 사용하는지 설명한다.
* 기본적인 요구사항
Kernel : 2.4.X 버전의 커널 (raid 설정이 포함된 커널)
- make menuconfig시 커널 설정
Multi-device support (RAID and LVM) --->
[*] Multiple devices driver support (RAID and LVM)
<M> RAID support
<M> Linear (append) mode
<M> RAID-0 (striping) mode
<M> RAID-1 (mirroring) mode
<M> RAID-4/RAID-5 mode
<M> Multipath I/O support
<M> Logical volume manager (LVM) support
Package : raidtools2
* 왜 RAID인가?
레이드를 사용해야하는 많은 좋은 이유들이 있다. 그 이유로는 몇개의 물리적디스크를
하나의 커다란 가상 디바이스로 결합할수 있고 성능의 향상과 중복에 있다.
* Raid level (레이드 레벨)
여기서는 리눅스 레이드패치에서 제공할수 있는것들에 대해 간단히 설명한다.
리눅스를 위한 현재의 레이드 패치는 아래의 레벨들을 제공한다.
- Linear mode (선형모드)
두개 혹은 그 이상의 디스크들을 하나의 물리적 디바이스로 합친것을
말한다. 디스크들은 서로 붙여졌다고 볼수있다. 그래서 레이드 디바이스에
쓸때 먼저 disk0번부터 써지고 그 다음 disk 1 이런식으로 나가게 된다.
디스크들이 같은 사이즈를 갖게 되는것은 아니다. 사실 사이즈는 여기서
고려하지 않아도 된다.
이 모드에서는 중복이 없다. 만약 하나의 디스크가 파손된다면 당신은 모든
데이타를 잃어버리게 될것이다. 재수가 좋다면 몇몇 데이타는 복구할수도
있을것이다.
하나의 읽고 쓰기 성능은 향상되지 않는다. 그러나 만일 여러 유저들이
디바이스를 사용한다면 한 유저가 실제적으로 첫번째 디스크를 사용하고 다른
유저는 두번째 디스크에 재위치가 일어나서 파일을 엑세스한다면 당신은
성능이 향상되는것을 볼수 있을것이다.
- RAID-0
RAID-0 또는 stripe 모드로 불린다. 디바이스에 병렬로 읽거나 쓰는것을
제외하면 linear 모드와 같다. 디바이스들은 대략 같은 크기를 가져야 한다.
모든 엑세스가 병렬로 일어나면서 부터 디바이스들은 똑같이 채워진다.
만일 한 디바이스가 다른 디바이스에 비해 크다면 여분의 공간은 레이드
디바이스로 활용된다.
linear처럼 RAID-0역시 중복이 없다. 그러나 linear mode와 다르게
드라이브가 파손되면 당신은 아마도 어떤 데이타도 복구할수 없을것이다.
만일 당신이 Raid-0 set에서 드라이브를 제거한다면 레이드 디바이스는 단지
하나의 연속적인 데이타 블럭을 잃어버리는것이 아니라 이것은 아마도
모든 디바이스에 작은 구멍으로 채워질것이다.
읽고 쓰는 성능은 향상될것이다. 왜냐하면 읽고 쓰는것은 디바이스에 병렬로
된다. 이것은 보통 RAID-0로 구축하는 가장 중요한 이유이다.
- RAID-1
RAID-1은 실제적으로 중복을 갖는 첫번째 모드이다. 이 모드는 두개 또는 그
이상의 디스크들을 사용한다. 이모드는 하나의 디스크의 정보를 또다른
디스크에 정확하게 미러한다. 물론 디스크는 같은 사이즈이어야 한다. 만약
하나의 디스크다 좀 더 크다면 당신의 레이드 장치는 가장작은 디스크의
크기로 될것이다.
만약 하나의 디스크가 파손되었다면 모든 데이타는 그대로 보존될것이다. 만일
여분의 디스크를 사용할수 있다면 그리고 시스템이 파손을 극복하려면 잘못된
드라이브를 찾은 후에 다른 여분의 디스크중 하나에서 미러의 재구축은 즉시
시작될것이다.
쓰기 성능은 하나의 장치보다 약간 안좋아 질것이다. 왜냐하면 동일한
데이타의 복사본을 어레이안의 모든 디스크에 쓰기위해서 보내야만 한다.
- RAID-4
이 레이드 레벨은 그렇게 자주 사용되지 않는다. 이 모드는 3개 또는 그
이상의 디스크들에 사용된다. 이 모드는 정보의 미러링을 완벽하게 대신한다.
이 모드는 하나의 드라이브에 패러티정보를 보관한다. 그리고 RAID-0와 같은
방식으로 다른 디스크들에 데이타를 쓴다. 왜냐하면 하나의 디스크는 패러티
정보가 저장된다.
만일 드라이브 하나가 파손되었다면 패러티정보는 모든 데이타를
재구성하기위해 사용되어진다. 두개의 드라이브가 파손되면 모든 데이타를
잃어버리게 된다.
이 모드가 자주 사용되지 않는 이유는 패러티 정보가 하나의 드라이브에
저장되기 때문이다. 이 정보는 다른 디스크들이 쓰여질때마다 업데이트
되어야한다. 따라서 패러티 디스크는 병목현상이 발생할수 있다.
- RAID-5
RAID-5는 아마도 물리적인 디스크들을 결합하기 원할때 가장 많이 사용되는
모드일것이다. RAID-5는 3개 또는 이상의 디스크들을 사용할수 있다.
레이드5와 레이드4의 커다란 차이점은 패러티정보가 구성된 드라이브들 사이에
분산된다는 점이다. 이와같은 이유로 레이드-4의 병목현상을 피할수 있다.
만약 하나의 디스크가 파손되었다면 모든 데이타는 여전히 보존된다. 만일
여분의 디스크가 사용가능하다면 디바이스의 파손후에 재구성은 즉시
시작할것이다. 만일 두개의 디스크가 동시에 파손된다면 모든 정보를
잃어버리게 될것이다. RAID-5는 하나의 디스크가 파손되었을때는 복구할수
있다. 그러나 두개 또는 그이상일 경우는 불가능하다.
* RAID setup
먼저 레이드를 설정하기 위해서는 커널에 레이드 관련 설정이 포함되어야 한다.
또한 raidtools패키지가 설치되어있어야 한다.
레이드 설정파일을 /etc/raidtab 파일을 편집해서 설정한다.
1. Linear mode
raiddev /dev/md0
raid-level linear
nr-raid-disks 2
chunk-size 32
persistent-superblock 1
device /dev/sdb6
raid-disk 0
device /dev/sdc5
raid-disk 1
위의 설정에서 자신의 환경에 맞게 device를 설정해준다. 여분의 디스크는
여기서는 지원하지 않는다.
이와같이 설정하였으면 아래의 명령을 실행시켜 레이드 array를 만들어보자
mkraid /dev/md0
이 명령은 당신의 array를 초기화할것이다. 수퍼블락들을 반복해서 쓰고
array를 시작한다. /proc/mdstat로 실행되는지를 확인한다.
2. RAID-0
당신이 대략 같은 사이즈의 두개 혹은 그 이상의 디바이스들을 가지고 있고
그리고 그들 저장장치의 용량을 합치기를 원하고 또한 병렬 엑세스에 의해서
그들의 성능을 합치고 싶다면 아래와 같이 /etc/raidtab 파일을 편집한다.
raiddev /dev/md0
raid-level 0
nr-raid-disks 2
persistent-superblock 1
chunk-size 4
device /dev/sdb6
raid-disk 0
device /dev/sdc5
raid-disk 1
device를 자신의 설정에 맞게 편집하고 아래의 명령을 실행한다.
mkraid /dev/md0
레이드 디바이스의 실행여부를 확인하기 위해 /proc/mdstat를 확인한다.
3. RAID-1
당신이 대략 같은 사이즈의 두개의 장치를 가지고 있고 두개를 각각 서로
똑같이 하기를 원한다면 아래의 설정을 사용한다.
raiddev /dev/md0
raid-level 1
nr-raid-disks 2
nr-spare-disks 0
chunk-size 4
persistent-superblock 1
device /dev/sdb6
raid-disk 0
device /dev/sdc5
raid-disk 1
device를 자신의 설정에 맞게 편집하고 아래의 명령을 실행한다.
mkraid /dev/md0
/proc/mdstat를 확인한다.
만일 당신이 여분의 디스크를 가지고 있다면 아래처럼 장치의 마지막에 그들을
추가할수 있다.
device /dev/sdd5
spare-disk 0
4. RAID-5
당신은 사이즈가 대충 비슷한 장치들을 3개 혹은 그이상 가지고 있고 이
장치들을 좀더 큰 장치로 합치기를 원한면 RAID-5를 사용한다. 그러나 데이타의
안전성을 위해서 중복(redundancy)도를 관리해야 한다.
raiddev /dev/md0
raid-level 5
nr-raid-disks 7
nr-spare-disks 0
persistent-superblock 1
parity-algorithm left-symmetric
chunk-size 32
device /dev/sda3
raid-disk 0
device /dev/sdb1
raid-disk 1
device /dev/sdc1
raid-disk 2
device /dev/sdd1
raid-disk 3
device /dev/sde1
raid-disk 4
device /dev/sdf1
raid-disk 5
device /dev/sdg1
raid-disk 6
만일 당신이 여분의 디스크들을 가지고 있다면 아래와 같은 방법으로 추가할수
있다.
device /dev/sdh1
spare-disk 0
마찬가지로 mkraid /dev/md0명령으로 초기화하고 /proc/mdstat로 확인한다.
* raid의 시작과 중지
당신이 현재 실행되고 있는 raid 장치를 가지고 있다면 아래의 명령으로 실행과
중지를 할수있다.
raidstop /dev/md0
raidstart /dev/md0
* HARDWARE RAID
일반적으로 중형 서버급 장비에는 하드웨어적으로 raid를 구성한다.
하드웨어적으로 레이드를 구성하기 위해서는 당연히 레이드 콘트롤러가
필요하다. 하드웨어 레이드라고 해서 특별히 다른점은 없다 다만 각각의 레이드
설정을 레이드 콘트롤러의 바이오스에서 지정을 해주고 운영체제에서는 그
설정된 레이드 장치를 하나의 하드디스크로 인식하게 되는것이다.
간단히 말해서 7개의 스카시 하드디스크를 레이드콘트롤러에서 raid-5로
설정했다면 운영체제에서 인식하는 하드디스크 정보는 sda하나의 하드로
인식한다는 것이다.
* RAID의 활용
필자의 경험으로 레이드를 가장 많이 사용하는 경우는 웹서버와 데이타베이스
서버의 경우였다. 일반적으로 웹서버의 경우는 log와 www디렉토리안의
데이타를 보호하기 위해서 /var자체를 용량큰 스카시 하드디스크로 RAID-1로
구성하고 데이타베이스 시스템의 경우 DB파일이 저장되는 디렉토리나 아니면
웹서버와 마찬가지로 /var디렉토리 전체를 raid-1로 설정해서 사용했다.
RAID-5의 경우는 하드디스크의 저장용량 확보와 안정성 두가지 모두를
충족해야 하는 파일서버의 경우에 매우 유용하게 사용된다.

Comments List
嫄몄