6.2.3 Linear RAID, RAID 0, RAID 1, RAID 5 구현
mdadm --create 레이드 장치명 --level=레벨 --raid-devices=갯수 장치1 장치2
- RAID를 구성하기 위해 필요한 갯수만큼 하드디스크를 추가한다.
- 추가한 하드디스크를 fdisk 명령어로 RAID용 파티션으로 만든다.
- mdadm 명령어를 사용해서 실제 RAID를 구성한다.
- mkfs.ext4 명령어로 파티션 장치의 파일 시스템을 생성한다. (포맷)
- 마운트할 디렉터리를 생성하고 mount 명령어를 사용해 마운트 시킨다.
- 컴퓨터를 부팅할 때 언제든지 RAID 장치가 마운트되어 있도록 설정한다. (vi /etc/fstab 또는 gedit /etc/fstab으로 fstab 파일을 열고 맨 밑줄에 추가)
1) Linear RAID 구현
mdadm --create /dev/md9 --level=linear --raid-devices=2 /dev/sdb1 /dev/sdc1 #레이드 장치 생성
mkfs.ext4 /dev/md9 #md9 포맷
mkdir /raidLinear
mount /dev/md9 /raidLinear
#md9 포맷, sdb1과 sdc1은 포맷하지 않음(레이드 만들기 전에도 포맷하지 않음)#
2) RAID 0 구현
mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdd1 /dev/sde1
mkfs.xfs /dev/md0 #md0 포맷
mkdir /raid0
mount /dev/md0 /raid0
3) RAID 1 구현
mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdf1 /dev/sdg1
mkfs.ext4 /dev/md0 #md1 포맷
mkdir /raid1
mount /dev/md1 /raid1
4) RAID 5 구현
mdadm -C /dev/md5 -l 5 -n 3 /dev/sdh1 /dev/sdi1 /dev/sdj1
mkfs.xfs /dev/md5 #md5 포맷
mkdir /raid5
mount /dev/md5 /raid5
NOTE
array started
삭제 시에는 array 삭제 후 metadata까지도 제거
mdadm --detail --scan
레이드 어레이 현황 확인(전체)
mdadm --detail /dev/md9
md9 장치의 상세 현황 확인
- state: clean이 정상
- active sync- 올라와서 구동 중
ls -ltr (시간 순으로 정렬 후 자세히 보기)
6.2.4 Linear RAID, RAID 0, RAID 1, RAID 5에서의 문제 발생과 조치 방법
RAID 1과 RAID 5는 '결함 허용'기능이 있으므로 하드디스크에 문제가 발생해도 저장된 데이터는 안전하다.
*각 RAID 구성과 연결된 하드디스크를 1개씩 고장내면 기존에 /dev/sdb~/dev/sdj까지 9개였던 장치가 /dev/sdb~/dev/sdf까지 5개만 보인다. 즉 기존의 /dev/sdc가 없어지면 /dev/sdc 장치가 없어지는 것이 아니라 하나씩 밀리는 것이다.
RAID로 구성된 하드디스크가 고장나면 일단 응급모드로 접속한다. 시스템이 정상적으로 가동되도록 하려면 '결함 허용' 기능이 없는 Linear RAID와 RAID 0 장치를 중지하고, /etc/fstab에서도 제거해야 한다.
스냅샷 후 레이드 고장내기
cp /boot/vmlinuz-4.18.0-513.18.1.el8_9.x86_64 /raidLinear/
cp /boot/vmlinuz-4.18.0-513.18.1.el8_9.x86_64 /raid0/
cp /boot/vmlinuz-4.18.0-513.18.1.el8_9.x86_64 /raid1/
cp /boot/vmlinuz-4.18.0-513.18.1.el8_9.x86_64 /raid5/
# poweroff 후, 스냅샷, sdb. sde, sdg, sdj 장치 제거 #
Linear RAID, RAID 0, RAID 1, RAID 5의 원상 복구
하나의 하드디스크가 고장나도 RAID 1과 RAID 5의 데이터를 정상적으로 사용할 수 있지만, 만약 나머지 정상으로 작동하던 다른 하나의 하드디스크도 고장나머리면 데이터는 영구히 복구할 수 없게 된다. 그러므로 될 수 있으면 빨리 고장난 하드디스크를 제거하고 새로운 하드디스크로 교체해야 한다.
또, Linear RAID와 RAID 0의 구성은 원상 복구할 수 있지만, 그 안의 데이터는 살릴 수 없다.
Linear RAID와 RAID 0의 경우, 기존 작동하던 RAID를 중지시킨 뒤 다시 구성하면 된다.(RAID는 제거하고 다시 묶기)
RAID 1과 RAID 5의 경우, 하드디스크가 1개 빠졌을 뿐 잘 작동하기 때문에 기존 RAID 장치에 새로운 하드디스크만 추가하면 된다.
NOTE
Linear RAID , RAID 0
mdadm --stop /dev/md0
mdadm --stop /dev/md9
디스크를 추가하면 VMware에서 알아서 비어있는 scsi 장치에 차례대로 장착해 준다.
포맷, 마운트, 자동 마운트 후 reboot
RAID 1. RAID 5
mdadm /dev/md5 --add /dev/sdg5
mdadm /dev/md5 --add /dev/sdj1
RAID1에 2n+1(spare) 디스크 하나 더 장착 시 스페어 디스크가 달린다.
레이드 삭제
1. 언마운트
umount /dev/md5
2. mdadm -D --scan으로 확인 후 정지
mdadm -S /dev/md5
3. md 파티션에서 레이드 정보 제거
mdadm --zero-superblock /dev/sdh1 /dev/sdi /dev/sdj
4.fstab 파일에서 md5장치 제거
6.2.5 고급 RAID 레벨
RAID 6과 RAID 1+0 개념
RAID 6은 기존 RAID 5의 구성과 구현 방법이 거의 동일하다. 단, 하드디스크가 최소 4개 이상 필요한 것 뿐이다. RAID 1+0의 구현 방법은 약간 다르다. 먼저 하드디스크를 각 2개씩 RAID 1로 구성한 후, RAID 1장치들을 다시 RAID 0으로 묶는다.
5) RAID 6 구현
mdadm -C /dev/md6 -l 6 -n 4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
mkfs.ext4 /dev/md6
mkdir /raid6
mount /dev/md6 /raid6
6) RAID 1+0 구현
mdadm -C /dev/md2 -l 1 -n 2 /dev/sdf1 /dev/sdg1
mdadm -C /dev/md3 -l 1 -n 2 /dev/sdh1 /dev/sdi1
mdadm -C /dev/md10 -l 0 -n 2 /dev/md2 /dev/md3
mkfs.xfs /dev/md10
mkdir /raid10
mount /dev/md10 /raid10
1) 연구 과제
Server B를 초기화하시오.
1. 파트너의 서버에 어떠한 수단을 쓰든 원격 접속하시오.
1-1. 파트너(동료 엔지니어)에게 다음 작업을 위한 적절할 갯수의 디스크 추가를 요청하시오.
2. 적절한 갯수와 용량의 디스크가 있는지 파악하고, RAID 6과 RAID 10을 구성한 후 마운트 및 자동 마운트하시오.
2-1. RAID 6는 가용성 향상을 위해 2개의 스페어 디스크를 추가해 놓으시오. ex)mdamd /dev/md6 --add /dev/sdj1
3. 동료 엔지니어에게 추가적인 디스크를 1개 설치 요청하고, 해당 디스크를 다음과 같이 파티션 분배하시오.(용량은 임의로 나누시오.)
주 파티션 2개
확장 파티션 1개
논리 파티션 6개
보너스 문제
매주 월요일 아침 9시에 디스크 마운트 현황 출력값이 저장된 파일이 만들어지도록 쉘 스크립트를 작성하고 주기적으로 작동되도록 만드시오.
vi /etc/crontab #작업 스케줄 기입
#vi 편집#
00 09 * * 1 root run-parts /etc/cron.weekly#
mkdir /dfbackup
cd /etc/cron.weekly
vi df.sh
#vi 편집#
#!/bin/bash
set $(date)
fname="mount-$2 $3.txt"
df -hT > /dfbackup/$fname
chmod a+x df.sh
date 041508592024.45
systemctl restart crond
보너스 문제
Server B의 레이드 어레이의 각 상세 현황을 출력한 파일을 레이드 어레이 갯수만큼 출력시키고, 해당 파일을 Server A의 /root로 보내는 쉘 스크립트(쓰고자 하는 명령어를 나열)를 작성하여 실행하시오.
(yes, 비번 입력 등의 과정은 일단 수동으로 진행)
2) 연구 과제
server B를 초기화하시오.
이후 적절한 디스크 추가를 통해 RAID 1+6을 구성하시오.
해당 레이드 장치는 repo에 마운트 하시오.
이후 /repo 장치에 Rocky Linux 설치 디스크의 BaseOS 디렉터리를 복사하시오.
마지막으로 dnf 명령어가 해당 리포지터리를 통해서만 작동될 수 있도록 만드시오.
fdisk /dev/sdb #/dev/sdb ~ /dev/sdi까지 type이 fd가 되도록 fdisk
dnf -y install mdadm
mdadm -C /dev/md1 -l 1 -n 2 /dev/sdb1 /dev/sdc1
mdadm -C /dev/md2 -l 1 -n 2 /dev/sdd1 /dev/sde1
mdadm -C /dev/md3 -l 1 -n 2 /dev/sdf1 /dev/sdg1
mdadm -C /dev/md4 -l 1 -n 2 /dev/sdh1 /dev/sdi1
mdadm -C /dev/md6 -l 6 -n 4 /dev/md1 /dev/md2 /dev/md3 /dev/md4
mdadm -D /dev/md6
mkfs.ext4 /dev/md6
mkdir /repo
mount /dev/md6 /repo
mkdir /cdmount
mount /dev/cdrom /cdmount
cp -r /cdmount/BaseOS /repo
cd /etc/yum.repo.d
mkdir reporepo
mv *.repo reporepo
vi Rocky-BaseOS.repo
##################vi###################
[baseos]
name=Rocky Linux BaseOS
baseurl=file:///repo/BaseOS
gpgcheck=0
##################vi###################
NOTE
firewall-cmd --add-service={telnet,ssh,http} 중괄
\ : 보조 프롬프트
명령이 길 경우 유용
'Linux' 카테고리의 다른 글
Ch.7 셸 프로그래밍 (0) | 2024.04.18 |
---|---|
Ch.9 네임 서버 설치 및 운영 (0) | 2024.04.16 |
Ch.6 하드디스크 관리와 사용자별 공간 할당-1 (0) | 2024.03.31 |
Ch.5 X 윈도 (0) | 2024.03.31 |
CH.4 서버를 구축하는 데 알아야 할 필수 개념과 명령-5 (0) | 2024.03.27 |