Easy ways

[Ubuntu18.04] RAID 1구축하기 본문

프로그램 개발/서버

[Ubuntu18.04] RAID 1구축하기

softColors 2020. 11. 11. 11:28
반응형

갑자기 하드 디스크 2개가 주어지며 파일 서버를 구축해야 할 일이 생겨서

이런 저련 자료 모으던 와중 Raid의 개념에 대해 알게 되었습니다

다양한 방향에서 사용할 수 있을 것 같아 글을 남깁니다.

미래의 제가 모두 까먹을 경우를 대비해 상세하게 풀어볼 예정입니다.

RAID 란??


RAID는 HDD 와 같은 저장 장치를 보다 효율적/안정적으로 사용하기 위한 기술입니다.

 

가령 RAID 0는 여러 개의 하드 디스크를 하나의 하드 디스크처럼 동작하도록 만듭니다.

이렇게 되면 데이터를 읽고 쓸 때에 분산적으로 일을 처리할 수 있게 되므로 속도가 상당히 향상됩니다.

 

RAID 1은 2개의 디스크에 동일한 내용을 복제하는 것으로 갑자기 발생한 재앙에 대응할 수 있게 합니다.

이외에도 여러가지 RAID가 존재하지만 주로 사용하는 것은 RAID 0, 1, 5, 6, 10 정도라고 합니다

RAID에 관련하여 자세한 설명은 이곳에 알기 쉽게 설명해 두었습니다.

 

저는 RAID 1을 구축 예시를 보여드릴 것입니다.

구축 방식은 대부분 비슷하니 다른 RAID를 구성하시더라고 참조로 보시면 좋을 것 같습니다.

 

제 서버의 환경은 아래와 같습니다.

 

OS : Ubuntu 18.04

HDD : 4TB WD RED HDD 2개

Mainboard : GIGABYTE GA-PA65-UD3-B3

 

RAID를 구성하는 방법은 두 가지가 있습니다.

 

1. 하드웨어 구성

2. 소프트웨어 구성법

 

아주 심플하죠. 하드웨어 구축 방법부터 살펴보겠습니다.

 

1. 하드웨어 구축 방법


일반적인 PC라고 가정했을 때 메인보드에서 Raid를 지원하는 경우가 있습니다.

 

현재 본인의 메인보드 모델을 구글에 쳐서 유저 매뉴얼을 뒤져봅니다.

판매처에서 확인하는 것도 방법이지만 웬만하면 자세하게 정보가 있는 매뉴얼을 추천드립니다.

 

유저 매뉴얼에서 RAID를 검색하면 아래와 같이 어떤 RAID 레벨을 지원하는지 명시되어 있습니다.

 

현재 사용중인 메인보드 회사인 GIGABYTE 에서 지원하는 유저 매뉴얼

제가 가지고 있는 메인보드에선 RAID 0과 RAID 1을 지원한다고 합니다. 

 

여기서 확인할 것이 하나 더 남았습니다.

자신의 하드디스크 Controller 가 어떤 운영 체제를 지원하는지를 파악해야 합니다.

지금 위 사진에 나와있는 하드디스크 Controller는 "Marverll 88SE9172" 입니다.

 

컨트롤러 아름을 가지고 검색을 통해 RAID를 지원하는 OS를 검색합니다.

보통 [ 모델명 Raid Driver]라고 검색하면 금방 뜹니다.

 

현재 사용중인 메인보드 하드디스크 Controller 의 RAID Driver

 

찾아본 결과 제 메인보드에서는 우분투를 지원하지 않네요..

이런 경우 들인 노력에 슬퍼하지 마시고 바로 소프트웨어 구축 방법으로 넘어갑시다!

 

만약 하드디스크 컨트롤러가 운용하는 OS를 지원한다면 하드웨어적으로 RAID를 구성하실 수 있습니다.

 

하드웨어 RAID 작업은 BIOS Setting에서 진행하셔야 합니다.

(네 컴퓨터 실행하자마자 키를 연타해서 들어가야 하는 이상한 화면입니다.)

 

RAID를 구성하기 위한 BIOS Setting 법은 메인보드 사마다 각기 다릅니다.

아까 찾으신 메인보드 유저 매뉴얼을 보시면 RAID 구성법이 명시되어 있습니다.

해당 방법을 따라서 진행하시면 됩니다.

 

혹여 매뉴얼 보기 익숙지 않으시거나 영어가 어려우신 분들께는(매뉴얼은 보통 영어가 대다수 이니까요)

유튜브를 추천드립니다. 아주 친절하게 설명해주시는 영상들이 많더군요!

[ 메인보드 회사 이름 RAID 구축 방법]이라고 검색하시면 손쉽게 자료를 얻으실 수 있습니다.

 

 

2. 소프트웨어 구축 방법


소프트웨어적으로 우분투에 RAID를 구성하는 법을 알아보겠습니다.

 

다시 말씀드리자면 제 환경은

OS는 별도의 HDD에 Ubuntu 18.04가 설치된 상황이고(좀 낭비죠ㅎㅎ 다른 용도도 있어서 그렇습니다)

RAID용 4TB의 HDD 2개를 추가로 컴퓨터에 연결한 상태입니다.

 

RAID 1의 경우 용량이 정확하게 같은 하드디스크 혹은 파티션을 사용해야 합니다.

데이터를 완전히 복제하는 것이기 때문에 용량이 다르게 되면 용량이 적은 디스크에 맞춰 남은 공간이 버려지게 됩니다.

 

일단 다음 명령어를 사용해 연결할 하드디스크를 확인해줍니다

 

$sudo fdisk -l

 

$sudo fdisk -l 결과 화면

 

제가 연결한 하드 디스크가 각각 /dev/sdb/dev/sdc에 있는 것을 볼 수 있습니다.

디스크 경로는 본인 환경에 따라서 바뀔 수 있습니다. 셋팅을 위해 본인의 디스크 경로를 잘 외워 두셔야 합니다.

 

이제 아래 명령어에 따라 파티션을 생성해줍니다.

 

$ sudo fisk /dev/sdb

 

그리고 아래의 명령어 순서대로 타이핑해주시면 됩니다.


g: gpt 설정 [2TB 넘는 하드를 사용하는 경우]

n: new partition 생성

p: primart type

[enter]: 파티션 번호

[enter] : 파티션 시작 위치

[enter] : 파티션 종료 위치, 만약 파티션 크기를 따로 지정하고 싶으시다면 여기서 설정하시면 됩니다.

t : 파티션 타입 설정

29 : LINUX RAID [만약 다른 설정이 뜬다면 다시 't'를 누른 후 'l'을 눌러 LINUX RAID를 찾아 설정해 줍니다]

p : 파티션 확인, 이 부분에서 파티션이 원하는 크기로 원하는 이름으로 생성됐는지 확인합니다.

w : 저장 및 종료

 

fdisk 명령어 예시 (그림에서 파티션 타입 설정부분이 빠져있으니 유의해 주세요)


 

raid로 묶을 디스크 모두 위 작업을 수행해줍니다.

 

제 경우에는 fdisk /dev/sdb 와 fdisk /dev/sdc를 진행했습니다.

그리고 다시 아래 커맨드를 통해 디스크 상태를 확인하면

 

$ sudo fdisk -l

파티션 등록된 화면 입니다(노란색 )

 

이런 식으로 /dev/sdb1과 /dev/sdc1이 생성된 것을 확인 가능합니다.

 

 

이제 준비가 끝났으니 진짜 Raid를 시작해보겠습니다.

일단 raid 하기에 앞서 다음 커맨드를 통해 mdadm을 설치해주시기 바랍니다.

$ sudo apt-get update 
# sudo apt-get install mdadm

 

이제 두 디스크를 하나로 레이드 1로 묶어 줍니다

만약 riad 0을 진행 중이시라면 "/dev/md0 --level=0 --raid-device = 2 /dev/sdb1 /dev/sdc1"으로 변경해주시면 됩니다.

mdadm --create {장치명} --level={레이드 번호} --raid-device={구성할 파티션 개수} {구성 파티션 리스트} 
// for raid 1 Example 
// mdadm --create /dev/md1 --level=1 --raid-device=2 /dev/sdb1 /dev/sdc1

 

RAID 장치명 -- level --raid-device (minimum)
RAID 0 /dev/md0 0 2
RAID 1 /dev/md1 1 2
RAID 5 /dev/md5 5 3
RAID 6 /dev/md6 6 4
RAID 10 /dev/md10 10 4

[장치명은 명확하게 하기 위한 예시입니다! 다른 장치명으로 하셔도 문제없습니다.]

 

 

다음 명령을 통해 RAID가 적용됐는지 확인할 수 있습니다.

$ cat /proc/mdstat

위와 같이 출력되신다면 성공입니다!

 

이제 마지막으로 마운트 하는 일만 남았습니다!

 

레이드 된 디스크를 포맷해 줍니다.

$ mkfs.ext4 /dev/md1

 

그리고 하드디스크가 연결될 폴더를 만들고 마운트 해줍니다.

# mkdir [하드디스크 마운트 폴더 경로] 
// Example "# mkdir /home/share_dir" 

# mount /dev/md1 [하드디스크 마운트 폴더 경로] 
// Example "# mount /dev/md1 /home/share_dir"

 

이제 설정된 RAID와 마운트가 시스템 부팅할 때마다 할 수 있도록 설정해줍니다.

$ sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf 

$ sudo update-initramfs -u 

$ echo '/dev/md1 [하드디스크 마운트 폴더 경로] ext4 defaults 0 0' | sudo tee \-a /etc/fstab
// Example "$ echo '/dev/md1 /home/share_dir ext4 defaults 0 0' | sudo tee \-a /etc/fstab"

 

이제 컴퓨터를 시작할 때마다 마운트 폴더 경로로 RAID 된 디스크들이 연결됩니다.

 

 

2.1 소프트웨어 RAID 지우는 법

 

다음 명령을 통해 어떤 경로에 RAID 가 저장되어있는지 확인합니다.

#cat /proc/mdstat

// raid 마운트 해제 및 삭제
$ sudo umount /dev/md1 
$ sudo mdadm --stop /dev/md1
$ sudo mdadm --remove /dev/md1

// 사용한 파티션 수퍼 블록 제거
$ sudo mdadm --zero-superblock /dev/sdc1 
$ sudo mdadm --zero-superblock /dev/sdb1

 

또한 아래의 두 위치에 들어가 적혀있는 재실행 부분을 제거해야 합니다.

$ sudo nano /etc/fstab 
  // 아래와 같이 설정해놨던부분 주석처리(#) 혹은 제거 
   # dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0

$ sudo nano /etc/mdadm/mdadm.conf 

  // 아래와 같이 설정해놨던부분 주석처리 혹은 제거  
  # ARRAY /dev/md0 metadata=1.2 name=mdadmwrite:0 UUID=7261fb9c:976d0d97:30bc63ce:85e76e91 

$ sudo update\-initramfs \-u
  // 수정사항 업데이트

참조 :

https://support.us.ovhcloud.com/hc/en-us/articles/360006076940-How-to-Configure-Software-RAID-on-Ubuntu-18-04

https://www.digitalocean.com/community/tutorials/how-to-create-raid-arrays-with-mdadm-on-ubuntu-18-04

https://noanswercode.tistory.com/18

https://m.blog.naver.com/beabeak/221297932087

https://topis.me/109

https://www.tecmint.com/create-raid1-in-linux/

#우분투 #ubuntu #raid #raid1

반응형
Comments