Indescribable Place

FreeBSD에서 gmirror를 사용해서 RAID1 구성하는 법 본문

WORK/FreeBSD

FreeBSD에서 gmirror를 사용해서 RAID1 구성하는 법

거울노을 2009. 9. 18. 19:52
 아 웬만하면 이런 류의 글은 적지 않으려고 했는데, 한글로 된 자료를 검색하다 포기하고나서 보니 FreeBSD 핸드북의 영문판에 방법이 적혀 있었다. 한국 FreeBSD에서 제공하는 핸드북은 5.x 버전이고, gmirror가 등장한게 6.x 버전이라서 한글 핸드북에는 vinum에 대한 설명만 있던것. 근데 아무래도 vinum은 좀 어려워서... gmirror를 이용하여 설정 완료. 그래서 간단히 여기에 적어보려고 한다. 원문은 http://www.freebsd.org/doc/en/books/handbook/geom-mirror.html


1. 시작

# gmirror label -vb round-robin gm0 /dev/da0

/dev/da0은 미러링할 하드. atacontrol list 따위의 명령으로 확인할 수 있다.
미러링 방식은 round-robin 방식이라는 얘기고,
가상으로 만들어질 드라이브의 이름은 gm0이 된다.


2. 위의 명령을 했을때 무슨 권한이 어쩌구 하면서 안될때가 있다

# sysctl kern.geom.debugflags=17

그럴땐 sysctl 명령을 사용해서 저렇게 값을 바꿔준다.

1번의 명령이 성공했다면

Metadata value stored on /dev/da0.
Done.

요따위 메시지가 나온다.


3. 모듈 로딩

# gmirror load

를 사용해서 gmirror 모듈을 로딩한다. 성공하면 /dev/mirror 아래에 위에서 정의했던 gm0이 생긴다고 한다. 이 모듈이 부팅시에 로딩 되도록 하기 위해서는 /boot/loader.conf 파일에

geom_mirror_load="YES"

이 문장을 추가해두면 된다.


4. fstab 변경

자 이제 조심스럽게 /etc/fstab을 변경하자. 일단 기존의 fstab은 fstab.bak 정도로 백업해두고, /etc/fstab의 내용을 열어서 아래와 같이 da0 라고 되어 있는 부분을 gm0로 변경하자.

/dev/da0s1b
/dev/da0s1a
/dev/da0s1d
/dev/da0s1f

처럼 되어 있는 부분을

/dev/mirror/gm0s1b
/dev/mirror/gm0s1a
/dev/mirror/gm0s1d
/dev/mirror/gm0s1f

이런 식으로 변경한다. 원문에 보면 친절하게 vi에서 :%s/da/mirror\/gm/g 이렇게 replace 명령을 사용하라고 알려준다.


5. 리부팅

# shutdown -r now


6. 일단 상태 확인

# df -k 등의 명령을 이용해서 확인하자.

Filesystem         1K-blocks    Used    Avail Capacity  Mounted on
/dev/mirror/gm0s1a   1012974  224604   707334    24%    /
devfs                      1       1        0   100%    /dev
/dev/mirror/gm0s1f  45970182   28596 42263972     0%    /home
/dev/mirror/gm0s1d   6090094 1348356  4254532    24%    /usr
/dev/mirror/gm0s1e   3045006 2241420   559986    80%    /var
devfs                      1       1        0   100%    /var/named/dev

보통 이런 정도로 확인이 가능하다.


7. 미러링 하드 추가

# gmirror insert gm0 /dev/da1

gm0에 da1 디스크를 추가한다. da2 등을 계속 추가하면 3개 미러링이 된다.


8. 확인

# gmirror status

바로 이런 명령으로 상태를 확인 할 수 있는데,

      Name    Status          Components
mirror/gm0  COMPLETE  da0
                                     da1

이렇게 나오면 제대로 동작하는 거지만 보통은

      Name    Status         Components
mirror/gm0  DEGRADED  da0
                                    da1(1%)

이런 식으로 나온다. 두 하드를 동기화 하고 있다는 뜻이고, 200기가 정도일때 1시간 이내에 동기화가 완료되고 COMPLETE 상태가 되었던것 같다. 이러면 끝. 상세한 건 처음의 링크를 참조.