06. 디스크 관리와 RAID - 이론

prana·2023년 3월 7일
0

Linux

목록 보기
20/28

목차

  1. RAID란?
  • RAID의 종류
  1. 따라학IT
  • RAID 설정해보기

RAID란?

  • Redundant Array of Independent(inexpensive로도) Disks : RAID

  • 독립된 디스크의 복수 배열?? 비싸지 않은 디스크의 복수 배열

  • 디스크 용량 커질수록 가격 비싸지는데,

  • ex) 100TB 하드디스크 하나, (10TB 열개 사는게 쌀까?) -> 만들기 어려운 기술을 이룩하기 위해 싼 걸 여러개로 합치는 기술.

  • 옛날에는 하드디스크도 작았고 용량이 큰 무언가를 만드는 게 힘들었음.

  • 그래서, 용량이 작은 값이 싼 디스크를 여러개를 모아서 용량이 큰 하나의 논리적인 디스크를 만듦

  • 하나로 구성

  • 사진) - USB 3.0이 2.0보다 빠를 것. 64GB, 32GB 다 하나씩 연결. 전부다 하나로 묶어버리는 장점은?
    : RAID 방식이 여러 개가 있는데, 속도가 엄청 빨라짐. (사진 속이라면, 8배는 빨라진다는)

  • 위험도도 8배. 하나가 날라가면 다 고장남.

  • 나눠서 쓰면, 쓰기 속도 2배

RAID 0

  • Redundant Array of Independent Disks : RAID

  • 하나의 데이터를 양쪽의 디스크 두 군데에 나눠서. 쓰기속도 2배, 읽기 속도 2배.

  • 하나의 디스크가 날라가면, 원본 데이터를 찾을 수 없음. 반쪽짜리 데이터밖에 남지 않음.

  • 텍스트 파일이야 읽을 순 있겠지만, 이상한 숫자값이라던가 실행파일은 원래 무슨 파일이었는지 알아내기 힘들다.

  • 속도는 빠르지만 안정성은 오히려 좋지 않음.

  • RAID 0(레벨) : 두 개의 데이터를 동시에 쓰기/읽기.


RAID 1

  • 디스크 2개가 있다고 가정. 데이터를 양쪽에 똑같이 저장. 어떤 속도의 이점도 없다.

  • a1, a2, a3, a4 반대쪽 디스크에도 동시에 씀.

  • 둘중 하나의 디스크가 고장나더라도 복구가 가능하다.

  • 새로운 디스크 추가하고, 데이터를 복사하면 그대로 사용 가능하다.

  • 안정성이 두 배가 된다. 디스크의 수만큼 늘어난다.


RAID 5

  • RAID 0과 RAID 1을 섞어놓은 것. 둘 사이의 절충안.
  • 여러 개의 디스크 중에서, (RAID 2, 3, 4는 최소 디스크 3개)
  • 이 중의 하나의 디스크를 p라고 되어있는 페리티 비트를 저장하는 용도로 사용한다.
  • 데이터를 나눠서 저장하는데, 누군가가 고장났을 떄때 얘를 복구시킬 수 있음.
  • disk1 disk2 disk3(패리티 비트 저장용도)
    0 XOR연산 1
    0 1
    1 0
    1 0
    0 1
    1 0

ex) 01110 10110 데이터를 저장한다고 가정

disk1disk2disk3
011
101
110
110
000
  • disk3 : 둘에 대한 패리티비트를 구함. 정확히 xor로 연산한다는 것은 아님.

  • 문제는 raid 2, 3, 4를 한 군데에 몰아둔다.

  • raid 5는 여러 디스크에 각각 분산시켜둔다.

-> 만약 disk1이 고장이 났다고 가정


XOR 연산은?


-> 서로 같으면 0 다르면 1. 가운데열을 가리고 연산해봐도 같음. 복구가 된다는 말임.


RAID 10

  • 디스크는 4개지만, 속도는 2배 빨라짐. 두 군데 동시에 쓰는 것처럼 쓰여짐
  • 한쪽 고장이 나도 복구 가능.

RAID 1 + 0

  • 좀 더 좋음!✅
  • 하나 고장나도 복구를 하나만 해도 됨.

RAID 0 + 1

  • RAID 0은 먼저 묶으면 하나 고장나면 통째로 못씀.

  • 디스크 두 개만큼 복구를 시켜야 제대로 복구가 되는 것임.

😂 RAID 0 / RAID 10 / RAID 5 / 돈 없으면 안쓰거나

  • 디스크에 따라 복구/ 버틸 수 있는 지 수치가 있다. -> fault tolerance 라고 함. (장애 허용 시스템)
  • 나중에는 서버 자체를 이중화 시킬 수 있어야 한다.

실습

  1. 디스크 추가해보기
    • 가상머신에 새로운 디스크 추가해보기
  2. 파티션 설정해보기
    • 새로 추가한 디스크에 파티션 설정해보기
  3. RAID 설정해보기
    • 여러 디스크를 하나의 논리 디스크로 만드는 RAID 설정해보기

1GB짜리 디스크 9개 추가한다.

RAID 구성해보기

mdadm [옵션]

🌟[옵션]
--create 생성할 RAID 장치의 이름
--level RAID 레벨을 지정
--raid-devices RAID에 추가될 실제 장치의 파티션 지정
--detail : 특정 장치의 상세 내역을 출력

RAID 0 구성

  • RAID 0 2개 추가 -> 2개씩 방식별로 해보려고.

Linear 방식으로 RAID 구성

Linear : 디스크를 배열 형태로 단순하게 연결시킨 구조
mdadm --create /dev/md/linear --level linear --raid-devices=2 /dev/sdb1 /dev/sdc1

  • /dev/md/linear(이름 자유, 새로운 RAID 장치 생성)

  • RAID를 구성하면, 하나의 논리적인 볼륨(파티션은 쪼개진것, 볼륨은 합쳐진 것)이 완성.
  • 정보를 보려면 --detail
    -mdadm --detail /dev/md/linear
  • 사용하려면 파일 시스템을 만들고, 마운트를 해야 사용이 가능하다.
  • raid 장치 써주고. mkfs -t ext4 /dev/md/linear
  • mkdir /raid0-l
  • mount /dev/md/linear /raid0-l
  • df -h
  • 2GB짜리 파일시스템이 하나 생성된 것을 확인(1GB 하드디스크 2개로 만든)
  • 리니어 타입의 RAID 0 생성
  • Raid 0 (Stripe)

Stripe 방식의 RAID 구성

Stripe : 데이터의 내용을 분산 저장하여 속도가 빠르다. but 안전성 down
-mdadm --create /dev/md/stripe(이름자유) --level stripe --raid-devices=2 /dev/sdd1 /dev/sde1

  • 속도도 2배, 위험도도 2배
  • mdadm --detail /dev/md/stripe

  • detail에서 level도 확인할 수 있다.

  • 파일시스템 생성, 마운트 하기

  • mkdir /raid0-s

  • mkfs -t ext4 /dev/md/stripe

  • mount /dev/md/stripe /raid0-s/

  • df -h


RAID 1 구성 (양쪽이 똑같음)

  • mdadm --create /dev/md/mirror(이름자유) --level mirror --raid-devices=2 /dev/sdf1 /dev/sdg1

    • 미러, 미러링

RAID 5

  • mdadm --create /dev/md/raid5 --level=5 --raid-devices=3 /dev/sdh1 /dev/sdi1 /dev/sdj1
  • mkfs -t ext4 /dev/md/raid5
  • mkdir /raid1
  • mkdir /raid5
  • mount /dev/md/mirror /raid1
  • mount /dev/md/raid5 /raid5

  • raid1은 디스크 2개 써도 1GB
  • raid5 디스크 3개 썼는데 2GB (패리티 비트가 군데군데 1GB를 사용.)

  • 🤔 RAID 1 -> 디스크 하나 제거해도 데이터가 남아 있는가?

  • 새로운 디스크 추가했을 때, 복구가 되는지도 확인

  • 아까 마운트 시킨 곳에 파일들을 생성. 디스크가 고장이 나도, 파일들에 접근이 가능한가? 를 알아보기 위하여.
  • mkdir /raid0-l(linear뜻함)
  • mkdir /raid0-s
  • cd /raid0-l
  • touch file
  • cd ../raid0-s
  • touch file
  • cd ../raid5
  • touch file
  • lost+found : 저널링 기능해서 복구한 파일들이 저기에 자동으로 저장됨.
  • 백업 및 복구할 때 해볼 것.

  • 파일들을 각각 만들고, 디스크가 이렇게 순서대로 있을 때,
    둘 중 디스크 하나만 3번을 지운다고(물리적으로 제거)

  • stripe 것도 하나 제거


  • mdadm --deatil /dev/md/linear로 확인했을 때, 없어졌다.

  • mirror는 하나는 removed로 제거

  • raid5도 가보면, 2개 살아있고, 하나 없어짐

  • stripe, linear 사라져서 마운트를 할 수 없으니까
    남아있는것부터 해보면..

  • mount /dev/md/mirror /raid1

  • mount /dev/md/raid5 /raid5

  • 마운트 잘 됨

  • 사용하는데 문제 없음.

  • RAID 0으로 구성한 애들은 디스크 하나가 없어지니까 날라가버림.


removed 된 곳에 새로운 디스크를 추가해보기

  • raid1, raid5는 하나씩 장치가 없어졌는데, 둘 중 하나가 또 고장날 수 있으니까.
    그 전에 removed 에 디스크를 하나 추가해서 교체시켜주려고 한다.

  • 새로 추가해주고, 파티션까지 만들기
  • fdisk -l 파티션 작업

  • 새로운 하드디스크를 추가
  • 나머지 하나도 고장나면 복구를 할 수가 없다.

  • mdadm --manage /dev/md/mirror --add /dev/sdg1
  • mdadm --detail /dev/md/mirror
  • rebuilding : /dev/sdg1 -> 얘한테 데이터를 지금 똑같이 복사하고 있는 것임.

  • 시간이 좀 지나면 active, 동기화가 완료된 상태로 된다.

  • mirror 형태도 이렇게 하면 된다. 디스크 추가 시

  • mdadm --manage /dev/md/mirror --add /dev/sdg1

  • 디스크를 논리적으로 mirror 장치를 빼고 싶으면

  • mdadm --manage /dev/md/mirror --remove /dev/sdg1

0개의 댓글