Linux

Ch.6 하드디스크 관리와 사용자별 공간 할당-2

낑깡꺙냥 2024. 4. 4. 09:04

6.2.3 Linear RAID, RAID 0, RAID 1, RAID 5 구현

mdadm --create 레이드 장치명 --level=레벨 --raid-devices=갯수 장치1 장치2

  1. RAID를 구성하기 위해 필요한 갯수만큼 하드디스크를 추가한다.
  2.  추가한 하드디스크를 fdisk 명령어로 RAID용 파티션으로 만든다.
  3. mdadm 명령어를 사용해서 실제 RAID를 구성한다.
  4. mkfs.ext4 명령어로 파티션 장치의 파일 시스템을 생성한다. (포맷)
  5. 마운트할 디렉터리를 생성하고 mount 명령어를 사용해 마운트 시킨다.
  6. 컴퓨터를 부팅할 때 언제든지 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은 포맷하지 않음(레이드 만들기 전에도 포맷하지 않음)#

df -hT 총 용량 3G

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

 

df -hT 총 용량 2G, 만약 3G+2G 시 총 용량: 2G/ 두 장치가 동일 용량이 아니라서

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

df -hT 총 용량 1G

 

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

더보기
metadata -> 디스크 내부의 레이드 정보 기록
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 장치 제거 #

RAID Linear, RAID 0 사라진 것을 확인
장치명이 자동으로 바뀜
mdadm --detail /dev/md1 or md5
fstab의 md0. md9를 주석 처리 후 reboot / md0. md9 Inactive

 

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###################

dnf -y install mc
dnf -y install m4

 

 

NOTE

더보기

firewall-cmd --add-service={telnet,ssh,http}  중괄

\ : 보조 프롬프트
명령이 길 경우 유용