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에 대해 실습을 진행해보겠습니다.
'OS,Network,Container' 카테고리의 다른 글
CentOS7 RAID 5 구성, parted (9) | 2020.04.16 |
---|---|
리눅스 tar 아카이브란? tar 개념, 실습 (2) | 2020.04.15 |
리눅스 방화벽이란? Firewall (1) | 2020.04.15 |
CentOS7 설치 후 네트워크 설정 (1) | 2020.04.14 |
CentOS7 네트워크 본딩 이중화 구성 설정하기 (0) | 2020.04.14 |