물리 디스크 -> 논리적으로 인식 -> 논리디스크
논리 디스크 = 물리 디스크들의 인덱스를 묶어서 사용 -> 동작 인터페이스 단계
RAID 컨트롤러 - 서버에서 인터페이스 컨트롤러와 별개로 있다.
물리적인 디스크와 논리적인 디스크의 차이 : 각 하드디스크는 자신의 물리 주소를 기억하는 인덱스가 필요함
RAID 0 스트라이핑- 100mb + 100mb =200mb 보다 좀 적음 -> 합치면서 만들어야 하는 논리 인덱스 공간이 필요하기 때문
RAID 1 미러링 - 두개의 하드를 하나로 인식하게 함 100mb + 100mb = 100mb 보다 좀 적음
CentOS7에 1개의 물리 디스크(sda)가 있다.
(s)da 동작방식 : 구형 : h - ATA or IDE -> 병렬 연결 방식
신형 : s - SCSI or SATA -> 직렬 연결 방식
s(d)a : Disk
sd(a) : 물리적으로 인식된 1번째 디스크
실습환경
하드 4개 사용, 각 디스크당 용량 10mb
1. 운영체제에서 디스크를 인식했는지 확인
/dev = 운영체제가 인식한 모든 디바이스는 여기에 인식된다.
fdisk -L - 시스템이 인식한 디스크
df - 현재 사용가능한 시스템의 정보 확인(sdc, sdd등 보이지 않음)
-> 시스템에서 인식했으나 운영체제가 자신이 사용할 저장소로 인식하지 않음
2. 운영체제에게 디스크를 사용할 수 있도록 설정해줘야 한다. -> 파티셔닝을 해줘야 한다.
dev/sdb 디스크 파티셔닝 = fdisk 대상 디스크 지정
-> fdisk /dev/sdb
새로운 파티션 추가 = n
primary - 기본 파티션 : 모든 디스크는 최대 4개 기본 파티션을 가질 수 있다.
extended - 확장 파티션 : 기본 파티션보다 많은 수의 파이션으로 나눌 때 사용된다.(4개 이상)
sdb 디스크의 전체 영역을 2048부터 208895까지 총 101mb를 지정했다.
파티션의 기본값을 설정해줘야 한다. -> 시스템 ID 초기값 83(Linux)
레이드에서 사용할 시스템 ID -> fd(Linux raid auto)
3. 파티션 초기화 작업 -> 포멧(format)
현재 사용하고 있는 파일 시스템 확인 df -T
타입을 사이즈로 변환해서 확인 df -h
sdb1 의 파일 시스템을 ext4로 포멧
mkfs -t ext4 /dev/sdb1
blkid -> 시스템이 인식하고 있는 장치의 고유 식별 변호 (시리얼번호)
리눅스는 모든 장치를 /(root) 밑에 붙여서(mount) 사용한다.
4. 마운트 대상 디렉터리 설정
mkdir -p /share/sdb1_mount
sdb1_mount 디렉터리에 touch test_file로 파일 하나를 만들어줌
5. mount 해준다.
mount -t ext4 /dev/sdb1 /share/sdb1_mount/
lost+found = 각 디스크(파티션)의 휴지통 --> 디스크의 root에 존재한다.
touch test_file 을 하나 더 만들었을 때 저장되는 위치는 ? sdb1
umount sdb1_mount/ 로 마운트 해제 시 보이는 test_file 의 위치는 sda이다.
sdb1 <- 파티셔닝을 다시 한 뒤 RAID 설정
fdisk /dev/sdb
p - 기본
d - 삭제
n - 새로운
p - 기본
t - 변환
w - 저장
마운트 상태에서 건들면 안됨!!
나머지 sdc, sdd, sde 도 RAID로 설정해줘야됨
fdisk /dev/sdb
p - n - p - t - fd - w
RAID를 사용할 때 가상 디스크 -> md : meta disk = 사용되기 전의 순수한 디스크 (파티셔닝만 한 순정 상태)
md를 관리하기 위한 유틸리티 = mdadm
목표 : sdb1과 sdc1을 묶어서(RAID 구성) 하나의 디스크(md0)를 생성
RAID 0 모드(스트라이핑 모드)로 동작시키자 -> 동작 레벨 : 0
mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb1 /dev/sdc1
포멧
mkfs -t ext4 /dev/md0
mount -t ext4 /dev/md0 /share/sdb1_mount/
mdstat -> /proc/mdstat
------- -> 프로세스 정보를 담고 있다.
cat /proc/mdstat
1block 당 size = 1024byte
실습 예제
sdd1 /sde1 -> raid 1 - 미러링을 구성하시오
mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdd1 /dev/sde1
mkfs -t ext4 /dev/md1
mount -t ext4 /dev/md1 /share/md1/
RAID 묶은거 삭제하는 법
mdadm --remove /dev/md1
mdadm --stop /dev/md1
md 생성 후 재부팅 시 남아있음
마운트가 풀리는 문제 발생
blkid 시 UUID 확인 가능
fstab에 등록해주면 부팅시 알아서 mount되게 설정
vim /etc/fstab
UUID=2ddcb03d-22cd-4d3a-bcad-12c1b5950897 /share/md1 ext4 defaults 0 0
실습 예제 2
sdb1 , sdc1 = raid0 / sdd1, sde1 = raid0 / 0+1을 만들어라!
mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb1 /dev/sdc1
mkfs -t ext4 /dev/md0
mdadm --create /dev/md1 --level=0 --raid-devices=2 /dev/sdd1 /dev/sde1
mkfs -t ext4 /dev/md1
mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/md0 /dev/md1
mkfs -t ext4 /dev/md2
mount -t ext4 /dev/md2 /share/md2/
lsblk로 정상적으로 mount 된 것 확인
blkid 로 UUID 확인 후 vim /etc/fstab 에서 설정값 변환
init 6로 재부팅 후 df 하면 정상적으로 붙은걸 확인
raid 0 + 1 을 사용 시 속도향상과 복사본 생성이라는 두 가지 목적을 동시에 구현할 수 있다.
raid 1 + 0 은 raid 0의 속도적인 장점을 살리고, raid 1로 안전성을 보강한다.
실습 예제 3
RAID 5 -> 표준형 / RAID 컨트롤러 기본 적용
3대 이상의 하드디스크가 필요하다.
mdadm --create /dev/md5 --level=5 --raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
---------- -c -------- -l 5 ------------------- -n 4
mkfs -t ext4 /dev/md5
mount -t ext4 /dev/md5 /share/md5/
mdadm 오류 발생 1 : stop으로 삭제는 진행했으나, 삭제되지 않았다고 나올 때
해결법 : mdadm --zero-superblock /dev/sdb1으로 삭제. 나머지 sdc sdd sde도 삭제해준다.
mdadm --detail --scan 으로 살아있는지 확인
mkfs 오류 발생 2 : 설정 시 will not make a filesystem here 이라는 오류가 발생했는데, umount 후 mdadm --stop로 삭제했으나 md2만 살아나는 현상이 발견됨.
다시 mdadm --stop /dev/md2 로 삭제해주고 mkfs 시 정상적으로 포멧 됨
이후 mount 해주니 오류가 해결되었다.
하드웨어 기반의 RAID 구성 = Provisioning이라고 부른다.
hpe 서버에서는 SSA
'서버' 카테고리의 다른 글
IDS - Snort (0) | 2023.07.12 |
---|---|
DISKQUOTA (0) | 2023.06.22 |
SAMBA(smb) (0) | 2023.06.20 |
CMS (0) | 2023.06.07 |
PHP 설치 (0) | 2023.05.30 |