RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
'RAID'에 해당되는 글 1

출처 : 대전국제IT교육센터 정성재 강사

 

1. RAID란?
RAID(Redundant Array of Independent[또는 inexpensive] Disks)는 여러 대의 하드디스크가 있을 때
동일한 데이터를 다른 위치에 중복해서 저장하는 방법이다. 데이터를 여러 대의 디스크에 저장하여
입출력 작업이 균형을 이루게 되어 전체적인 성능을 향상시킨다. 운영체제에서 하나의 RAID는 논리적
으로 하나의 디스크로 인식하여 처리된다. 현재 RAID는 데이터를 기록하는 방식과 에러를 체크하는
패리티(Parity)를 사용 등 구성방법에 따라 다양한 형태로 존재한다.

2. RAID의 이용
초기의 RAID는 저용량 하드디스크를 하나의 디스크로 확장하여 사용하는 것이 주류였으나 현재는 백
업을 가능하게 하고 안정적인 데이터의 보존과 유지기능도 한다. 또한 구성방법도 소프트웨어적 구현
과 하드웨어적 구현 등 다양한 방법으로 가능하다. 소프트웨어 RAID는 비용적인 측면에서 유리하나
보다 나은 성능을 위해서는 하드웨어 RAID가 좋다. 하드웨어 수준의 RAID에서 주목할 만한 기능은
전원이 켜있는 상태에서 하드드라이브를 교체할 수 있는 핫스왑(Hot Swap) 베이(Bay)가 있다.

3. RAID에서 사용하는 기술
(1) 스트라이핑(Striping): 스트라이핑기술은 연속된 데이터를 여러 개의 디스크에 라운드로빈방식
                          으로 기록하는 기술이다 .이 기술은 프로세서가 하나의 디스크에서 읽어
                          들이는 것보다 더 빠르게 데이터를 읽거나 쓸 수 있다면 매우 유용하다.
                          즉, 서로 겹쳐서 읽거나 쓸 수 있도록 설계된 네 개의 드라이브가 있을
                          경우, 보통 하나의 섹터를 읽을 수 있는 시간에 네 개의 섹터를 동시에
                          읽을 수 있다.
(2) 미러링(mirroring): 디스크에 에러가 발생할 경우를 대비하여 데이터의 손실을 막기위해, 데이
                       터를 하나 이상의 장치에 중복 저장하는 기술이다. 이 기법은 하드웨어 또는
                       소프트웨어 두가지 방법, 모두 구현될 수 있다.

4. RAID의 종류
(1) RAID-0
   1) 설명: 스트라이핑기술을 사용하여 빠른 입출력 속도를 제공한다. 데이터를 패리티없이 디스크
           에 분산하여 기록한다. 처리속도는 빠르나 데이터복구 능력이 없다.
   2) 그림
     

(2) RAID-1
   1) 설명: 미러링기술을 사용하여 두 개의 디스크에 데이터를 동일하게 기록한다. 스트라이프는
           사용하지 않으며, 각 드라이브를 동시에 읽을 수 있어 읽기 성능은 향상되나 쓰기 성능은
           단일 디스크 드라이브와 같다. 데이터 복구 능력이 탁월하다.
   2) 그림
     

(3) RAID-2
   1) 설명: 디스크들간의 스트라이프를 사용하며, 몇몇 디스크들은 에러를 감지하고 수정하는 ECC
           정보를 가지고 있다.
   2) 그림
     

(4) RAID-3
   1) 설명: 스트라이프를 사용하며 패리티정보를 저장하기 위해 별도로 하나의 드라이브를 사용한
           다. 입출력작업이 동시에 모든 드라이브에 대해 이루어지므로 입출력을 겹치게 할 수
           없다. 대형 레코드가 많은 곳에 적합하다.
   2) 그림
     

(5) RAID-4
   1) 설명: 블록형태의 스트라이프를 사용하며, 이는 어떤 단일 드라이브로부터 레코드를 읽을 수
           있다. 데이터를 읽을 때 중첩 입출력의 장점을 취할 수 있다. 쓰기시에는 패리티를 연산
           해야 하고, 패리티 디스크에 저장해야 하기 때문에 입출력의 중첩이 불가능하고 시스템에
           서 병목현상이 일어날 수 있다.
   2) 그림
     

(6) RAID-5
   1) 설명: 별도의 패리티 디스크 없이 회전식 패리티 어레이 분산하여 기록하지만 데이터를 중복
           저장하지는 않는 방법으로 일반적으로 많이 사용된다. 디스크에 쓰기 제한 주소를 지정
           하므로 모든 읽기/쓰기가 중첩될 수 있다. 작고 랜덤한 입출력이 많은 경우 더 나은 성능
           을 제공한다. 드라이브의 개수는 최소 3개로 구성하면 보통 5개 이상의 드라이브를 사용
           한다.
   2) 그림
     

(7) RAID-6
   1) 설명: 전체적인 구성은 RAID-5와 비슷하지만 드라이브들 간에 분포되어 있는 2차 패리티구성을
           포함함으로써 매우 높은 고장대비 능력을 제공한다.
   2) 그림
     

(8) RAID-7
   1) 설명: 하드웨어 컨트롤러에 내장되어 있는 운영체제를 사용하여 속도가 빠른 버스를 통한 캐시,
           독자적인 컴퓨터의 여러가지 특성을 포함하고 있다. 현재 하나의 업체만 이 시스템을
           제공한다.
   2) 그림
     

(9) RAID 0+1
   1) 설명: RAID-0의 스트라이핑기술과 미러링기술을 동시에 구현한 방법이다.
   2) 그림
     

(10) RAID-10
   1) 설명: RAID-1의 미러링에 스트라이프 어레이를 별도로 제공한다.
   2) 그림
     

(11) RAID-53
   1) 설명: RAID-3 방식에 별도의 스트라이프 어레이를 제공한다.
   2) 그림
    


5. 리눅스에서 RAID 구현하기
(1) 리눅스에서 지원하는 Software RAID 레벨
   1) RAID-Linear: 간단히 여러개의 파티션을 하나로 묶는 역할을 한다. 성능의 개선이나 안정성은
                  제공되지 않는다.
   2) RAID-0: RAID-Linear와 비슷하나 스트라이핑기술을 이용하여 처리속도가 빨라지는 속도향상이
             있다. 그러나, 디스크의 오류에 대한 안정성은 제공되지 않는다.
   3) RAID-1: 미러링기술을 이용하여 두 개 또는 그 이상의 디스크를 정확하게 복사본을 만들어
             유지시킨다. 오류가 발생하면 복사해둔 이미지로 데이터를 복구하게 된다.
   4) RAID-3: 패리티정보를 모아 별도의 디스크에 저장한다. 이 패리티정보를 이용하여 오류가 발생
             한 디스크의 데이터를 복구한다. 안정성은 있으나 디스크의 성능이 다소 감소한다.
   5) RAID-5: RAID-3과 비슷하게 패리티정보를 이용하나 디스크에 저장하지는 않는다. 안정성도 제
             공하고 RAID-3에 비해 디스크의 성능저하가 일어나지 않는다.
(2) 리눅스에서 RAID 관련 예제 파일
   1) 설명: 레드햇 9.0기준으로 /usr/share/doc/raidtools-1.00.3 디렉토리에 보면 각 레벨별로
           예제파일이 존재한다.
   2) 확인
     [root@redhat9 raidtools-1.00.3]# ls
     COPYING  multipath.conf.sample  raid1.conf.sample  raid5.conf.sample
     README   raid0.conf.sample      raid4.conf.sample  raidtab.sample
(3) 사용예: RAID-0 구성하기
   1) fdisk를 이용하여 두 개의 파티션을 생성한다. 속성을 부여한다.
    ㄱ. fdisk를 사용하여 2개의 partiton 생성(n)
       예) /dev/hda8, /dev/hda9로 가정
    ㄴ. 생성된 파티션의 속성 변경(t => fd)
       예) [root@linux245 root]# fdisk -l

           Disk /dev/hda: 20.4 GB, 20411080704 bytes
           255 heads, 63 sectors/track, 2481 cylinders
           Units = cylinders of 16065 * 512 = 8225280 bytes

              Device Boot    Start       End    Blocks   Id  System
           /dev/hda1   *         1        64    514048+  83  Linux
           /dev/hda2            65      1339  10241437+  83  Linux
           /dev/hda3          1340      1721   3068415   83  Linux
           /dev/hda4          1722      2481   6104700    f  Win95 Ext'd (LBA)
           /dev/hda5          1722      2103   3068383+  83  Linux
           /dev/hda6          2104      2230   1020096   83  Linux
           /dev/hda7          2231      2263    265041   82  Linux swap
           /dev/hda8          2264      2372    875511   fd  Linux raid autodetect
           /dev/hda9          2373      2481    875511   fd  Linux raid autodetect
    ㄷ. 재부팅: fdisk를 설정한 내용을 반영시키려면 재부팅하도록 한다.
   2) /etc/raidtab 파일 생성하기
    ㄱ. /usr/share/doc/raidtools-1.00.3 디렉토리에 있는 샘플파일을 복사한다.
       cp /usr/share/doc/raidtools-1.00.3/raidtab.sample /etc/raidtab
    ㄴ. /etc/raidtab 파일 편집하기
       [root@linux245 root]# cat /etc/raidtab
       raiddev /dev/md0                        // raid 디바이스명 지정
           raid-level                0         // raid 레벨 지정
           nr-raid-disks             2         // raid 갯수 지정
           persistent-superblock     1         // 기본 세팅지정
           chunk-size                4        

           device                    /dev/hda8  // 디바이스명
           raid-disk                 0          // raid 디스크 넘버로 0부터 설정
           device                    /dev/hda9
           raid-disk                 1
   3) raid device를 생성
     [root@linux245 root]# mkraid /dev/md0
     handling MD device /dev/md0
     analyzing super-block
     disk 0: /dev/hda8, 875511kB, raid superblock at 875392kB
     disk 1: /dev/hda9, 875511kB, raid superblock at 875392kB
   4) raid를 작동시킨다.
     [root@linux245 root]# raidstart /dev/md0
   5) 파일시스템을 생성한다.
     [root@linux245 root]# mkfs -t ext3 /dev/md0
   6) 사용하고자할 디렉토리 생성
     [root@linux245 root]# mkdir /data
   7) 마운트
     [root@linux245 root]# mount -t ext3 /dev/md0 /data
   8) 확인
    ㄱ. mount 확인
       [root@linux245 root]# mount
       /dev/hda6 on / type ext3 (rw)
       none on /proc type proc (rw)
       usbdevfs on /proc/bus/usb type usbdevfs (rw)
       /dev/hda1 on /boot type ext3 (rw)
       none on /dev/pts type devpts (rw,gid=5,mode=620)
       /dev/hda5 on /home type ext3 (rw)
       none on /dev/shm type tmpfs (rw)
       /dev/hda2 on /usr type ext3 (rw)
       /dev/hda3 on /var type ext3 (rw)
       /dev/md0 on /data type ext3 (rw)            // 이 부분
    ㄴ. raid 상태확인
       [root@linux245 root]# lsraid -p
       [dev   9,   0] /dev/md0         F4E8064A.0479FB89.38521B8A.D8094A34 online
       [dev   3,   8] /dev/hda8        F4E8064A.0479FB89.38521B8A.D8094A34 good
       [dev   3,   9] /dev/hda9        F4E8064A.0479FB89.38521B8A.D8094A34 good
    ㄷ. 용량의 확인
       [root@linux245 root]# df -h
       Filesystem            Size  Used Avail Use% Mounted on
       /dev/hda6             981M  116M  816M  13% /
       /dev/hda1             487M   14M  448M   3% /boot
       /dev/hda5             2.9G   33M  2.8G   2% /home
       none                   62M     0   62M   0% /dev/shm
       /dev/hda2             9.7G  4.5G  4.8G  49% /usr
       /dev/hda3             2.9G  304M  2.5G  11% /var
       /dev/md0              1.7G   33M  1.6G   3% /data
        => 2개의 파티션으로 구성하였으므로 두 개의 파티션이 합쳐진 총 용량으로 표시된다.
   9) 참고: 부팅후에도 계속적으로 사용하려면 /etc/fstab에 등록시킨다.
     예) /dev/md0                /data                   ext3    defaults        0 0
   10) Raid 해제하기
    ㄱ. 파일시스템을 언마운트한다.
       umount /data
    ㄴ. raid를 중지시킨다.
       raidstop /dev/md0
    ㄷ. fdisk로 파티션을 삭제하거나 재설정한다.
(4) 관련명령어
   1) mkraid
    ㄱ. 설명: RAID 장치를 초기화하여 만들어주는 명령어이다.
    ㄴ. 사용법
       mkraid [option] 디바이스명
    ㄷ. option
       -f : 해당 장치를 강제로 초기화시킨다. 데이타가 있더라도 다 지우고 초기화시킨다.
    ㄹ. 사용예
       mkraid /dev/md0
        => /dev/md0 이라는 RAID Device를 생성한다.
   2) raidstart & raidstop
    ㄱ. 설명: RAID 장치를 작동시키는 명령어이다.
    ㄴ. 사용법
       raidstart 디바이스명
       raidstop 디바이스명
    ㄷ. 사용예
      a. raidstart /dev/md0
          => RAID 장치를 작동시킨다.
      b. raidstop /dev/md0
          => RAID 장치를 중지시킨다.
   3) lsraid
    ㄱ. 설명: RAID 장치의 리스트를 보여주는 명령어이다.
    ㄴ. 사용법
       lsraid option [디바이스명]
    ㄷ. option : 대문자옵션을 기본적으로 사용해야 하면 만약 생략하면 array기반이다.
       -A : Array 기반으로 리스트를 확인할 때 쓴다.
       -D : Disk 기반으로 리스트를 확인할 때 쓴다.
       -R : /etc/raidtab 기반으로 리스트를 확인할 때 쓴다.
       -p : RAID 장치를 찾아 출력해준다.
   ㄹ. 사용예
     a. [root@linux245 root]# lsraid -A -p
        [dev   9,   0] /dev/md0         F4E8064A.0479FB89.38521B8A.D8094A34 online
        [dev   3,   8] /dev/hda8        F4E8064A.0479FB89.38521B8A.D8094A34 good
        [dev   3,   9] /dev/hda9        F4E8064A.0479FB89.38521B8A.D8094A34 good
          => Array 기반으로 리스트를 보여준다. 디바이스명을 /dev/md0 라고 입력해도 되고 입력
            하지 않으면 기본 장치를 찾아 보여준다.
     b. [root@linux245 root]# lsraid -D -p
          => Disk 기반으로 리스트를 보여준다.
     c. [root@linux245 root]# lsraid -R -p
          => /etc/raidtab의 내용을 출력해준다.
   4) raidhotadd
    ㄱ. 설명: Software RAID Array에서 하나의 디스크가 실패했을 경우 이것을 다른 디스크로 대체
            시켜 주는 주는 명령이다.
    ㄴ. 사용법
       raidhotadd RAID장치 디스크장치
    ㄷ. 사용예
       raidhotadd /dev/md0 /dev/hda10
        => /dev/hda10 디스크를 /dev/md0 RAID Array로 만든다.
    ㄹ. 참고 : 이 명령은 raidstart 명령에 심볼릭링크이며, 이 명령을 사용하기 전에 해당 파일시
              스템을 언마운트하고 RAID 동작을 정지시킨 후에 해야 한다.
       예) umount /data
           raidstop /dev/md0
           raidhotadd /dev/md0 /dev/hda10
           raidstart /dev/md0
           mount -t ext3 /dev/md0 /data
(5) /etc/raidtab 주요항목분석
   1) raiddev /dev/mdx : RAID array 장치를 정의한다.
   2) rain-level     N : RAID level을 정의한다.
   3) nr-raid-disks  N : RAID 갯수를 정의한다.
   4) persistent-superblock 1 : 이 값은 커널에서 RAID가 쉽게 찾아질 수 있도록 하는 설정이다.
                               값은 0 또는 1이 설정될 수 있으며, 1을 보통 자동으로 시작하도록
                               하는 설정이다.
   5) chunk-size     N : 레이드에 기록되는 사이즈를 정한다. 보통 kilobytes 단위이며, 커널설정
                        에 따라 차이는 있지만 최대 4M이다. 일반적으로 4k ~ 128k 로 설정한다.

우주곰:지구곰이 아닙니다.
지구곰이 아닙니다.
Categories (190)
Information (5)
About uzoogom (5)
My Advanced Linux (73)
Learning Linux (96)
OperatingSystem (5)
Databases (4)
Tips! (1)
OpenSource (1)
«   2018/04   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          
  1. 2012/12 (2)
  2. 2012/04 (3)
  3. 2012/03 (6)
  4. 2012/02 (6)
  5. 2012/01 (2)