관리 메뉴

드럼치는 프로그래머

[Linux] LINUX RAID0 구축 본문

★─Programing/☆─Linux

[Linux] LINUX RAID0 구축

드럼치는한동이 2007. 8. 6. 20:42
 

-fedora core 4 에서 raid 를 구성해 보겠다.

-첫번째로 raid0(stripe) 구성

- 리눅스 LVM(Linux Volume Manager) 와 Raid0은 거의 같은 개념이다. LVM 은 필자의  블로그에 검색해보면 나온다. 차이점은 단지 data 저장방식차이다. LVM은 (2개의 디스크로 LVM 구축했다고 가정하면) 첫번째 디스크를 다 쓰고 그다음에 다음 디스크를 쓴다.. 순차적으로 쓴다는 말이다. 그러나 리눅스 Raid0(stripe)는 RR(Round Robin)방식으로 쓴다. 첫번째 디스크와 2번째 디스크를 한번씩 돌아가면서 쓴다는 말이다. 그러니 2개의 디스크에 동시에 write 하므로 데이터 write 속도는 어떤 Raid 방식보다 빠르다. 대신 2개의 디스크에서 읽어봐야 함으로 read 속도는 떨어지겠다..


- 자 그럼 구축을 해보자.. 리눅그 fedora 에서는 raid 구성 tool 로 mdadm(meta database administrator - 맞는지 모르겠다 ^^) 를 쓴다. 있는지 확인해본다.

[root@localhost ~]# rpm -qa | grep mdadm
mdadm-1.11.0-4.fc4
[root@localhost ~]#

- 테스트 환경은

. vmware 상에서 fedora core 4 깔고 200M 의 디스크를 2개 추가후 작업하겠다. sdb 와 sdc를 쓰겠다.


1) 먼저 fdisk 명령으로 sdb1 과 sdc1을 만들고 파일시스템 유형은 'Linux radi auto' 로 만든다.


[root@localhost ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-204, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-204, default 204):
Using default value 204

Command (m for help): p

Disk /dev/sdb: 214 MB, 214748160 bytes
64 heads, 32 sectors/track, 204 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         204      208880   83  Linux

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility 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): t
Selected partition 1
Hex code (type L to list codes): L

 0  Empty           1e  Hidden W95 FAT1 80  Old Minix       be  Solaris boot  
 1  FAT12           24  NEC DOS         81  Minix / old Lin bf  Solaris       
 2  XENIX root      39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 5  Extended        41  PPC PReP Boot   85  Linux extended  c7  Syrinx        
 6  FAT16           42  SFS             86  NTFS volume set da  Non-FS data   
 7  HPFS/NTFS       4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
 8  AIX             4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility  
 9  AIX bootable    4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt        
 a  OS/2 Boot Manag 50  OnTrack DM      93  Amoeba          e1  DOS access    
 b  W95 FAT32       51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O       
 c  W95 FAT32 (LBA) 52  CP/M            9f  BSD/OS          e4  SpeedStor     
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs       
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  EFI GPT       
10  OPUS            55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
11  Hidden FAT12    56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b
12  Compaq diagnost 5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor     
14  Hidden FAT16 <3 61  SpeedStor       a9  NetBSD          f4  SpeedStor     
16  Hidden FAT16    63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary 
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fd  Linux raid auto
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fe  LANstep       
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid ff  BBT           
1c  Hidden W95 FAT3 75  PC/IX         
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): p

Disk /dev/sdb: 214 MB, 214748160 bytes
64 heads, 32 sectors/track, 204 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         204      208880   fd  Linux raid autodetect

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost ~]# fdisk /dev/sdc
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-204, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-204, default 204):
Using default value 204

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): L

 0  Empty           1e  Hidden W95 FAT1 80  Old Minix       be  Solaris boot  
 1  FAT12           24  NEC DOS         81  Minix / old Lin bf  Solaris       
 2  XENIX root      39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 5  Extended        41  PPC PReP Boot   85  Linux extended  c7  Syrinx        
 6  FAT16           42  SFS             86  NTFS volume set da  Non-FS data   
 7  HPFS/NTFS       4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
 8  AIX             4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility  
 9  AIX bootable    4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt        
 a  OS/2 Boot Manag 50  OnTrack DM      93  Amoeba          e1  DOS access    
 b  W95 FAT32       51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O       
 c  W95 FAT32 (LBA) 52  CP/M            9f  BSD/OS          e4  SpeedStor     
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs       
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  EFI GPT       
10  OPUS            55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
11  Hidden FAT12    56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b
12  Compaq diagnost 5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor     
14  Hidden FAT16 <3 61  SpeedStor       a9  NetBSD          f4  SpeedStor     
16  Hidden FAT16    63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary 
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fd  Linux raid auto
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fe  LANstep       
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid ff  BBT           
1c  Hidden W95 FAT3 75  PC/IX         
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.


2) /dev/md0 장치가 있는지 알아본다. 없으면 만들면 된다.

[root@localhost ~]# ls -al /dev/md?
brw-r-----  1 root disk 9, 0  3??26 00:24 /dev/md0

장치명이 있는것이 보인다. 없으면 이렇게 만들면 된다.

[root@localhost ~]# mknod /dev/md0 b 9 0
mknod: `/dev/md0': ?뚯씪??議댁옱?⑸땲??
 캐릭터가 안 맞아서 깨지는데 이미 있다는 내용같다.


3) raid0을 구성한다.

[root@localhost ~]# mdadm --create /dev/md0 --level=0 --raid-device=2 /dev/sdb1 /dev/sdc1
mdadm: array /dev/md0 started.

 mdadm 명령중 --create 주고 --level0 으로 0(stripe)를 만들고 --raid-device 수는 2개로 주고 sdb1 과 sdc1 을 주면 된다.


[root@localhost ~]# mdadm --detail --scan   <--- 확인 명령이다.
ARRAY /dev/md0 level=raid0 num-devices=2 UUID=80ce56ed:8a0ca06d:d96d03b6:77ae5f91
   devices=/dev/sdb1,/dev/sdc1


4) md0을 파일시스템으로 만들고 /raid0으로 마운트 시킨다.

[root@localhost ~]# mkfs.ext3 /dev/md0

[root@localhost ~]#mount /dev/md0 /raid0


5) 재부팅시 올라오도록 /etc/fstab 을 구성해주면 된다.

[root@localhost ~]#vi /etc/fstab

LABEL=/                 /                       ext3    defaults        1 1
/dev/devpts             /dev/pts                devpts  gid=5,mode=620  0 0
/dev/shm                /dev/shm                tmpfs   defaults        0 0
/dev/proc               /proc                   proc    defaults        0 0
/dev/sys                /sys                    sysfs   defaults        0 0
/dev/md0                /raid0                  ext3    defaults        1 1  <--- 추가
LABEL=SWAP-sda2         swap                    swap    defaults        0 0
/dev/fd0                /media/floppy           auto    pamconsole,exec,noauto,managed 0 0
/dev/hdc                /media/cdrecorder       auto    pamconsole,exec,noauto,managed 0 0


- 끝이다. 간단하다. 파일시스템 유형을 만들때 Hex ocde로 fd(linux raid auto) 로 만들고 mdadm 명령으로 구축해주기만 하면 된다. 물론 다른 raid 들도 같은 방식이다. 다음은 raid1(mirroring)을 구축해 보겠다.

Comments