Post

이것이 리눅스다. - 6. 하드디스크 할당과 사용자별 공간할당(2)

한빛 미디어의 이것이 리눅스다. 책을 정리한 자료입니다.


6.2 여러 개의 하드디스크를 하나처럼 사용하기

  • 만약 본인이 3TB의 하드가 필요한데 누군가가 1TB + 2TB를 주면 이것을 어떻게 해결할 것인지 생각해야합니다.
    • 각 하드디스크의 용량을 넘지 않게 잘 분배해서 사용해야하나? 라는 문제를 해결하기 위해 RAID라는 기술이 나왔습니다.

6.2.1 RAID의 정의와 개념

  • Redundant Array of Inexpensive/Independent Disks의 약자인 RAID는 하드웨어방식 소프트웨어 방식으로 나뉩니다.
  • RAID는 여러 개의 하드디스크를 하나의 하드디스크처럼 사용할 수 있도록 도와줍니다.
  • 비용을 절감하면서도 더 신뢰성을 높이고 성능까지 향상시킬 수 있습니다.

하드웨어 RAID

  • 하드웨어 RAID는 하드웨어 제조업체에서 여러 개의 하드디스크를 연결한 장비를 만들어서 그 자체를 제공합니다.

소프트웨어 RAID

  • 소프트웨어 RAID는 고가의 하드웨어 RAID의 대안으로 신뢰성이나 속도 등이 떨어질 수 있지만 저렴한 비용으로 데이터를 안전하게 저장할 수 있는 방식입니다.

6.2.2 RAID 레벨

  • RAID는 Linear RAID, RAID0, RAID1, RAID2, RAID3, RAID4, RAID5 총 일곱 가지로 분류됩니다. 실무에서는 주로 Linear, RID0,1,5,6, 1+0의 혼합을 사용합니다.

Linear RAID, RAID0

두 방식 모두 최소 2개의 하드디스크가 필요합니다.

그림과 같이 저장됩니다.

  • Linear 방식은 앞 하드디스크에 데이터가 완전히 저장된 후 다음 하드디스크에 데이터를 저장합니다.
    • 즉 앞 하드디스크에 데이터가 완전히 저장되지 않는다면 다음 하드디스크는 사용되지 않습니다.
  • RAID0방식은 각각 하드디스크에 데이터를 고르게 저장합니다. 모든 작업은 동시에 진행되므로 Linear방식보다 빠릅니다.
    • RAID0의 방식의 문제점은 빠르지만 하드디스크 하나가 고장나면 데이터를 복구하기가 어렵다는 것입니다. 만약 하드디스크 1이 고장났으면 위의 그림에서 데이터는 ‘이x은txstx문구x니다.’ 처럼 예측하기 어려운 데이터가 되어버립니다.
    • 또하나의 단점은 만약 100TB 하드와 1TB하드가 장착되어 있을 경우 2TB만 사용할 수 있습니다. 동시에 작업하기에 1TB하드가 차버리면 더 이상 저장할 수 없기 때문입니다. 이것은 Linear RAID가 해결하므로 Linear의 장점이 될 수 있습니다.

RAID1

  • RAID1 방식은 RAID0에서 나타난 데이터 결함 문제를 해결하기 위해 다른 하나의 저장소에 똑같은 데이터를 저장합니다.
  • 데이터를 저장하는 것은 동시에 일어나므로 속도의 차이는 없지만 공간을 2배쓴다는 단점이 있습니다.

RAID5

만약 하디드스크 4개에 ‘000 111 010 011’라는 12비트 데이터를 저장한다고 가정해보면 RAID5에서는 다음과 같이 저장됩니다.


?에는 패리티 방식을 사용하는데 간단하게 짝수 패리티방식은 데이터들의 각행이 짝수가 되게 만드는 것입니다. 맨 위의 000 경우 ?에 1이 들어가면 짝수가 되지 않으므로 ?에는 0이 들어가게 됩니다. 이런 식으로

결과가 만들어지게 됩니다. 이러한 방식을 선택하는 이유는 데이터손실을 방지하기 위함입니다.
하드디스크 1개가 고장나도 패리티 결과값을 통해 값을 유추할 수 있습니다.

만약 하드디스크 2개가 고장나면 데이터를 복구할 수 없게됩니다. 이것을 해결하기 위해 RAID6방식이 나왔습니다.

RAID6

  • RAID5와 달리 패리티를 2개 사용합니다. 공간효율은 더 낮아지지만 안정적입니다.
  • RAID5는 최소 3개의 하드디스크 RAID6는 최소 4개의 하드디스크로 구성해야합니다.

조합

  • RAID1+0 방식은 RAID1로 구성한 데이터를 다시 RAID0으로 구성하는 방법입니다.
  • 외에도 RAID1+6 등이 있습니다.

책에서 위의 RAID들을 구현, 오류 발생 대처법을 예제로 만들었는데, 블로그에 전부 담기에는 너무 내용이 커져서 저 혼자 실습하고 넘어갔습니다. 사용한 명령어들만 정리하겠습니다.

‘mdadm’ -> Centos에서 RAID 장치를 생성/관리하는 명령어

1
2
3
mdadm --create /dev/md9 --level==linear --raid-devices=2 /dev/sdb1 dev/sdc1
mdadm --detail --scan
mdadm /dev/md1 --add /dev/sdg1
  • –create /dev/md9 -> md9장치에 RAID를 생성
  • –level=linear -> Linear RAID를 지정 0은 RAID 0 …
  • –raid-devices=2 ~ -> 2개 하드디스크 사용 뒤에는 어떤 장치를 쓸 지 정의
  • mdadm –stop /dev/md9 -> RAID 장치인 /dev/md9를 중지
  • mdadm –run /dev/md9 -> 중지된 RAID 장치 가동
  • mdadm –detail /dev/md9 -> 장치 상세내용 출력
  • mdadm –add -> add 앞의 RAID장치에 add뒤의 파티션을 추가하라는 명령어

복구과정은 다음과 같습니다. 새로운 장치를 끼워줌 -> 위에서 했던 fdisk로 초기화 작업을 해주고 mdadm –create명령어를 통해 덮어씌웁니다.

This post is licensed under CC BY 4.0 by the author.