1. RAID0 / RAID1 / RAID5 생성
apt-get -y install mdadm
# 현재 디스크 및 파티션 보기 명령어
fdisk -l
# 하드디스크 지정하여 보기
fdisk -l /dev/sda
# 경로를 통한 파티션 정보 확인
ls -la /dev/sd*
# sdb raid 파일타입으로 파티션 생성
# fdisk /dev/sdb
# p : 파티션 정보 확인
# n : 파티션 생성
# n->p : 파티션 번호 지정
# n->p->1 : 파티션 번호 1번으로 지정
# t : 파티션 파일타입 변경
# t->fd : raid file type
# w : 저장후 종료
fdisk /dev/sdb <<LVM_SETTING
p
n
p
1
2048
t
fd
w
LVM_SETTING
# dump 생성 help 확인
sfdisk --help | grep '\-d'
# dump 생성
sfdisk -d /dev/sdb > /tmp/sdb.dmp
# 생성 dump 확인
cat /tmp/sdb.dmp
# dump 파일 적용
sfdisk --force /dev/sdc < /tmp/sdb.dmp
sfdisk --force /dev/sdd < /tmp/sdb.dmp
sfdisk --force /dev/sde < /tmp/sdb.dmp
sfdisk --force /dev/sdf < /tmp/sdb.dmp
sfdisk --force /dev/sdg < /tmp/sdb.dmp
sfdisk --force /dev/sdh < /tmp/sdb.dmp
# 현재 디스크 및 파티션 보기 명령어
fdisk -l
# raid 0 생성
mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb1 /dev/sdc1
# raid 0 생성 확인 1
mdadm --detail /dev/md0
# raid 0 생성 확인 2
cat /proc/mdstat
# raid 0 디스크 파일 포멧 ext4로 변경
mkfs.ext4 /dev/md0
# mount 할 폴더 생성
mkdir /data0
# raid 0 디스크 mount
mount /dev/md0 /data0
# mount 확인
df -Th | grep "^/dev/md"
# mount 시 생성되는 복구 및 점검 파일 [ lost+found ] 생성 확인
ls -la /data0
echo -e "y\n" | mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdd1 /dev/sde1
# Resync Status 100%로 완전 동기화 될때까지 대기
until [ 0 -eq `mdadm --detail /dev/md1 | grep -c "Status"` ]; do mdadm --detail /dev/md1 | grep "Status"; sleep 1; done
# 생성 확인
cat /proc/mdstat
# 포멧팅
mkfs.ext4 /dev/md1
# mount 할 폴더 생성
mkdir /data1
# raid 1 디스크 mount
mount /dev/md1 /data1
# 마운트 내용 확인
df -Th | grep "^/dev/md"
# mount 시 생성되는 복구 및 점검 파일 [ lost+found ] 생성 확인
ls -la /data1
# raid 5 생성
mdadm --create /dev/md5 --level=5 --raid-devices=3 /dev/sdf1 /dev/sdg1 /dev/sdh1
# Rebuild Status 100%로 완전 동기화 될때까지 대기
until [ 0 -eq `mdadm --detail /dev/md5 | grep -c "Status"` ]; do mdadm --detail /dev/md5 | grep "Status"; sleep 1; done
# 포멧팅
mkfs.ext4 /dev/md5
# mount 할 폴더 생성
mkdir /data5
# raid 5 디스크 mount
mount /dev/md5 /data5
# 마운트 내용 확인
df -Th | grep "^/dev/md"
# 기존 자동 마운팅 정보 삭제
sed -i "s/^\/dev\/md.*//g" /etc/fstab
sed -i "/^$/d" /etc/fstab
cat <<"RAID_SETTING" >> /etc/fstab
/dev/md0 /data0 ext4 defaults 0 0
/dev/md1 /data1 ext4 defaults 0 0
/dev/md5 /data5 ext4 defaults 0 0
RAID_SETTING
# mount 확인
# 오타 등의 문제로 오류가 발생할 경우 재부팅시 리눅스 접속이 안될 수 있음
# reboot 를 통해 mount 유지 확인
mount -a
2. RAID0 / RAID1 / RAID5 장애 복구
# harddisk를 제거후 raid 폴더 파일 내용이 유지 확인을 위해
# 용량이 큰 파일을 각 레이드 폴더에 붙여넣기
cp /boot/vmlinuz-* /data0
cp /boot/vmlinuz-* /data1
cp /boot/vmlinuz-* /data5
# 복사 확인
ls /data0 /data1 /data5
sed -i "s/^ARRAY \/dev\/md.*//g" /etc/mdadm/mdadm.conf
sed -i "/^$/d" /etc/mdadm/mdadm.conf
# 디스크가 고장난후 재부팅시 RAID 디스크 명이 변경되는 버그가 있어 RAID 디스크 명을 고정
echo ARRAY /dev/md0 UUID=`mdadm --detail /dev/md0 | grep UUID | awk '{print $3}'` >> /etc/mdadm/mdadm.conf
echo ARRAY /dev/md1 UUID=`mdadm --detail /dev/md1 | grep UUID | awk '{print $3}'` >> /etc/mdadm/mdadm.conf
echo ARRAY /dev/md5 UUID=`mdadm --detail /dev/md5 | grep UUID | awk '{print $3}'` >> /etc/mdadm/mdadm.conf
update-initramfs -u
# 시스템 종료
shutdown -h now
# 동작 테스트시 수행되지 않음
mdadm --run /dev/md0
# 파티션이 inactive 상태인 것 확인
mdadm --detail /dev/md0
# 동작 테스트가 잘 수행되는 것 확인
mdadm --run /dev/md1
# 디스크 하나가 제거되었지만 active 상태인 것 확인
mdadm --detail /dev/md1
# 동작 테스트가 잘 수행되는 것 확인
mdadm --run /dev/md5
# 디스크 하나가 제거되었지만 active 상태인 것 확인
mdadm --detail /dev/md5
# 기존 자동 마운팅 정보 삭제
sed -i "s/^\/dev\/md.*//g" /etc/fstab
sed -i "s/^#\/dev\/md.*//g" /etc/fstab
sed -i "/^$/d" /etc/fstab
cat <<"RAID_SETTING" >> /etc/fstab
# /dev/md0 /data0 ext4 defaults 0 0
/dev/md1 /data1 ext4 defaults 0 0
/dev/md5 /data5 ext4 defaults 0 0
RAID_SETTING
# RAID0 주석 처리 후 mount 에러가 나지 않는 것을 확인
mount -a
# 폴더에 기존 파일이 존재하는 것을 확인
ls -l /data1 /data5
# 기존 자동 마운팅 정보 삭제
sed -i "s/^\/dev\/md.*//g" /etc/fstab
sed -i "s/^#\/dev\/md.*//g" /etc/fstab
sed -i "/^$/d" /etc/fstab
mount -a
umount /data1 /data5
# 디스크 복구를 위해 시스템 종료
shutdown -h now
# sdb, sdd, sdf 파티션이 없는 것 확인
ls -la /dev/sd*
# sdb raid 파일타입으로 파티션 생성
# fdisk /dev/sdb
# p : 파티션 정보 확인
# n : 파티션 생성
# n->p : 파티션 번호 지정
# n->p->1 : 파티션 번호 1번으로 지정
# t : 파티션 파일타입 변경
# t->fd : raid file type
# w : 저장후 종료
fdisk /dev/sdb <<LVM_SETTING
p
n
p
1
2048
t
fd
w
LVM_SETTING
sfdisk -d /dev/sdb > /tmp/sdb.dmp
sfdisk --force /dev/sdd < /tmp/sdb.dmp
sfdisk --force /dev/sdf < /tmp/sdb.dmp
# disk 추가 확인
fdisk -l
# RAID1 디스크 추가
mdadm /dev/md1 --add /dev/sdb1
# 디스크 동기화 상태 확인
until [ 0 -eq `mdadm --detail /dev/md1 | grep -c "Status"` ]; do mdadm --detail /dev/md1 | grep "Status"; sleep 1; done
# RAID5 디스크 추가
mdadm /dev/md5 --add /dev/sdf1
# 디스크 동기화 상태 확인
until [ 0 -eq `mdadm --detail /dev/md5 | grep -c "Status"` ]; do mdadm --detail /dev/md5 | grep "Status"; sleep 1; done
# 기존 마운트 정보 삭제
sed -i "s/^\/dev\/md.*//g" /etc/fstab
sed -i "/^$/d" /etc/fstab
# RAID1, RAID5 재시작시 마운트 정보 추가
cat <<"RAID_SETTING" >> /etc/fstab
/dev/md1 /data1 ext4 defaults 0 0
/dev/md5 /data5 ext4 defaults 0 0
RAID_SETTING
# 마운트 오류 검사 및 마운트 처리 수행
mount -a
# mount 확인
df -Th | grep "^/dev/md"
ls -l /data1 /data5
3. RAID0 / RAID1 / RAID5 제거
# 기존 마운트 정보 삭제
sed -i "s/^\/dev\/md.*//g" /etc/fstab
sed -i "/^$/d" /etc/fstab
# mount 문법 오류 체크
mount -a
# mount list 확인
mount | grep md
# 마운트 해제
# unmount시 busy가 뜰 경우 [ fuser -ck /dev/md5 ] 명령어를 통해 강제 종료
umount /dev/md1
umount /dev/md5
# 디스크 파티션 설정 확인
fdisk -l | grep md
# inactive 에 대한 파티션 사용 중지시 [ --misc 옵션 ]을 주어야 중지 가능
mdadm --misc --stop /dev/md0
# RAID 파티션 중지
mdadm --stop /dev/md1
# RAID 파티션 중지
mdadm --stop /dev/md5
# 디스크 확인
fdisk -l | grep -v sda | grep sd
# raid 상태 확인
cat /proc/mdstat
# raid 종속 파티션 제거
mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdc1
mdadm --zero-superblock /dev/sdd1
mdadm --zero-superblock /dev/sde1
mdadm --zero-superblock /dev/sdf1
4. RAID6 생성 및 제거
# raid6 파티션 생성
mdadm --create /dev/md6 --level=6 --raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
# 구성 확인
mdadm --detail /dev/md6
mkfs.ext4 /dev/md6
mkdir /data6
mount /dev/md6 /data6
df -Th | grep "^/dev/md"
# raid6 파티션 삭제
umount /dev/md6
# 디스크 파티션 설정 확인
fdisk -l | grep md
# RAID 파티션 중지
mdadm --stop /dev/md6
# raid 상태 확인
cat /proc/mdstat
# raid 종속 파티션 제거
mdadm --zero-superblock /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
5. RAID1+0 생성 및 제거
echo -e "y\n" | mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
until [ 0 -eq `mdadm --detail /dev/md1 | grep -c "Status"` ]; do mdadm --detail /dev/md1 | grep "Status"; sleep 1; done
echo -e "y\n" | mkfs.ext4 /dev/md1
echo -e "y\n" | mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/sdd1 /dev/sde1
until [ 0 -eq `mdadm --detail /dev/md2 | grep -c "Status"` ]; do mdadm --detail /dev/md2 | grep "Status"; sleep 1; done
echo -e "y\n" | mkfs.ext4 /dev/md2
echo -e "y\n" | mdadm --create /dev/md10 --level=0 --raid-devices=2 /dev/md1 /dev/md2
mkfs.ext4 /dev/md10
mkdir /data10
mount /dev/md10 /data10
df -Th | grep "^/dev/md"
# raid10 파티션 삭제
umount /dev/md10
# 디스크 파티션 설정 확인
fdisk -l | grep md
# RAID 파티션 중지
mdadm --stop /dev/md10
mdadm --stop /dev/md1
mdadm --stop /dev/md2
# raid 상태 확인
cat /proc/mdstat
# raid 종속 파티션 제거
mdadm --zero-superblock /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
6. RAID0+1 생성 및 제거
mdadm --create /dev/md1 --level=0 --raid-devices=2 /dev/sdb1 /dev/sdc1
echo -e "y\n" | mkfs.ext4 /dev/md1
mdadm --create /dev/md2 --level=0 --raid-devices=2 /dev/sdd1 /dev/sde1
echo -e "y\n" | mkfs.ext4 /dev/md2
echo -e "y\n" | mdadm --create /dev/md9 --level=1 --raid-devices=2 /dev/md1 /dev/md2
until [ 0 -eq `mdadm --detail /dev/md9 | grep -c "Status"` ]; do mdadm --detail /dev/md9 | grep "Status"; sleep 1; done
mkfs.ext4 /dev/md9
mkdir /data01
mount /dev/md9 /data01
df -Th | grep "^/dev/md"
# raid01 파티션 삭제
umount /dev/md9
# 디스크 파티션 설정 확인
fdisk -l | grep md
# RAID 파티션 중지
mdadm --stop /dev/md9
mdadm --stop /dev/md1
mdadm --stop /dev/md2
# raid 상태 확인
cat /proc/mdstat
# raid 종속 파티션 제거
mdadm --zero-superblock /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
7. Linear RAID 생성 및 제거
mdadm --create /dev/md8 --level=linear --raid-devices=2 /dev/sdb1 /dev/sdc1
# 버그로 인해 이전 생성했던 레이드가 생성될경우 제거
mdadm --detail --scan
mkfs.ext4 /dev/md8
mdadm --detail /dev/md8
mkdir /data00
mount /dev/md8 /data00
df -Th | grep "^/dev/md"
# linear raid 파티션 삭제
umount /dev/md8
# 디스크 파티션 설정 확인
fdisk -l | grep md
# RAID 파티션 중지
mdadm --stop /dev/md8
# raid 상태 확인
cat /proc/mdstat
# raid 종속 파티션 제거
mdadm --zero-superblock /dev/sdb1 /dev/sdc1
'Operating Systems > Linux' 카테고리의 다른 글
[ Linux ] PXE 서버 설치 [ 임시 작성 ] (0) | 2021.10.21 |
---|---|
[ Linux ] PROXY 서버 설치 (0) | 2021.10.20 |
[ Linux ] RAID 활용 ( 1 / 2 ) - CentOS7 (0) | 2021.10.18 |
[ Linux ] SAMBA 서버 설치 (0) | 2021.10.16 |
[ Linux ] FTP 서버 설치 (0) | 2021.10.15 |