-
LINUX DISK RAID0 RAID1 RAID5 장애 긴급 복구 하는 방법System of Infra/Linux System 2022. 4. 7. 21:15반응형
LINUX DISK RAID 유형별 장애 발생 복구하는 방법
[root@localhost ~]# df -Th | grep -i raid /dev/md9 ext4 2.9G 9.0M 2.8G 1% /raidLinear /dev/md5 ext4 2.0G 6.0M 1.9G 1% /raid5 /dev/md1 ext4 990M 2.6M 921M 1% /raid1 /dev/md0 ext4 2.0G 6.0M 1.9G 1% /raid0
▶ 이전 시간에 구성 실습을 통해 RAID 0, RAID 1, RAID 5 디스크에 대해서 장애 발생 시 나타나는 결과물을 확인해 보도록 하겠습니다.
[root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 80G 0 disk ├─sda1 8:1 0 4G 0 part [SWAP] └─sda2 8:2 0 76G 0 part / sdb 8:16 0 2G 0 disk └─sdb1 8:17 0 2G 0 part └─md9 9:9 0 3G 0 linear /raidLinear sdc 8:32 0 1G 0 disk └─sdc1 8:33 0 1023M 0 part └─md9 9:9 0 3G 0 linear /raidLinear sdd 8:48 0 1G 0 disk └─sdd1 8:49 0 1023M 0 part └─md0 9:0 0 2G 0 raid0 /raid0 sde 8:64 0 1G 0 disk └─sde1 8:65 0 1023M 0 part └─md0 9:0 0 2G 0 raid0 /raid0 sdf 8:80 0 1G 0 disk └─sdf1 8:81 0 1023M 0 part └─md1 9:1 0 1022M 0 raid1 /raid1 sdg 8:96 0 1G 0 disk └─sdg1 8:97 0 1023M 0 part └─md1 9:1 0 1022M 0 raid1 /raid1 sdh 8:112 0 1G 0 disk └─sdh1 8:113 0 1023M 0 part └─md5 9:5 0 2G 0 raid5 /raid5 sdi 8:128 0 1G 0 disk └─sdi1 8:129 0 1023M 0 part └─md5 9:5 0 2G 0 raid5 /raid5 sdj 8:144 0 1G 0 disk └─sdj1 8:145 0 1023M 0 part └─md5 9:5 0 2G 0 raid5 /raid5 sr0 11:0 1 6.7G 0 rom /run/media/root/CentOS-8-BaseOS-x86_64
▶ lsblk 명령어를 통해서 디스크의 RAID TYPE과 나열된 디스크를 확인할 수 있습니다.
[root@localhost ~]# cp /etc/hosts /raidLinear [root@localhost ~]# cp /etc/hosts /raid0 [root@localhost ~]# cp /etc/hosts /raid1 [root@localhost ~]# cp /etc/hosts /raid5
▶ 디스크를 강제적으로 장애 발생 시키기 전에 해당 파일 시스템의 디렉터리에 /etc/hosts 파일을 복사하여 장애 발생 후 해당 디렉터리에 /etc/hosts 파일이 존재하는지의 여부를 알아보도록 하겠습니다.
[root@localhost ~]# ls -al /raidLinear /raid0 /raid1 /raid5 /raid0: 합계 28 drwxr-xr-x 3 root root 4096 3월 31 22:11 . dr-xr-xr-x. 24 root root 4096 3월 31 21:53 .. -rw-r--r-- 1 root root 158 3월 31 22:11 hosts drwx------ 2 root root 16384 3월 31 21:41 lost+found /raid1: 합계 28 drwxr-xr-x 3 root root 4096 3월 31 22:11 . dr-xr-xr-x. 24 root root 4096 3월 31 21:53 .. -rw-r--r-- 1 root root 158 3월 31 22:11 hosts drwx------ 2 root root 16384 3월 31 21:50 lost+found /raid5: 합계 28 drwxr-xr-x 3 root root 4096 3월 31 22:11 . dr-xr-xr-x. 24 root root 4096 3월 31 21:53 .. -rw-r--r-- 1 root root 158 3월 31 22:11 hosts drwx------ 2 root root 16384 3월 31 21:53 lost+found /raidLinear: 합계 28 drwxr-xr-x 3 root root 4096 3월 31 22:11 . dr-xr-xr-x. 24 root root 4096 3월 31 21:53 .. -rw-r--r-- 1 root root 158 3월 31 22:11 hosts drwx------ 2 root root 16384 3월 20 18:11 lost+found
▶ RAID의 유형별로 해당 마운트된 디렉터리에 동일하게 /etc/hosts 파일이 존재하는 것을 확인할 수 있습니다.
[root@localhost ~]# sync [root@localhost ~]# halt -p
▶ 디스크를 강제로 장애발생시키기 전에 재부팅을 진행합니다. (디스크 강제 UMOUNT 진행 완료)
[ 0.000000] Detected CPU familt 17h model 104 [ 0.000000] Warning : AMD Processor - this hardware has not undergone upstream testing. Please consult http://wiki.centos.org/FAG for more information [ 1.327525] sd 11:0:0:0: [sda] Assuming drive cache: write through [ 1.328224] sd 11:0:1:0: [sdb] Assuming drive cache: write through [ 1.331407] sd 11:0:3:0: [sdc] Assuming drive cache: write through [ 1.339947] sd 11:0:4:0: [sdd] Assuming drive cache: write through [ 1.341913] sd 11:0:8:0: [sde] Assuming drive cache: write through [ 1.346753] sd 11:0:10:0: [sdf] Assuming drive cache: write through [ 3.069198] piix4_smbus 0000:00:07:3 SMBus Host Controller not enabled! You are in emergency mode. After logging in, type "journalctl -xb" to view system logs, "systemctl reboot" to reboot, "systemctl default" or "exit" to boot info default mod. Give root password for maintenance (or press Control-D to continue):
▶ 시스템 재부팅을 하는 과정에서 ERROR 메시지가 호출되고 Maintenance 모드로 커널이 빠지게 되는 것을 확인할 수 있습니다. ROOT의 패스워드를 입력 후 OS상의 내용들을 확인해 보도록 합니다.
[root@localhost ~]# df -Th | grep -i raid /dev/md5 ext4 2.0G 6.0M 1.9G 1% /raid5 /dev/md1 ext4 990M 2.6M 921M 1% /raid1 [root@localhost ~]# ls -al /raid1 /raid5 /raid1: 합계 28 drwxr-xr-x 3 root root 4096 3월 31 22:11 . dr-xr-xr-x. 24 root root 4096 3월 31 21:53 .. -rw-r--r-- 1 root root 158 3월 31 22:11 hosts drwx------ 2 root root 16384 3월 31 21:50 lost+found /raid5: 합계 28 drwxr-xr-x 3 root root 4096 3월 31 22:11 . dr-xr-xr-x. 24 root root 4096 3월 31 21:53 .. -rw-r--r-- 1 root root 158 3월 31 22:11 hosts drwx------ 2 root root 16384 3월 31 21:53 lost+found
▶ Linear RAID와 RAID 0으로 구성된 디스크의 경우 OS 상에서 확인을 할 수 없기 때문에 손상된 것으로 예측할 수 있습니다. 반면에 RAID 1과 RAID 5로 구성된 디스크의 경우 사전에 복사한 /etc/hosts 파일이 잘 유지되고 있는 것을 확인할 수 있습니다.
[root@localhost dev]# mdadm --detail /dev/md1 /dev/md1: Version : 1.2 Creation Time : Thu Mar 31 21:48:42 2022 Raid Level : raid1 Array Size : 1046528 (1022.00 MiB 1071.64 MB) Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB) Raid Devices : 2 Total Devices : 1 Persistence : Superblock is persistent Update Time : Thu Mar 31 21:48:47 2022 State : clean, degraded Active Devices : 1 Working Devices : 1 Failed Devices : 0 Spare Devices : 0 Consistency Policy : resync Name : localhost.localdomain:1 (local to host localhost.localdomain) UUID : 789c03e6:75712250:fc73c1ae:fa772b9c Events : 25 Number Major Minor RaidDevice State 0 8 49 0 active sync /dev/sdd1 - 8 0 1 removed
▶ mdadm의 명령어를 통해서 RAID 1의 디스크를 확인했을 경우 DISK 1개가 removed 되어 장애가 났지만 시스템의 파일들을 보존할 수 있는 것을 확인할 수 있습니다.
[root@localhost /]# mdadm --detail /dev/md5 /dev/md5: Version : 1.2 Creation Time : Thu Mar 31 21:53:36 2022 Raid Level : raid5 Array Size : 2091008 (2042.00 MiB 2141.19 MB) Used Dev Size : 1045504 (1021.00 MiB 1070.60 MB) Raid Devices : 3 Total Devices : 2 Persistence : Superblock is persistent Update Time : Thu Mar 31 21:54:11 2022 State : clean, degraded Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Name : localhost.localdomain:5 (local to host localhost.localdomain) UUID : 70b9ce28:6daa0e7a:f8f0ed9e:97096edc Events : 26 Number Major Minor RaidDevice State 0 8 113 0 active sync /dev/sde1 - 0 0 1 removed 3 8 145 2 active sync /dev/sdf1
▶ RAID 5 구성 역시 3개의 디스크 중에서 한개의 디스크가 장애가 났지만 디렉터리 내의 파일을 손상시키지 않고 유지할 수 있는 것을 확인할 수 있습니다.
[root@localhost /]# mdadm --run /dev/md9 mdadm: failed to start array /dev/md/9: No such file or directory [root@localhost /]# mdadm --run /dev/md0 mdadm: failed to start array /dev/md/0: Invalid argument [root@localhost /]# mdadm --stop /dev/md9 mdadm: stopped /dev/md9 [root@localhost /]# mdadm --stop /dev/md1 mdadm: stopped /dev/md0
▶ Linear RAID와 RAID 0으로 구성한 마운트 포인트를 확인 했을 경우 이미 없는 디렉터리라고 호출을 하게 되고 손상된 것을 확인할 수 있습니다. 해당 시스템의 중요한 정보를 가지고 있는 데이터만이라도 살리기 위해서 손상된 디스크를 mdadm --stop /dev/md9, md1 명령어를 통해 중지합니다.
[root@localhost /]#vi /etc/fstab # # /etc/fstab # Created by anaconda on Mon Feb 28 20:48:23 2022 # # Accessible filesystems, by reference, are maintained under '/dev/disk/'. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info. # # After editing this file, run 'systemctl daemon-reload' to update systemd # units generated from this file. # UUID=6d75a782-7d9b-4e9e-a338-fa882a919ada / xfs defaults 0 0 UUID=ae9aeae5-2577-49e3-86d9-63db631bc9d8 swap swap defaults 0 0 #/dev/md9 /raidLinear ext4 defaults 0 0 #/dev/md0 /raid0 ext4 defaults 0 0 /dev/md1 /raid1 ext4 defaults 0 0 /dev/md5 /raid5 ext4 defaults 0 0
▶ 재부팅을 하기전에 /etc/fstab에 자동 마운트로 지정된 부분을 주석 처리하게 되면 maintenance모드로 빠지지 않고 정상적으로 부팅 되게 됩니다. (단, 손상된 디스크의 디렉토리는 복구 불가능)
2022.04.05 - [System of Infra/LINUX] - LINUX DISK RAID0 RAID1 RAID5 구성하는 방법(2편)
2022.03.30 - [System of Infra/LINUX] - LINUX DISK Linear RAID 구성하는 방법(1편)
2022.03.23 - [System of Infra/LINUX] - LINUX DISK 추가를 통한 파티션 생성하는 방법(2편)
2022.03.21 - [System of Infra/LINUX] - LINUX DISK 추가를 통한 파티션 생성하는 방법(1편)
PS. 포스팅의 내용은 제 기준으로 작성한 것이기 때문에 참고해서 보시면 감사하겠습니다.
포스팅 과정의 오류 및 오타 그리고 궁금한 점에 대해서는 댓글 남겨주세요.
반응형'System of Infra > Linux System' 카테고리의 다른 글
LINUX RAID1 디스크에 OS 설치하는 방법 (2) 2022.04.26 LINUX LVM(Logical Volume Managemant) 구성하는 방법 (1) 2022.04.26 LINUX DISK RAID0 RAID1 RAID5 구성하는 방법(2편) (4) 2022.04.05 LINUX DISK Linear RAID 구성하는 방법(1편) (0) 2022.03.30 LINUX DISK 추가를 통한 파티션 생성하는 방법(2편) (2) 2022.03.23