출처 : https://www.youtube.com/watch?v=uTdCT1toGzY&list=PLVsNizTWUw7FqN2gq79Cb3R6qkS7mqOJk&index=37
RAID 0 구축
RAID 0는 Linear RAID 와 비슷하게 2개 이상의 디스크를 1개의 볼륨으로 사용한다는 공통점이 있지만, 모든 디스크를 동시에 사용하는 스트라이핑 방식으로 동작한다는 차이점이 있다.
구현 방법은 Linear RAID와 비슷하다. 차이점은 RAID 장치를 /dev/mod0로 사용하는 것과 mdadm 명령을 실행할 때 --level=0로 설정하며, 마운트할 디렉토리는 /raid0라는 것 정도다.
파티셔닝 등의 선처리 작업은 이전에 진행했으므로 mdadm 명령을 사용해 RAID를 만들어서 하나의 볼륨을 만든다. 논리 볼륨의 이름은 /dev/md0 라고 이름짓자.
다음 명령을 입력해 /dev/sdd1과 /dev/sde1을 RAID 0 장치인 /dev/md0로 생성하고 잘 생성되었는지 확인한다.
mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdd1 /dev/sde1
-> RAID를 만들어라 /dev/md0라는 장치로 RAID 0로 장치는 2개를 쓰는데 /dev/sdd1과 /dev/sde1이다.
mdadm --detail --scan -> RAID 확인
논리 볼륨을 생성한 다음 mkfs.ext /dev/md0 명령을 입력해 /dev/md0 파티션 장치의 파일시스템을 생성한다. 즉, /dev/md0를 포맷한다.
그리고 /raid0 디렉토리를 생성한 다음, mount /dev/md0 /raid0 명령을 입력해 /dev/md0를 /raid0 디렉토리에 마운트한다.
gedit /etc/fstab 명령을 입력해 /etc/fstab을 gedit 에디터로 실행한다. 그 다음 맨 아래줄에 다음 명령을 입력한다. (블로그 주인장은 가상 머신을 껐다가 켰더니 에러가 나서 스냅샷을 통해 디스크 9개 파티셔닝했을 때로 초기화했다. 원래대로라면 이전에 했던 /dev/md9 또한 존재하는 것이 맞다.)
/dev/md0 /raid0 ext4 defaults 0 0
저장하고 에디터를 닫는다.
RAID 1 구축
RAID 1의 핵심은 미러링(Mirroring)이다. 즉, 동일한 데이터를 각 디스크에 모두 저장하는 방식이다.
RAID 1은 데이터를 저장하는데 2배의 용량을 사용해 결론적으로 총 디스크 용량의 절반밖에 사용하지 못한다는 단점이 있지만, 2개의 디스크 중 하나가 고장 나더라도 데이터가 손실되지 않는다는 장점이 있다. 즉, 디스크가 고장나도 없어져서는 안 될 중요한 데이터를 저장할 때 유용하다.
운영체제 항목에 저장한 내용을 참고하면 좋다.
구축하는 방법은 RAID 0과 거의 같다.
다음 명령어를 입력한다.
mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdf1 /dev/sdg1
-> 'Continue creating array?' 메시지가 나오면 y를 입력해서 계속 진행한다.
RAID 1은 부팅디스크로 사용 못한다는 내용이다.
mdadm --detail --scan -> RAID 확인
mkfs.ext4 /dev/md1 으로 포맷팅을 해준다.
/raid1 디렉토리를 생성한 다음 해당 디렉토리로 /dev/md1을 마운팅 해준다. RAID 1은 공간 활용률이 50% 밖에 안되기 때문에 1GB 밖에 사용하지 못한다.
gedit /etc/fstab 명령을 입력해 /etc/fstab을 gedit 에디터로 실행한다. 그 다음 맨 아래줄에 다음 명령을 입력한다.
/dev/md1 /raid1 ext4 defaults 0 0
저장하고 에디터를 닫는다.
mdadm --detail /dev/md1 명령을 입력하면 /dev/md1의 상세 정보를 확인할 수 있다.
2개의 장치가 작동하고 있고, 그 2개의 장치는 /dev/sdf1과 /dev/sdg1 이다.
RAID 5 구축
RAID 0는 속도와 공간 효율성은 뛰어나지만 Reliability를 보장하지 못하고, RAID 1는 Reliability는 보장하지만 속도의 향상이 없고 공간 효율성이 절반으로 떨어진다는 단점이 있다.
이 장점들을 어느 정도 포용하는 방식이 RAID 5다. RAID 5는 최소한 3개 이상의 디스크가 있어야만 구성이 가능하다. 디스크에 오류가 발생하면 Parity를 이용해 데이터를 복구하는 방식이다.
한 개의 디스크를 Parity로 사용하기 때문에 공간 효율성은 약간 떨어지지만, 많은 디스크를 사용할수록 공간 효율성은 증가한다. 4개의 디스크를 RAID 5로 구축하면 75%(3/4), 10개의 디스크를 RAID 5로 구축하면 90%(9/10) 이 된다.
Parity bit는 네트워크, 운영체제 심지어 디지털 논리회로에서도 사용된다. 자세한 내용은 네트워크 항목 참고.
다음 명령어를 입력한다. 주의해야 할 점은 RAID 5는 최소한 3개의 디스크를 사용해야한다는 점이다. 우리는 /dev/sdh1, /dev/sdi1, /dev/sdj1 을 사용한다.
mdadm --create /dev/md5 --level=5 --raid-devices=3 /dev/sdh1 /dev/sdi1 /dev/sdj1
mdadm --detail --scan
mkfs.ext4 /dev/md5 명령을 입력해 /dev/md5 를 포맷한다.
그 다음 /raid5 디렉토리를 생성한 다음, /dev/md5를 /raid5 디렉토리에 마운트한다.
df 명령을 통해 살펴보면 /dev/md5 는 2GB를 사용하는 것을 확인할 수 있다. 왜냐하면 1GB 용량의 3개의 디스크 중 1개의 디스크는 Parity로 사용하기 때문이다. 만약 10개의 디스크를 사용했다면 9GB를 사용할 수 있다.
gedit /etc/fstab 명령을 입력해 /etc/fstab을 gedit 에디터로 실행한다.
제일 마지막 줄에 다음 명령을 입력한다.
/dev/md5 /raid5 ext4 defaults 0 0
저장하고 에디터를 닫는다.
mdadm --detal /dev/md5 명령을 입력해서 살펴보면 /dev/sdh1, /dev/sdi1, /dev/sdj1 총 3개의 장치를 사용하고, 가용 용량은 2GB 인 것을 확인할 수 있다.
현재 상황에서 재부팅을 하면 안된다. mdadm --detail --scan 명령을 입력한 다음 출력되는 결과들을 복사해둔다.
(아마 이 글을 보고 실습하는 분들께서는 총 4줄이 나올것이다. 블로그 주인장도 추후 다시 실습해놓겠다.)
그 다음 gedit /etc/mdadm.conf 를 입력해 새로운 파일을 연다. 그 다음 ctrl + v를 눌러 복사한 내용을 붙여넣는다. 그리고 각 행의 name 부터 localdomain=숫자 까지 지운다. 이 과정을 진행하지 않으면 부팅할 때 문제가 생긴다. (블로그 주인장은 그래서 스냅샷으로 복구했다....)
저장하고 에디터를 닫은 다음 재부팅을 한다.
재부팅을 해서 root로 로그인 한 다음 터미널을 열고 df 명령을 입력하면 md0~md9까지 잘 작동하고 있는 것을 확인할 수 있다.(아주 빠르게 LinearRAID를 다시 구축했다)
이렇게 총 4개의 RAID를 구축했다.
이 상태를 snapshot으로 저장을 하자. 혹시 snapshot 사용 방법이 기억나지 않는다면 밑의 글을 참고하자.
'Study > 이것이 리눅스다 with Rocky Linux 9' 카테고리의 다른 글
6장. 디스크 관리와 사용자별 공간 할당 (7) - RAID 0, RAID 1, RAID 5의 원상 복구 (0) | 2023.12.26 |
---|---|
6장. 디스크 관리와 사용자별 공간 할당 (6) - RAID 0, RAID 1, RAID 5 문제 발생 (0) | 2023.12.26 |
6장. 디스크 관리와 사용자별 공간 할당 (4) - Linear RAID 구현 (1) | 2023.12.25 |
6장. 디스크 관리와 사용자별 공간 할당 (3) - 가상 머신에 디스크 9개 장착하기 (0) | 2023.12.24 |
6장. 디스크 관리와 사용자별 공간 할당 (2) - RAID의 개념과 각 RAID의 방식 비교 (0) | 2023.12.24 |