이것이 리눅스다(19) - 하드디스크 관리(RAID 개념: Linear, RAID0, RAID1, RAID5, RAID, RAID10, 실습)

2 minute read

RAID 개념

RAID(Redundant Array of Inexpensive Disks)는 여러 개의 디스크를 하나의 디스크처럼 사용하는 것이다. 이렇게 하면 비용이 절감되고, 여러 개에 분산해서 저장하는 것으로 신뢰성 향상과 성능 향상의 효과를 낼 수 있다.

두 개의 종류가 있는데, 먼저 하드웨어 RAID는 여러 개의 하드디스크를 가지고 장비를 만드는 것이다. 이것은 안정적이지만 굉장히 비싸다. 이를 해결하기 위해 소프트웨어 RAID를 사용하는데, 이는 운영체제에서 지원하고 하드웨어 RAID보다 훨씬 더 저렴하게 이용 가능하다.

각 RAID 방식의 비교

각 RAID에 대해서 간단하게 살펴보자. Linear RAID는 한 개가 저장되면 뒤에가 채워진다. 한손으로 작업하기 때문에 느리다. RAID 0는 데이터가 여러 디스크에 동시에 저장되는 것으로 굉장히 빠르게 저장된다. RAID 1은 백업 개념이라고 생각하면 쉬운데, 동일한 것을 저장하기 때문에 결함을 허용한다. RAID 5도 백업 개념이다. 5와 6은 뒤에서 자세히 알아보자.

Linear RAID, RAID0

Linear RAID

최소 2개의 하드디스크가 필요하고 2개 이상의 하드디스크를 1개의 볼륨으로 사용한다. 앞 디스크부터 차례로 저장하기 때문에 100%의 공간효율성을 가진다. (= 비용 저렴)

Linear RAID은 만약 디스크 크기가 달라도 공간 효율이 훨씬 효율적이다. 하지만 디스크가 저렴해지고, 디스크 크기를 다르게 하는 경우는 없기 때문에 요새는 안쓴다.

RAID0

최소 2개의 하드디스크가 필요하고, 모든 디스크에 동시에 저장되어 100%의 공간효율성을 가진다. (= 비용 저렴) 하지만 신뢰성 낮기 때문에 ‘빠른 성능을 요구하되, 혹시 전부 잃어버려도 큰 문제가 되지 않는 자료’ 가 적당하다. 그리고 디스크의 크기가 각자 다르면 공간 효율성이 더 나빠진다.

RAID1

‘미러링(Mirroring)’ 이라 부르는데, 데이터 저장에 두 배의 용량이 필요하다. 하지만 그렇기 때문에 “결함 허용(Fault-tolerance)”을 제공하여 신뢰성 높다. 두 배의 저장 공간을 가지기 때문에 비용이 두 배이고 공간효율 나쁘다. 저장속도(성능)는 변함 없다. ‘중요한 데이터’ 저장하기에 적절한 방식이다.

※ RAID0 vs RAID1

RAID5

2,3,4는 이들의 장점을 5가 포함하고 있어서 굳이 알아보지 않아도 된다. RAID5는 패리티를 통해 데이터를 복구할 수 있다. 패리티는 디스크에 저장하는 공간을 하나 씩 비워놓는 것으로, 비워져 있는 공간은 총합이 짝수가 되도록 채워진다.

하지만 디스크 2개 고장나면 복구를 하지 못한다. 디스크 개수가 작을수록 디스크가 고장날 확률이 적어 안전하지만, 디스크 개수와 공간효율성은 서로 트레이드 오프 관계가 성립된다. 예를 들어 만약 디스크가 4개라면 75%, 10개라면 90%의 공간효율성이 발생하여 디스크 개수가 작을 수록 공간 효율은 낮아진다.

기타 RAID

RAID6

RAID6 방식은 RAID5 방식이 개선된 것으로 공간 효율은 RAID5보다 약간 떨어지지만, 2개의 디스크가 동시에 고장이 나도 데이터에는 이상이 없도록 하는 방식이다. RAID6의 경우에는 최소 4개의 디스크 필요하고 공간 효율은 RAID5보다 약간 떨어지는 반면에 데이터에 대한 신뢰도는 좀더 높아지는 효과가 있다. 성능(속도)은 RAID5에 비해 약간 떨어진다

RAID1+0

0과 1을 동시에 사용하는 방법으로 이 외에도 여러가지 혼합이 가능하다.

실습

파티셔닝

ls /dev/sd*로 확인해보면 하드디스크가 생성되어 있는 것을 볼 수 있다. 이제 이것들을 파티션 해주어야 한다. 파티셔닝은 앞서 배운 fdisk를 통해 진행하면 된다.

하지만 여기서 주의해야 할 점이 있는데 우리는 RAID 방식으로 진행하기 때문에 타입을 Linux에서 RAID로 바꾸어 줘야 한다. 이것은 타입의 t를 입력하고 fd를 입력하면 파티션 시스템이 바뀐다.

Linear RAID 구축

앞서 파티셔닝을 진행했다. 이제 분할한 디스크를 하나의 논리 볼륨으로 묶어야 한다. 여기서 필요한 명령어가 mdadm이다. 그리고 이 묶인 디스크를 mkfs.ext4로 포맷해서 파티션을 만들고 이를 마운트해서 사용하면 된다.

하나의 논리 볼륨으로 묶는 명령어는 mdadm --create <새로 만들 폴더 이름> --level=<RAID 종류> --raid-device=<디스크 개수> <묶을 디스크...>이다. 이렇게 볼륨 그룹을 생성했다면 마지막으로 mkdir /raid<RAID 종류>로 마운트시킬 폴더를 만들어서 마운트해주면 된다.

마지막으로 컴퓨터가 부팅될 때 자동으로 마운트 시켜주기 위해 /etc/fstab에 등록시켜 주면 끝이다.

등록한 디스크를 자세히 보려면 mdadm --detail <논리 디스크 이름>을 입력하면 된다. ex. mdadm --detail /dev/md0

RAID0 구축

앞선 Linear와 똑같은 과정을 거친다. 옵션이나 디렉토리 이름만 변경해주면 되기 때문에 그대로 반복해주면 된다.

RAID1 구축

mdadm을 통해 구축을 진행하려 하면 처음에 부트 관련해서 질문을 한다. 이는 RAID1이 미러링 방식을 사용하기 때문에 띄워주는 일종의 경고창 같은 것이다. 생성을 계속 진행하려면 y를 입력하면 된다.

나머지는 앞선 과정과 동일하게 진행하면 된다.

RAID5 구축

이것 또한 다른 RAID와 동일하지만 이번에는 장치가 3개 이상이라는 점이 다르다. 디바이스 개수를 3개 이상으로 조정하고 디스크도 그에 맞는 개수로 입력해주면 된다.

Leave a comment