본문 바로가기

OS,Network,Container

CentOS7 RAID1 구성, RAID 개념

반응형

CentOS7 Raid1 구성, RAID 개념에 대해 알아보겠습니다.

 

[ RAID 란 ? ]

Redundant Array of Inexpensive Disk

Redundant Array of Independent Disk

 

: 여러 개의 하드디스크를 하나의 하드디스크처럼 사용하는 기법이다. ( 비용 절감, 신뢰성, 성능 향상의 장점을 지님 )

  하드 디스크를 볼륨이란 단위로 취급

 

 

 

 

[ RAID 종류 ]

 

 

1. RAID 0 // Striping 방식 // 최소 2개 이상의 하드디스크 요구

- 최소 2개의 하드디스크가 필요하며, 데이터가 동시에 저장된다. ( 공간 효율이 좋고 속도가 빠름 )

- 낮은 신뢰성 ( 한 개의 하드디스크가 고장나면 모든 데이터를 잃어버림 )

 

 

 

 

2. RAID 1 // Mirroring 방식 // 최소 2개 이상의 하드디스크 요구

 

 

- 미러링이라고 불림. 신뢰성이 높음

- 공간 효율이 좋지 않다 ( 비용이 2배, 저장공간이 2개 필요 )

 

 

 

 

 

3. RAID 5 // 패리티 방식 // 최소 3개 이상의 하드디스크 요구

 

- 하나의 하드디스크에 문제가 발생하면 패리티를 이용하여 데이터를 복구한다.

- 위의 그림을 보면 000, 111, 010, 011 비트가 순차적으로 들어가 있고, 패리티 비트는 짝수가 유지되어야 한다.

- 패리티 비트가 0110인데, sdc가 오류났다고 가정했을 때 01?0 이며, 짝수가 되기 위해서는 ?는 1이어야 한다. (이렇게 오류가 나도 복구할 수 있음. )

 

- 2개 이상 고장난다면 RAID 5는 복구 불가.

 

 

 

4. RAID 6 // 2개의 패리티 방식 // 최소 4개 이상의 하드디스크 요구

 

 

- 두 개의 패리티를 사용하여 데이터의 신뢰성을 높임

- 공간 효율은 RAID 5에 비해 낮다.

 

 

5. RAID 1+0 // 미러링 방식을 스트라이핑 함 // 최소 4개 이상의 하드디스크 요구

 

RAID 0+1에 비해 더 좋음 ( 가용량도 같고 속도도 같지만 신뢰성이나 내결함성에 있어 더 우수함 )

 

 

 

 

 

Linear RAID, RAID 0, RAID 1, RAID 5, RAID 6, RAID 1+0, RAID 0+1 등이 있지만 RAID 구성하는 방식은 대부분 비슷함

그 중, RAID 1, 5, 6, 1+0을 실습해 볼 것이다.

 

 

 


[ RAID 1 ]

 

 

[ 실습 환경 만들기 및 체크 ]

 

 

RAID 1 : HD 2개

RAID 5 : HD 3개

RAID 6 : HD 4개

RAID 1+0 : HD 4개

 

총 13개의 HD가 필요하다. vmware에서 가상의 hd를 추가로 생성해주자.

( 필자는 각 HD의 용량을 20G로 설정해주었다. 그냥 default 값임 )

 

 

- ls -l /dev/sd*

sdb ~ sdn 까지 13개의 순수한 HD가 있음을 확인할 수 있다.

[root@localhost ~]# ls -l /dev/sd*
brw-rw---- 1 root disk 8,   0 Mar 24 03:11 /dev/sda
brw-rw---- 1 root disk 8,   1 Mar 24 03:11 /dev/sda1
brw-rw---- 1 root disk 8,   2 Mar 24 03:11 /dev/sda2
brw-rw---- 1 root disk 8,   3 Mar 24 03:11 /dev/sda3
brw-rw---- 1 root disk 8,  16 Mar 24 03:11 /dev/sdb
brw-rw---- 1 root disk 8,  32 Mar 24 03:11 /dev/sdc
brw-rw---- 1 root disk 8,  48 Mar 24 03:11 /dev/sdd
brw-rw---- 1 root disk 8,  64 Mar 24 03:11 /dev/sde
brw-rw---- 1 root disk 8,  80 Mar 24 03:11 /dev/sdf
brw-rw---- 1 root disk 8,  96 Mar 24 03:11 /dev/sdg
brw-rw---- 1 root disk 8, 112 Mar 24 03:11 /dev/sdh
brw-rw---- 1 root disk 8, 128 Mar 24 03:11 /dev/sdi
brw-rw---- 1 root disk 8, 144 Mar 24 03:11 /dev/sdj
brw-rw---- 1 root disk 8, 160 Mar 24 03:11 /dev/sdk
brw-rw---- 1 root disk 8, 176 Mar 24 03:11 /dev/sdl
brw-rw---- 1 root disk 8, 192 Mar 24 03:11 /dev/sdm
brw-rw---- 1 root disk 8, 208 Mar 24 03:11 /dev/sdn

 

- lsblk

이 명령어를 통해서도 확인할 수 있다.

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0  500M  0 part /boot
├─sda2            8:2    0 17.5G  0 part
│ ├─centos-root 253:0    0  7.5G  0 lvm  /
│ └─centos-home 253:1    0   10G  0 lvm  /home
└─sda3            8:3    0    2G  0 part [SWAP]
sdb               8:16   0   20G  0 disk
sdc               8:32   0   20G  0 disk
sdd               8:48   0   20G  0 disk
sde               8:64   0   20G  0 disk
sdf               8:80   0   20G  0 disk
sdg               8:96   0   20G  0 disk
sdh               8:112  0   20G  0 disk
sdi               8:128  0   20G  0 disk
sdj               8:144  0   20G  0 disk
sdk               8:160  0   20G  0 disk
sdl               8:176  0   20G  0 disk
sdm               8:192  0   20G  0 disk
sdn               8:208  0   20G  0 disk
sr0              11:0    1 73.7M  0 rom
sr1              11:1    1  942M  0 rom

 

 

 

[ partition 생성 ]

 

- fdisk /dev/sdb

- m // 메뉴얼

- n // 새로운 파티션 생성

- ( Enter ) * 4회 // Enter을 누르면 default 값이 적용됨 

- t // system id 설정 

- L // 코드 리스트를 확인하기 위해

- fd // Linux Raid auto 

- w // 설정 완료

[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xfaefa946.

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039):
Using default value 41943039
Partition 1 of type Linux and of size 20 GiB is set

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): L

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris
 1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx
 5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data
 6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility
 8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt
 9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access
 a  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi eb  BeOS fs
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f4  SpeedStor
14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f2  DOS secondary
16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep
1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT
1e  Hidden W95 FAT1 80  Old Minix
Hex code (type L to list all codes): fd
Changed type of partition 'Linux' to 'Linux raid autodetect'

Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xfaefa946

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41943039    20970496   fd  Linux raid autodetect

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

 

위와 같은 방법으로

/dev/sdc 도 파티션을 생성해준다.

 

 

- lsblk

sdb1과 sdc1이 생성되었음을 확인할 수 있다.

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0  500M  0 part /boot
├─sda2            8:2    0 17.5G  0 part
│ ├─centos-root 253:0    0  7.5G  0 lvm  /
│ └─centos-home 253:1    0   10G  0 lvm  /home
└─sda3            8:3    0    2G  0 part [SWAP]
sdb               8:16   0   20G  0 disk
└─sdb1            8:17   0   20G  0 part
sdc               8:32   0   20G  0 disk
└─sdc1            8:33   0   20G  0 part
sdd               8:48   0   20G  0 disk
sde               8:64   0   20G  0 disk
sdf               8:80   0   20G  0 disk
sdg               8:96   0   20G  0 disk
sdh               8:112  0   20G  0 disk
sdi               8:128  0   20G  0 disk
sdj               8:144  0   20G  0 disk
sdk               8:160  0   20G  0 disk
sdl               8:176  0   20G  0 disk
sdm               8:192  0   20G  0 disk
sdn               8:208  0   20G  0 disk
sr0              11:0    1 73.7M  0 rom
sr1              11:1    1  942M  0 rom

 

 

 

 

[ mdadm을 이용하여 RAID 1 생성 // 하나의 볼륨으로 만들어주기 ! ]

 

 

 

아차!! mdadm이 깔려있지 않으신 분들은 yum -y install mdadm 을 통해 깔아주셔야 합니다.

- yum -y install mdadm

[root@localhost ~]# mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
-bash: mdadm: command not found
[root@localhost ~]# yum -y install mdadm
[root@localhost ~]# rpm -qa | grep mdadm*
mdadm-4.1-1.el7.x86_64

 

- mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1

만약 array 생성하는것을 계속할거냐 질문이 들어오면 y 눌러준다.

 

[root@localhost ~]# 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.

 

- mdadm --detail -scan

- mdadm --defail /dev/md1

[root@localhost ~]# mdadm --detail -scan
ARRAY /dev/md/1 metadata=1.2 name=localhost.localdomain:1 UUID=0b94cc88:9a6f8947:2d587e22:ffaa022d
[root@localhost ~]# mdadm --detail /dev/md1
/dev/md1:
           Version : 1.2
     Creation Time : Tue Mar 24 03:59:02 2020
        Raid Level : raid1
        Array Size : 20953088 (19.98 GiB 21.46 GB)
     Used Dev Size : 20953088 (19.98 GiB 21.46 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Tue Mar 24 04:25:13 2020
             State : clean
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : resync

              Name : localhost.localdomain:1  (local to host localhost.localdomain)
              UUID : 0b94cc88:9a6f8947:2d587e22:ffaa022d
            Events : 17

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1

 

 

 

 

[ File System 포맷 & 마운팅 포인트 대상 디렉터리 생성 & 마운트 ]

 

- mkfs.ext4 /dev/md1    //  파일 시스템 포맷, 종류는 ext4로 해준다. 

- mkdir /mnt/md1     //  마운팅 포인트로 지정할 /mnt/md1 디렉터리 생성

- mount /dev/md1 /mnt/md1  //  mount [디바이스 경로] [마운팅 포인트]

- df -h      // 마운트가 된 것을 확인할 수 있다.

[root@localhost ~]# mkfs.ext4 /dev/md1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5238272 blocks
261913 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2153775104
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

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

[root@localhost ~]# mkdir /mnt/md1
[root@localhost ~]# mount /dev/md1 /mnt/md1
[root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 475M     0  475M   0% /dev
tmpfs                    487M     0  487M   0% /dev/shm
tmpfs                    487M  7.8M  479M   2% /run
tmpfs                    487M     0  487M   0% /sys/fs/cgroup
/dev/mapper/centos-root  7.3G  1.6G  5.4G  23% /
/dev/sda1                477M  136M  312M  31% /boot
/dev/mapper/centos-home  9.8G   37M  9.2G   1% /home
tmpfs                     98M     0   98M   0% /run/user/0
/dev/md1                  20G   45M   19G   1% /mnt/md1

 

 

 

[ 재부팅 후에도 자동으로 마운트 할 수 있도록 설정 / /etc/fstab ]

 

 

 

이 설정을 안해주면 재부팅 하고 난 이후에 마운트 설정이 해제되므로 해줘야 한다.

 

- /dev/md1                           /mnt/md1                     ext4       defaults            0 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[ 정리 ]

 

1. 가상의 HD n개 생성

2. fdisk를 통해 파티션 생성 ( parted로도 가능 )

3. mdadm을 통해 RAID 1 볼륨 생성

4. 파일 시스템 포맷 -> 마운트 디렉터리 생성 -> 마운트 디렉터리에 디바이스 경로 마운트 해주기

5. /etc/fatab에 auto-mount 해주기

 

 

 

 

 

RAID 1 실습을 끝내보았습니다.

 

다음 시간에는 RAID 5, 6, 1+0에 대해 실습을 진행해보겠습니다.

반응형