2022. 11. 23. 16:25ㆍ리눅스(Linux)
RAID (Redundant Array of Inexpensive Disks)
- 장애요인 최대로 제거한 고성능 무 정지 저장장치
- 여러 개의 disk를 하나의 가상 disk로 구성, 대용량 저장 장치 구축 가능
- 다수의 disk에 data를 분할, 병렬 전송해 전송 속도 향상
- Hardware RAID 와 Software RAID로 구분 ( Test 환경은 Software 구성에 해당 )
- RAID는 Level 이 존재하며, 각 Level 마다 기능이 다르다.
- CentOS 7.x 에서는 Raid 0 , 1 , 5 , 6 , 1+0 번을 제공 한다.
- RAID가 묶일 하드디스크에 속도, 용량이 같아야함
RAID 0번 → 잘 사용하지 않음
RAID 1번 → OS 영역
RAID 5~ 1+0번 → data 영역
$ Hardware RAID 란?
- Server에 별도의 Raid Controller를 장착하여 물리적인 Raid구성을 의미한다,
- Software RAID에 비해 안정적이고, 속도가 빠르다.
$ Software RAID 란?
- 기본 OS에 내장되어있는 Raid를 이용하는 것을 말하며, Hardware RAID에 비해 성능이 떨어진다.
Raid Level 0 ( Stripe Volume )
- 최소 2개이상의 HDD가 필요
- 디스크의 수에 따라 성능 향상, 성능 향상 목적
- 성능은 향상되나 내결함성이 없음
- 최대 32개까지 묶을 수 있다. 위험성도 같이 증가
- 32개중 하나라도 고장나면 망가진 디스크 안에 데이터블록을 읽을 수 없다.
- Stripe 볼륨에 데이터 쓰기 발생 시 64kb 블록으로 나뉘어져 배열된 모든 디스크에 균등 분산
- 데이터를 복구할 방법도 없다. (안정성이 떨어짐)
- 가정용으로 전략함…
Raid Level 1 ( Mirror Volume )
- 디스크가 짝수개로 구성해야 함
- 기존의 단순 볼륨을 Mirroring
- 사용 가능 디스크의 용량 [ 총 디스크 용량 / 2 ]
- 내결함성 제공
- 데이터가 미러링된 RAID에 복사된다. (안정성이 높아진다.)
- 속도는 느리다 1개의 HDD쓰는것과 같은 성능 (저장공간도 1개 HDD와 같다.)
Raid Level 5 ( Stripe With Parity )
- 디스크 최소 3개 이상 필요
- 추가 디스크 하나만으로 내결함성
- 속도, 안정성 모두 구현 가능
- Block 영역으로 디스크를 묶음, 한 Block 값은 모두 짝수값이 나와야 함
- 오류 검사를 위해 parity bit 사용
- 하나의 Block에 하나의 Parity bit (복구비트)를 포함해야 함
- Parity를 각 디스크에 나눠서 안정성을 강화
- 사용 가능 디스크의 용량 [ 총 디스크 용량 - 하나의 디스크 용량 ]
Raid Level 6 ( 중복 패리티 )
- 디스크 최소 4개 이상 필요
- Raid5의 단점인 2개 이상의 HDD가 Fail 하더라도 복구 가능
- 오류 검사를 위해 중복 parity bit 사용, 안정성 강화
- 사용 가능 디스크의 용량 [ 총 디스크 용량 - 두 개의 디스크 용량 ]
Raid Level 1 + 0
- 디스크 최소 4개 이상 필요
- A세트 묶고 B세트로 묶고 그 두개의 세트를 다시 묶음
- Raid 1번 구성 후 Raid 0번으로 재 구성하는 형태 (RAID 1 + RAID 0)
- 신뢰성과 성능은 우수 하지만, 효율적인 측면이 떨어짐
- 사용 가능 디스크의 용량 [ 총 디스크 용량 / 2 ]
parity bit - 디스크 장애 시 데이터를 재 구축하는데 사용할 수 있는 사전에 계산된 값
TEST
TEST 환경 구성
-. CentOS에서 Software Raid를 구성하기 위해 필요한 Package
-. mdadm-3.4-14.el7.x86_64
$ Raid - 0 구성
[ Raid - 0 을 Test 하기 위해서 새로운 HDD 2개를 추가 ]
# fdisk /dev/sdb -> n -> p -> 1 -> enter -> enter -> t -> fd -> p -> w
# fdisk /dev/sdc -> n -> p -> 1 -> enter -> enter -> t -> fd -> p -> w
# mknod /dev/md0 b 9 0
- Linux에서는 기본적은 장치를 컨트롤 하기 위해 장치 파일이 있어야 한다, 하지만 현재 RAID구성 시 RAID에 관한 장치 파일이 없으므로 장치 파일을 수동으로 생성, 이때 쓰는 명령어가 mknod 명령어 이며, 기본사용 형식은 mknod [생성할 장치파일 이름] [장치파일형식] [주 번호] [보조 번호] 형식이다.
- 장치 파일형식은 b , (c, u) , p를 사용 각 의미는 b=blocks Device, p=FIFO, c, u = Character 특수파일을 의미 한다.
- 주 번호와 보조 번호는 특별한 의미는 없으며, 비슷한 역할을 진행하는 장치 파일간 주 번호는 통일해서 사용하고 보조 번호로 각 장치를 세부 구분하는 형태로 쓰인다.
- 통상적으로 md 장치의 주 번호 값은 9번으로 통일하여 사용한다.
# mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb1 /dev/sdc1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
- 위에서 생성한 장치 파일에 Raid 0의 정보를 입력 한다.
# mdadm --detail --scan
ARRAY /dev/md0 metadata=1.2 name=RAID:0 UUID=94706d9b:77bf9660:3a4921bf:cfa5ccb7
- 정보 입력 후 확인하게 되면, 입력 된 정보를 토대로 장치의 UUID값 등이 표시되는 것을 확인
# mdadm --query --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu Jun 22 21:04:51 2017
Raid Level : raid0
Array Size : 2093056 (2044.00 MiB 2143.29 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Thu Jun 22 21:04:51 2017
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Chunk Size : 512K
Name : RAID:0 (local to host RAID)
UUID : 94706d9b:77bf9660:3a4921bf:cfa5ccb7
Events : 0
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
- (--scan) 옵션 보다 자세한 정보를 획득 할 수 있다.
# mkfs.xfs /dev/md0
meta-data=/dev/md0 isize=512 agcount=8, agsize=65408 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=523264, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
- 해당 Raid 장치 Format
# mkdir /raid0
# mount /dev/md0 /raid0
- Raid 장치 Mount
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 15G 5.6G 9.5G 37% /
devtmpfs 474M 0 474M 0% /dev
tmpfs 489M 84K 489M 1% /dev/shm
tmpfs 489M 7.1M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 1014M 169M 846M 17% /boot
tmpfs 98M 16K 98M 1% /run/user/42
tmpfs 98M 0 98M 0% /run/user/0
/dev/md0 2.0G 33M 2.0G 2% /raid0
# mdadm --detail --scan > /etc/mdadm.conf
- md 장치 정보 저장 하기, System 재 부팅 시 장치번호가 변경 될 수 있으므로 반드시 저장.
- fstab 오토마운트 설정시 장치 정보를 읽지 못하면 부팅이 안되는 현상이 발생함
# vi /etc/fstab
/dev/md0 /raid0 xfs defaults 0 0
- Raid 장치 Auto Mount 설정 하기
# reboot
- 재 부팅 후 정상적으로 Auto Mount 되는지 확인
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 15G 5.6G 9.5G 37% /
devtmpfs 474M 0 474M 0% /dev
tmpfs 489M 84K 489M 1% /dev/shm
tmpfs 489M 7.0M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/md0 2.0G 33M 2.0G 2% /raid0
/dev/sda1 1014M 169M 846M 17% /boot
tmpfs 98M 12K 98M 1% /run/user/42
tmpfs 98M 0 98M 0% /run/user/0
$ Raid - 1 구성
# fdisk /dev/sdb -> n -> p -> 1 -> enter -> enter -> t -> fd -> p -> w
# fdisk /dev/sdc -> n -> p -> 1 -> enter -> enter -> t -> fd -> p -> w
# fdisk /dev/sdd -> n -> p -> 1 -> enter -> enter -> t -> fd -> p -> w ( 복구 용으로 사용할 Disk )
# mknod /dev/md1 b 9 1
# mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array? Y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
- Raid 1번의 경우 중복데이터를 저장 하기 때문에 기본 적으로 /boot에 관한 부분은 Raid로
설정을 하면 안 된다.
- 즉, 부팅과 관련 된 데이터는 Raid 1번 장치에는 적합한 형태가 아니다.
# mdadm --detail --scan
ARRAY /dev/md1 metadata=1.2 name=RAID:1 UUID=06264731:2b2ba277:c075fdb0:7e7f262b
# mdadm --query --detail /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Fri Jun 23 12:36:17 2017
Raid Level : raid1
Array Size : 1046976 (1022.44 MiB 1072.10 MB)
Used Dev Size : 1046976 (1022.44 MiB 1072.10 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Fri Jun 23 12:39:12 2017
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Name : RAID:1 (local to host RAID)
UUID : 06264731:2b2ba277:c075fdb0:7e7f262b
Events : 17
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
# mkfs.xfs /dev/md1
meta-data=/dev/md1 isize=512 agcount=4, agsize=65436 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=261744, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
# mkdir /raid1
# mount /dev/md1 /raid1
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 15G 5.6G 9.5G 37% /
devtmpfs 474M 0 474M 0% /dev
tmpfs 489M 84K 489M 1% /dev/shm
tmpfs 489M 7.1M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 1014M 169M 846M 17% /boot
tmpfs 98M 16K 98M 1% /run/user/42
tmpfs 98M 0 98M 0% /run/user/0
/dev/md1 1020M 33M 987M 4% /raid1
# mdadm --detail --scan > /etc/mdadm.conf
- md 장치 정보 저장 하기, System 재 부팅 시 장치번호가 변경 될 수 있으므로 반드시 저장.
- fstab 오토마운트 설정시 장치 정보를 읽지 못하면 부팅이 안되는 현상이 발생함
# vi /etc/fstab
/dev/md1 /raid1 xfs defaults 0 0
# reboot
- 재 부팅 후 정상적으로 Auto Mount 되는지 확인
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 15G 5.6G 9.5G 37% /
devtmpfs 474M 0 474M 0% /dev
tmpfs 489M 84K 489M 1% /dev/shm
tmpfs 489M 7.0M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/md1 2.0G 33M 2.0G 2% /raid1
/dev/sda1 1014M 169M 846M 17% /boot
tmpfs 98M 12K 98M 1% /run/user/42
tmpfs 98M 0 98M 0% /run/user/0
$ Raid - 1 복구 작업
# halt
- 시스템 종료
- VMware 프로그램에서 물리적으로 가상 디스크 한 개를 제거 한다. ( Raid 1번으로 구성 된 HDD를 제거한다 !! )
- 이 작업으로 인하여 기존에 Raid 1번에 문제가 발생하게 될 것이며, 우리는 새로운 HDD 1GB를 이용 하여 복구 작업을 진행한다.
# mdadm --query --detail /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Fri Jun 23 13:09:59 2017
Raid Level : raid1
Array Size : 1046976 (1022.44 MiB 1072.10 MB)
Used Dev Size : 1046976 (1022.44 MiB 1072.10 MB)
Raid Devices : 2
Total Devices : 1
Persistence : Superblock is persistent
Update Time : Fri Jun 23 13:13:57 2017
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
Name : RAID:1 (local to host RAID)
UUID : 73caab78:06cf3b92:371e65b7:32c20731
Events : 21
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
- 0 0 1 removed
- Raid 1번으로 묶인 2번째 장치가 Removed 상태인 것을 확인 할 수 있다. ( 위에 HDD를 물리적으로 삭제하였기 때문에 Removed 상태로 표시 된다. )
- 여기서 주의 할 점으로는 물리적인 HDD를 삭제를 하게 되면 fdisk -l /dev/sd* 명령어를 이용하여 확인하면 각 Disk의 알파벳 이름이 달라진다.
- 기존에 3개의 HDD에서 2개로 변경되었는데 기존의 이름은 /dev/sdb , /dev/sdc , /dev/sdd 로 표시 되었지만, /dev/sdc Disk 하나를 삭제한 지금 확인해 보면 /dev/sdb, /dev/sdd 가 아닌 /dev/sdb , /dev/sdc 로 표시 되는 것을 확인 할 수 있다
- 기본 적으로 System이 부팅 되면서 삭제 HDD의 이름을 비어 두고 사용하는 것이 아닌, 삭제 Disk 다음 Disk에게 순차적인 이름부여를 진행하게 된다.
★★★★★ [ 주의 할 점 ] ★★★★★
- 기본적으로 우리는 HDD를 제거 하였기 때문에, Removed 상태로 표시가 된다.
- 하지만, 실제 업무에서는 HDD가 제거되는 일은 거의 없고 대부분 HDD에 문제가 발생하는 상태이다, 이때 장치의 상태를 Failed 상태라 말한다.
- Failed 상태일 때에는 문제가 생긴 Failed Disk를 먼저 md 장치에서 제거 후 복구 작업을 진행 해야 한다.
$ Failed 장치 제거 및 복구 순서
1. umount /dev/md1 ( Mount 해제 )
2. mdadm /dev/md1 -r /dev/sdc1 ( Failed 장치 MD장치에서 제거 )
3. 복구 작업 진행
# mdadm /dev/md1 --add /dev/sdc1
mdadm: added /dev/sdc1
- 정상적인 HDD 를 md1 장치에 추가해 준다.
# mdadm --query --detail /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Fri Jun 23 13:09:59 2017
Raid Level : raid1
Array Size : 1046976 (1022.44 MiB 1072.10 MB)
Used Dev Size : 1046976 (1022.44 MiB 1072.10 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Fri Jun 23 13:30:19 2017
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Name : RAID:1 (local to host RAID)
UUID : 73caab78:06cf3b92:371e65b7:32c20731
Events : 40
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
2 8 33 1 active sync /dev/sdc1
- 새로운 HDD를 추가 해줌으로써, md1 장치가 정상적인 상태로 돌아 온 것을 확인 할 수 있다.
# mdadm --detail --scan > /etc/mdadm.conf
- md 장치 정보를 다시 저장 해준다.
$ Raid - 5 구성
# fdisk /dev/sdb -> n -> p -> 1 -> enter -> enter -> t -> fd -> p -> w
# fdisk /dev/sdc -> n -> p -> 1 -> enter -> enter -> t -> fd -> p -> w
# fdisk /dev/sdd -> n -> p -> 1 -> enter -> enter -> t -> fd -> p -> w
# fdisk /dev/sde -> n -> p -> 1 -> enter -> enter -> t -> fd -> p -> w
# fdisk /dev/sdf -> n -> p -> 1 -> enter -> enter -> t -> fd -> p -> w ( 복구용 HDD )
# mknod /dev/md5 b 9 5
# mdadm --create /dev/md5 --level=5 --raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
# mdadm --detail --scan
ARRAY /dev/md5 metadata=1.2 name=Raid:5 UUID=eb497ba9:59a635f0:e4a4acc1:4876bb0c
# mdadm --query --detail /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Fri Jun 23 12:45:34 2017
Raid Level : raid5
Array Size : 3139584 (2.99 GiB 3.21 GB)
Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Fri Jun 23 12:45:39 2017
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Name : RAID:5 (local to host RAID)
UUID : eb497ba9:59a635f0:e4a4acc1:4876bb0c
Events : 18
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
2 8 49 2 active sync /dev/sdd1
4 8 65 3 active sync /dev/sde1
# mkfs.xfs /dev/md5
meta-data=/dev/md5 isize=512 agcount=8, agsize=98176 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=784896, imaxpct=25
= sunit=128 swidth=384 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
# mkdir /raid5
# mount /dev/md5 /raid5
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 15G 5.6G 9.5G 37% /
devtmpfs 474M 0 474M 0% /dev
tmpfs 489M 84K 489M 1% /dev/shm
tmpfs 489M 7.1M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 1014M 169M 846M 17% /boot
tmpfs 98M 16K 98M 1% /run/user/42
tmpfs 98M 0 98M 0% /run/user/0
/dev/md5 3.0G 33M 3.0G 2% /raid5
# mdadm --detail --scan > /etc/mdadm.conf
- md 장치 정보 저장 하기, System 재 부팅 시 장치번호가 변경 될 수 있으므로 반드시 저장.
- fstab 오토마운트 설정시 장치 정보를 읽지 못하면 부팅이 안되는 현상이 발생함
# vi /etc/fstab
/dev/md5 /raid5 xfs defaults 0 0
# reboot
- 재 부팅 후 정상적으로 Auto Mount 되는지 확인
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 15G 5.6G 9.5G 37% /
devtmpfs 474M 0 474M 0% /dev
tmpfs 489M 84K 489M 1% /dev/shm
tmpfs 489M 7.0M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/md5 3.0G 33M 3.0G 2% /raid5
/dev/sda1 1014M 169M 846M 17% /boot
tmpfs 98M 12K 98M 1% /run/user/42
tmpfs 98M 0 98M 0% /run/user/0
$ Raid - 5 복구 작업
# halt
- 시스템 종료
- VMware 프로그램에서 물리적으로 가상 디스크 한 개를 제거 한다.
- 이 작업으로 인하여 기존에 Raid 5번에 문제가 발생하게 될 것이며, 우리는 새로운 HDD 1GB를 이용하여 복구 작업을 진행한다.
# mdadm --query --detail /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Fri Jun 23 12:45:34 2017
Raid Level : raid5
Array Size : 3139584 (2.99 GiB 3.21 GB)
Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
Raid Devices : 4
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Fri Jun 23 12:59:29 2017
State : clean, degraded
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Name : RAID:5 (local to host RAID)
UUID : eb497ba9:59a635f0:e4a4acc1:4876bb0c
Events : 22
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
2 8 49 2 active sync /dev/sdd1
- 0 0 3 removed
- 현재 4번째 Disk가 시스템에서 지워진 상태로 표시 된다.
★★★★★ [ 주의 할 점 ] ★★★★★
- 기본적으로 우리는 HDD를 제거 하였기 때문에, Removed 상태로 표시가 된다.
- 하지만, 실제 업무에서는 HDD가 제거되는 일은 거의 없고 대부분 HDD에 문제가 발생하는 상태이다, 이때 장치의 상태를 Failed 상태라 말한다,
- Failed 상태일 때에는 문제가 생긴 Failed Disk를 먼저 md 장치에서 제거 후 복구 작업을 진행 해야 한다.
$ Failed 장치 제거 및 복구 순서
1. umount /dev/md5 ( Mount 해제 )
2. mdadm /dev/md5 -r /dev/sdb1 ( Failed 장치 MD장치에서 제거 )
3. 복구 작업 진행
# mdadm /dev/md5 --add /dev/sde1
mdadm: added /dev/sde1
- 위에서 생성한 복구용 Disk를 이용하여 md5 장치에 복구 Partition으로 지정한다.
# mdadm --query --detail /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Fri Jun 23 13:51:00 2017
Raid Level : raid5
Array Size : 3139584 (2.99 GiB 3.21 GB)
Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Fri Jun 23 13:55:40 2017
State : clean, degraded, recovering
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Rebuild Status : 95% complete
Name : RAID:5 (local to host RAID)
UUID : 5b78e0c0:648d86dd:9fa5f44d:fea935de
Events : 39
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
2 8 49 2 active sync /dev/sdd1
4 8 65 3 spare rebuilding /dev/sde1
- 기본적으로 복구 작업을 진행 하면, Rebuilding Time을 갖고 복구작업을 진행 한다.
- 추가 명령어를 입력하고 빠르게 mdadm --query --detail /dev/md5 입력하면, 확인 할 수 있다.
# mdadm --query --detail /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Fri Jun 23 12:45:34 2017
Raid Level : raid5
Array Size : 3139584 (2.99 GiB 3.21 GB)
Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Fri Jun 23 13:02:36 2017
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Name : RAID:5 (local to host RAID)
UUID : eb497ba9:59a635f0:e4a4acc1:4876bb0c
Events : 41
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
2 8 49 2 active sync /dev/sdd1
4 8 65 3 active sync /dev/sde1
- 다시 활성화 상태로 돌아 온 것을 확인 한다.
# mdadm --detail --scan > /etc/mdadm.conf
- md 장치 정보를 다시 저장 해준다.
$ Raid - 6 구성
# fdisk /dev/sdb -> n -> p -> 1 -> enter -> enter -> t -> fd -> p -> w
# fdisk /dev/sdc -> n -> p -> 1 -> enter -> enter -> t -> fd -> p -> w
# fdisk /dev/sdd -> n -> p -> 1 -> enter -> enter -> t -> fd -> p -> w
# fdisk /dev/sde -> n -> p -> 1 -> enter -> enter -> t -> fd -> p -> w
# fdisk /dev/sdf -> n -> p -> 1 -> enter -> enter -> t -> fd -> p -> w ( 복구용 HDD )
# fdisk /dev/sdg -> n -> p -> 1 -> enter -> enter -> t -> fd -> p -> w ( 복구용 HDD )
# mknod /dev/md6 b 9 6
# mdadm --create /dev/md6 --level=6 --raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md6 started.
# mdadm --detail --scan
ARRAY /dev/md6 metadata=1.2 name=RAID:6 UUID=d7dfa1f7:3cfbb984:2c40ff2f:d38404f5
# mdadm --query --detail /dev/md6
/dev/md6:
Version : 1.2
Creation Time : Fri Jun 23 14:02:07 2017
Raid Level : raid6
Array Size : 2093056 (2044.00 MiB 2143.29 MB)
Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Fri Jun 23 14:02:12 2017
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Name : RAID:6 (local to host RAID)
UUID : d7dfa1f7:3cfbb984:2c40ff2f:d38404f5
Events : 17
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
2 8 49 2 active sync /dev/sdd1
3 8 65 3 active sync /dev/sde1
# mkfs.xfs /dev/md6
meta-data=/dev/md6 isize=512 agcount=8, agsize=65408 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=523264, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
# mkdir /raid6
# mount /dev/md6 /raid6
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 15G 5.6G 9.5G 37% /
devtmpfs 474M 0 474M 0% /dev
tmpfs 489M 84K 489M 1% /dev/shm
tmpfs 489M 7.1M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 1014M 169M 846M 17% /boot
tmpfs 98M 16K 98M 1% /run/user/42
tmpfs 98M 0 98M 0% /run/user/0
/dev/md6 2.0G 33M 2.0G 2% /raid6
# mdadm --detail --scan > /etc/mdadm.conf
- md 장치 정보 저장 하기, System 재 부팅 시 장치번호가 변경 될 수 있으므로 반드시 저장.
- fstab 오토마운트 설정시 장치 정보를 읽지 못하면 부팅이 안되는 현상이 발생함
# vi /etc/fstab
/dev/md6 /raid6 xfs defaults 0 0
# reboot
- 재 부팅 후 정상적으로 Auto Mount 되는지 확인
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 15G 5.6G 9.5G 37% /
devtmpfs 474M 0 474M 0% /dev
tmpfs 489M 84K 489M 1% /dev/shm
tmpfs 489M 7.0M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/md6 2.0G 33M 2.0G 2% /raid6
/dev/sda1 1014M 169M 846M 17% /boot
tmpfs 98M 12K 98M 1% /run/user/42
tmpfs 98M 0 98M 0% /run/user/0
$ Raid - 6 복구 작업
# halt
- 시스템 종료
- VMware 프로그램에서 물리적으로 가상 디스크 두 개를 제거 한다. ( Raid 6는 중복 Parity를 제공 하므로 2개를 삭제해도 복구가 가능하다. )
- 이 작업으로 인하여 기존에 Raid 6번에 문제가 발생하게 될 것이며, 우리는 HDD 1GB * 2개를 이용하여 복구 작업을 진행한다.
# mdadm --query --detail /dev/md6
/dev/md6:
Version : 1.2
Creation Time : Fri Jun 23 14:02:07 2017
Raid Level : raid6
Array Size : 2093056 (2044.00 MiB 2143.29 MB)
Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
Raid Devices : 4
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Fri Jun 23 14:09:38 2017
State : clean, degraded
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Name : RAID:6 (local to host RAID)
UUID : d7dfa1f7:3cfbb984:2c40ff2f:d38404f5
Events : 21
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
- 0 0 2 removed
- 0 0 3 removed
★★★★★ [ 주의 할 점 ] ★★★★★
- 기본적으로 우리는 HDD를 제거 하였기 때문에, Removed 상태로 표시가 된다.
- 하지만, 실제 업무에서는 HDD가 제거되는 일은 거의 없고 대부분 HDD에 문제가 발생하는 상태이다, 이때 장치의 상태를 Failed 상태라 말한다,
- Failed 상태일 때에는 문제가 생긴 Failed Disk를 먼저 md 장치에서 제거 후 복구 작업을 진행 해야 한다.
$ Failed 장치 제거 및 복구 순서
1. umount /dev/md1 ( Mount 해제 )
2. mdadm /dev/md1 -r /dev/sdb1 ( Failed 장치 MD장치에서 제거 )
3. 복구 작업 진행
# mdadm /dev/md6 --add /dev/sdd1
mdadm: added /dev/sdd1
# mdadm /dev/md6 --add /dev/sde1
mdadm: added /dev/sde1
- 복구용 HDD를 이용하여, 복구 작업 진행
# mdadm --query --detail /dev/md6
/dev/md6:
Version : 1.2
Creation Time : Fri Jun 23 14:02:07 2017
Raid Level : raid6
Array Size : 2093056 (2044.00 MiB 2143.29 MB)
Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Fri Jun 23 14:14:09 2017
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Name : RAID:6 (local to host RAID)
UUID : d7dfa1f7:3cfbb984:2c40ff2f:d38404f5
Events : 58
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
4 8 49 2 active sync /dev/sdd1
5 8 65 3 active sync /dev/sde1
- 복구 작업 완료 후 상태 확인
# mdadm --detail --scan > /etc/mdadm.conf
- md 장치 정보를 다시 저장 해준다.
$ Raid - 1+0 구성
# fdisk /dev/sdb -> n -> p -> 1 -> enter -> enter -> t -> fd -> p -> w
# fdisk /dev/sdc -> n -> p -> 1 -> enter -> enter -> t -> fd -> p -> w
# fdisk /dev/sdd -> n -> p -> 1 -> enter -> enter -> t -> fd -> p -> w
# fdisk /dev/sde -> n -> p -> 1 -> enter -> enter -> t -> fd -> p -> w
# fdisk /dev/sdf -> n -> p -> 1 -> enter -> enter -> t -> fd -> p -> w ( 복구용 HDD )
# fdisk /dev/sdg -> n -> p -> 1 -> enter -> enter -> t -> fd -> p -> w ( 복구용 HDD )
# mknod /dev/md10 b 9 10
# mdadm --create /dev/md10 --level=10 --raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md10 started.
# mdadm --detail --scan
ARRAY /dev/md10 metadata=1.2 name=RAID:10 UUID=3d4080a1:2669cb55:1411317c:dcdf8fbd
# mdadm --query --detail /dev/md10
/dev/md10:
Version : 1.2
Creation Time : Fri Jun 23 14:42:12 2017
Raid Level : raid10
Array Size : 2093056 (2044.00 MiB 2143.29 MB)
Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Fri Jun 23 14:42:22 2017
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Name : RAID:10 (local to host RAID)
UUID : 3d4080a1:2669cb55:1411317c:dcdf8fbd
Events : 17
Number Major Minor RaidDevice State
0 8 17 0 active sync set-A /dev/sdb1
1 8 33 1 active sync set-B /dev/sdc1
2 8 49 2 active sync set-A /dev/sdd1
3 8 65 3 active sync set-B /dev/sde1
- Set-A에는 /dev/sdb1 , /dev/sdd1이 Raid1번으로 묶여 있고, Set-B에는 /dev/sdc1 ,
/dev/sde1이 묶여있는 것을 확인 할 수 있다.
# mkfs.xfs /dev/md10
meta-data=/dev/md10 isize=512 agcount=8, agsize=65408 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=523264, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
# mkdir /raid10
# mount /dev/md10 /raid10
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 15G 5.6G 9.5G 37% /
devtmpfs 474M 0 474M 0% /dev
tmpfs 489M 84K 489M 1% /dev/shm
tmpfs 489M 7.0M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 1014M 169M 846M 17% /boot
tmpfs 98M 16K 98M 1% /run/user/42
tmpfs 98M 0 98M 0% /run/user/0
/dev/md10 2.0G 33M 2.0G 2% /raid10
# mdadm --detail --scan > /etc/mdadm.conf
- md 장치 정보 저장 하기, System 재 부팅 시 장치번호가 변경 될 수 있으므로 반드시 저장.
- fstab 오토마운트 설정시 장치 정보를 읽지 못하면 부팅이 안되는 현상이 발생함
# vi /etc/fstab
/dev/md10 /raid10 xfs defaults 0 0
# reboot
- 재 부팅 후 정상적으로 Auto Mount 되는지 확인
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 15G 5.6G 9.5G 37% /
devtmpfs 474M 0 474M 0% /dev
tmpfs 489M 84K 489M 1% /dev/shm
tmpfs 489M 7.0M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/md10 2.0G 33M 2.0G 2% /raid10
/dev/sda1 1014M 169M 846M 17% /boot
tmpfs 98M 12K 98M 1% /run/user/42
tmpfs 98M 0 98M 0% /run/user/0
$ Raid - 1+0 복구 작업
- Raid 1+0의 경우 가상 디스크를 강제로 삭제하게 되면, MD장치가 사라지므로, 강제로 Failed 상태로 만든 후 복구 작업을 진행한다.
- 단, 주의 할 것은 Set으로 묶인 HDD 2개를 동시에 Failed 하면 안 된다, 반드시 각 Set 마다 1개씩만 Failed 할 것.
( /dev/sdb , /dev/sde 를 Failed 하면 된다. )
TIP
- 복구가 가능한 Raid 1 , Raid 5 , Raid 6 같은 경우에는 HDD를 제거하여도 부팅이 가능하지만, Raid 0 , Raid 1+0은 불가능 하다.
- 증명, Raid 1 , 5 , 6을 구성 후 Mount 설정 각 장치에 Data를 생성 HDD 1개 혹은 2개를 지우고 재 부팅해도 해당 Data는 복구가 가능해 정상적으로 표시 된다.
# umount /dev/md10
# mdadm /dev/md10 -f /dev/sdb1 /dev/sde1
- 강제로 2개의 HDD를 Failed 시킨다.
# mdadm --query --detail /dev/md10
/dev/md10:
Version : 1.2
Creation Time : Fri Jun 23 16:03:46 2017
Raid Level : raid10
Array Size : 2093056 (2044.00 MiB 2143.29 MB)
Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Fri Jun 23 16:08:31 2017
State : clean, degraded
Active Devices : 2
Working Devices : 2
Failed Devices : 2
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Name : RAID:10 (local to host RAID)
UUID : 0eb90845:5d0cbec1:69c9a33d:0371708c
Events : 19
Number Major Minor RaidDevice State
- 0 0 0 removed
1 8 33 1 active sync set-B /dev/sdc1
2 8 49 2 active sync set-A /dev/sdd1
- 0 0 3 removed
0 8 17 - faulty /dev/sdb1 ( 강제로 Fail 시킨 불완전한 상태의 HDD의 목록 확인 )
3 8 65 - faulty /dev/sde1 ( 강제로 Fail 시킨 불완전한 상태의 HDD의 목록 확인 )
# mdadm /dev/md10 -r /dev/sdb1 /dev/sde1
mdadm: hot removed /dev/sdb1 from /dev/md10
mdadm: hot removed /dev/sde1 from /dev/md10
- Failed된 Disk 2개 MD10 장치에서 제거
# reboot
- 장치 제거 후 재 부팅을 진행 한다.
# mdadm --query --detail /dev/md10
/dev/md10:
Version : 1.2
Creation Time : Fri Jun 23 16:03:46 2017
Raid Level : raid10
Array Size : 2093056 (2044.00 MiB 2143.29 MB)
Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
Raid Devices : 4
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Fri Jun 23 16:13:57 2017
State : clean, degraded
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Name : RAID:10 (local to host RAID)
UUID : 0eb90845:5d0cbec1:69c9a33d:0371708c
Events : 21
Number Major Minor RaidDevice State
- 0 0 0 removed
1 8 33 1 active sync set-B /dev/sdc1
2 8 49 2 active sync set-A /dev/sdd1
- 0 0 3 removed
- 불완전한 상태의 장치가 목록에서 제거 된 것을 확인 할 수 있다.
# mdadm /dev/md10 --add /dev/sdf1 /dev/sdg1
mdadm: added /dev/sdf1
mdadm: added /dev/sdg1
# mdadm --query --detail /dev/md10
/dev/md10:
Version : 1.2
Creation Time : Fri Jun 23 16:03:46 2017
Raid Level : raid10
Array Size : 2093056 (2044.00 MiB 2143.29 MB)
Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Fri Jun 23 16:29:22 2017
State : clean, degraded, recovering
Active Devices : 2
Working Devices : 4
Failed Devices : 0
Spare Devices : 2
Layout : near=2
Chunk Size : 512K
Name : RAID:10 (local to host RAID)
UUID : 0eb90845:5d0cbec1:69c9a33d:0371708c
Events : 48
Number Major Minor RaidDevice State
5 8 97 0 active sync set-A /dev/sdg1
1 8 33 1 active sync set-B /dev/sdc1
2 8 49 2 active sync set-A /dev/sdd1
4 8 81 3 active sync set-B /dev/sdf1
- 복구용 HDD를 이용하여 다시 Set에 추가 된 것을 확인 할 수 있게 된다.
# mdadm --detail --scan > /etc/mdadm.conf
- md 장치 정보를 다시 저장 해준다.
$ Raid Array 완전 삭제 하기
1. mount 관련 정보 삭제 하기
# umount /dev/md10
# vi /etc/fstab
2. md 장치 삭제 하기
# mdadm -S /dev/md10
mdadm: stopped /dev/md10
3. md 장치에서 사용한 Partition superblock 초기화 하기
# mdadm --zero-superblock /dev/sdb1
# mdadm --zero-superblock /dev/sdc1
# mdadm --zero-superblock /dev/sdd1
# mdadm --zero-superblock /dev/sde1
'리눅스(Linux)' 카테고리의 다른 글
[Centos 7] YUM (Yellowdog Updater Manager) (0) | 2022.11.23 |
---|---|
[Centos 7] RPM (Redhat Package Manager) (0) | 2022.11.23 |
[Centos 7] LVM (Logical Volume manager) (1) | 2022.11.23 |
[Centos 7] Swap Partition (스왑 파티션) (0) | 2022.11.23 |
[Centos 7] Inode(아이노드) (0) | 2022.11.23 |