ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • LINUX DISK RAID0 RAID1 RAID5 장애 긴급 복구 하는 방법
    System of Infra/Linux System 2022. 4. 7. 21:15
    반응형

    LINUX 로고이미지

    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편)

     

    LINUX DISK RAID0 RAID1 RAID5 구성하는 방법(2편)

    LINUX DISK RAID 0 RAID 1 RAID 5 구성하는 방법(2편) [root@localhost dev]# ls -al | grep sd brw-rw---- 1 root disk 8, 0 3월 20 17:59 sda brw-rw---- 1 root disk 8, 1 3월 20 17:59 sda1 brw-rw---- 1 roo..

    pinetreeday.tistory.com

    2022.03.30 - [System of Infra/LINUX] - LINUX DISK Linear RAID 구성하는 방법(1편)

     

    LINUX DISK Linear RAID 구성하는 방법(1편)

    LINUX DISK Linear RAID 구성하는 방법(1편) [root@localhost dev]# ls -al sd* brw-rw---- 1 root disk 8, 0 3월 20 17:41 sda brw-rw---- 1 root disk 8, 1 3월 20 17:41 sda1 brw-rw---- 1 root disk 8,..

    pinetreeday.tistory.com

    2022.03.23 - [System of Infra/LINUX] - LINUX DISK 추가를 통한 파티션 생성하는 방법(2편)

     

    LINUX DISK 추가를 통한 파티션 생성하는 방법(2편)

    LINUX DISK 추가를 통한 파티션 생성하는 방법(1편) [root@localhost dev]# ls -ltr | grep -i sd brw-rw---- 1 root disk 8, 16 3월 20 16:44 sdb brw-rw---- 1 root disk 8, 0 3월 20 16:44 sda brw-rw---- 1 r..

    pinetreeday.tistory.com

    2022.03.21 - [System of Infra/LINUX] - LINUX DISK 추가를 통한 파티션 생성하는 방법(1편)

     

    LINUX DISK 추가를 통한 파티션 생성하는 방법(1편)

     LINUX  DISK 추가를 통한 파티션 생성하는 방법 [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 par..

    pinetreeday.tistory.com

     

    PS. 포스팅의 내용은 제 기준으로 작성한 것이기 때문에 참고해서 보시면 감사하겠습니다.

    포스팅 과정의 오류 및 오타 그리고 궁금한 점에 대해서는 댓글 남겨주세요.



    반응형

    댓글

Designed by Tistory.