Thursday, April 12, 2018

CentOS 6.6 리눅스 관리] 4.3 RAID - mdadm 명령을 이용한 RAID 0 Stripe 구성


안녕하세요. 썬구루입니다. 이제 CentOS 리눅스 환경에서 mdadm 명령을 이용한 RAID 0 Stripe 구성에 대해 알아보도록 하겠습니다. Stripe 구성은 Linear (RAID 0 Concatenation)와 마찬가지로 디스크 단일 장애에 대처를 할 수 없는 구조입니다. 물리적인 용량 한계를 넘을 수 있다는 것과 읽기 성능이 향상된다는 정도의 장점을 가지고 있습니다.

실무에서는 서버에 스토리지가 연결되었다면 디스크 스토리지에서 RAID 5 또는 6으로 디스크 그룹을 구성하고 용량을 분할하여 만든 LUN을 디스크 스토리지의 컨트롤러 인터페이스를 통해 서버에 던져주면 이것을 서버에 설치된 상용 또는 운영체제의 볼륨 매니저를 통해 Concatenation 또는 Stripe로 구성하고 파일시스템을 만들어 사용합니다.


이미 디스크 스토리지에 한 번 결함 허용을 할 수 있는 RAID 종류로 구성되었기 때문에 이것을 다시 중복적으로 서버에서 RAID 1, 5, 6으로 구성하지 않습니다.

리눅스의 mdadm 명령을 사용하여 여기서는 아래와 같은 것을 알아봅니다.

☞ RAID 0(Stripe) 구성
☞ RAID 0에 구성요소 추가 가능 여부
☞ RAID 디바이스 제거

■ RAID 0 (Stripe) 구성

이것은 RAID 0(Stripe) 구성에 사용되는 명령 형식은 다음과 같다.

mdadm --create RAID DEVICE --level=stripe --raid-devices=N COMPONENT_DEVICE...



1). 예제

[root@sunguru ~]# mdadm --detail --scan --verbose
ARRAY /dev/md0 level=linear num-devices=3 metadata=1.2 name=centos01:0 UUID=ed8b5ddf:943c8198:46b068b7:ab484bf8
   devices=/dev/sdd,/dev/sde,/dev/sdf
[root@sunguru ~]#
[root@sunguru ~]# lsblk | grep 10G
sdd      8:48   0   10G  0 disk
sdg      8:96   0   10G  0 disk
sde      8:64   0   10G  0 disk
sdh      8:112  0   10G  0 disk
sdf      8:80   0   10G  0 disk
sdi      8:128  0   10G  0 disk
[root@sunguru ~]#
[root@sunguru ~]# mdadm --create /dev/md1 --level=stripe --raid-devices=2 /dev/sdg /dev/sdh
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
[root@sunguru ~]#
[root@sunguru ~]# mdadm --detail --brief /dev/md1 --verbose
ARRAY /dev/md1 level=raid0 num-devices=2 metadata=1.2 name=centos01:1 UUID=3951a4db:24ca3c11:2a3bad98:0f2b6192
   devices=/dev/sdg,/dev/sdh
[root@sunguru ~]#
[root@sunguru ~]# mdadm --detail /dev/md1
/dev/md1:
        Version : 1.2
  Creation Time : Mon Jul  4 19:54:32 2016
     Raid Level : raid0
     Array Size : 20955136 (19.98 GiB 21.46 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Mon Jul  4 19:54:32 2016
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

     Chunk Size : 512K

           Name : centos01:1  (local to host centos01)
           UUID : 3951a4db:24ca3c11:2a3bad98:0f2b6192
         Events : 0

    Number   Major   Minor   RaidDevice State
       0       8       96        0      active sync   /dev/sdg
       1       8      112        1      active sync   /dev/sdh
[root@sunguru ~]#
[root@sunguru ~]# mdadm --detail --brief /dev/md1
ARRAY /dev/md1 metadata=1.2 name=centos01:1 UUID=3951a4db:24ca3c11:2a3bad98:0f2b6192
[root@sunguru ~]#
[root@sunguru ~]# mdadm --detail --brief /dev/md1 >> /etc/mdadm.conf
[root@sunguru ~]#
[root@sunguru ~]# cat /etc/mdadm.conf
ARRAY /dev/md0 metadata=1.2 name=centos01:0 UUID=ed8b5ddf:943c8198:46b068b7:ab484bf8
ARRAY /dev/md1 metadata=1.2 name=centos01:1 UUID=3951a4db:24ca3c11:2a3bad98:0f2b6192
[root@sunguru ~]#
[root@sunguru ~]# mkfs -t ext4 /dev/md1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
1310720 inodes, 5238784 blocks
261939 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
 4096000

Writing inode tables: done                 
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 27 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@sunguru ~]#
[root@sunguru ~]# mount /dev/md1 /datafile02
[root@sunguru ~]#
[root@sunguru ~]# blkid /dev/md1
/dev/md1: UUID="ca17209e-7b8c-426e-a5b8-44aa9ef5c6a5" TYPE="ext4"
[root@sunguru ~]#
[root@sunguru ~]# df -h /datafile02
Filesystem      Size  Used Avail Use% Mounted on
/dev/md1         20G   44M   19G   1% /datafile02
[root@sunguru ~]#
[root@sunguru ~]# vi /etc/fstab

/dev/md0                /datafile01             ext4    defaults        1 2
/dev/md1                /datafile02             ext4    defaults        1 2

[root@sunguru ~]# shutdown -r now
[root@sunguru ~]#
[root@sunguru ~]# df -h /datafile01 /datafile02
Filesystem      Size  Used Avail Use% Mounted on
/dev/md0         30G   44M   28G   1% /datafile01
/dev/md1         20G   44M   19G   1% /datafile02
[root@sunguru ~]#
[root@sunguru ~]# mdadm --detail --scan --verbose
ARRAY /dev/md0 level=linear num-devices=3 metadata=1.2 name=centos01:0 UUID=ed8b5ddf:943c8198:46b068b7:ab484bf8
   devices=/dev/sdd,/dev/sde,/dev/sdf
ARRAY /dev/md1 level=raid0 num-devices=2 metadata=1.2 name=centos01:1 UUID=3951a4db:24ca3c11:2a3bad98:0f2b6192
   devices=/dev/sdg,/dev/sdh
[root@sunguru ~]# 

■ RAID 0 에 구성요소 추가 가능여부

Stripe에 구성요소를 추가 시도할 경우 다음과 같은 메세지를 받을 것이다.

[root@sunguru ~]# mdadm /dev/md1 --grow --add /dev/sdi
mdadm: can only add devices to linear arrays
[root@sunguru ~]#

■ RAID 디바이스 제거

아래와 같은 순서로 관련 명령을 실행하여 RAID 디바이스를 제거한다. 그리고 정말 잘 삭제되었는지 확인하기 위해 시스템 리부팅 후 RAID 디바이스를 확인한다.

 -  마운트 된 파일시스템을 언마운트
 -  /etc/fstab 파일에 해당 내용을 제거
 -  mdadm 명령을 사용하여 RAID 디바이스 비활성화
 -  mdadm 명령을 사용하여 RAID 디바이스 제거
 -  /etc/mdadm.conf 파일에 해당 내용을 제거

[root@sunguru ~]# umount /datafile01
[root@sunguru ~]# umount /datafile02
[root@sunguru ~]# vi /etc/fstab

/dev/md0                /datafile01             ext4    defaults        1 2   <== 제거
/dev/md1                /datafile02             ext4    defaults        1 2   <== 제거

[root@sunguru ~]#
[root@sunguru ~]# mdadm --detail --scan --verbose
ARRAY /dev/md0 level=linear num-devices=3 metadata=1.2 name=centos01:0 UUID=2f9ecef8:27f8b381:8945a95b:9468059f
   devices=/dev/sdd,/dev/sde,/dev/sdf
ARRAY /dev/md1 level=raid0 num-devices=2 metadata=1.2 name=centos01:1 UUID=1c601001:e8194dad:d50c21bf:1dca08b3
   devices=/dev/sdg,/dev/sdh
[root@sunguru ~]#
[root@sunguru ~]# mdadm --stop /dev/md0
mdadm: stopped /dev/md0
[root@sunguru ~]# mdadm --stop /dev/md1
mdadm: stopped /dev/md1
[root@sunguru ~]#
[root@sunguru ~]# mdadm --detail --scan --verbose
[root@sunguru ~]#
[root@sunguru ~]# mdadm --zero-superblock /dev/sdd /dev/sde /dev/sdf
[root@sunguru ~]# mdadm --zero-superblock /dev/sdg /dev/sdh
[root@sunguru ~]#
[root@sunguru ~]# vi /etc/mdadm.conf

ARRAY /dev/md0 metadata=1.2 name=centos01:0 UUID=2f9ecef8:27f8b381:8945a95b:9468059f       <= 제거
ARRAY /dev/md1 metadata=1.2 name=centos01:1 UUID=1c601001:e8194dad:d50c21bf:1dca08b3    <= 제거

[root@sunguru ~]# shutdown -r now
[root@sunguru ~]#
[root@sunguru ~]# mdadm --detail --scan --verbose
[root@sunguru ~]# 

리부팅을 하지 않아도 정상적으로 삭제되지만 정말 잘 제거가 되었는지 확인을 하기 위해 리부팅을 해보았다. 'mdadm --detail --scan --verbose' 명령 실행 시 /dev/md0과 /dev/md1에 대한 정보가 출력되지 않는다면 정상적으로 잘 삭제가 된 것이다.

다음 게시물에서는 RAID 1 Mirror 구성에 대해 알아보도록 하겠습니다.






No comments:

Post a Comment