안녕하세요. 썬구루입니다. 이제 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