MD Multipath 를 통한 이중화된 SAN Disk의 단일 경로 잡기

스크린샷 2013-01-14 오후 3.28.21.png 

다음과 같이 구성된 스토리간 구조에서 붙였다

* 일단 스토리지 쪽에서는 하나의 룬을 리눅스 서버쪽으로 주었다

* SAN 스위치에서는 모든 경로를 한 조인에 넣어 사용했다

1. 리눅스에서 초기 하드정보를 보자

# fdisk -l

“생략”

Disk /dev/sdc: 2199.0 GB, 2199023255552 bytes

255 heads, 63 sectors/track, 267349 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00000000

Disk /dev/sdc doesn’t contain a valid partition table

Disk /dev/sdd: 2199.0 GB, 2199023255552 bytes

255 heads, 63 sectors/track, 267349 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00000000

Disk /dev/sdd doesn’t contain a valid partition table

Disk /dev/sde: 2199.0 GB, 2199023255552 bytes

255 heads, 63 sectors/track, 267349 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00000000

Disk /dev/sde doesn’t contain a valid partition table

Disk /dev/sdf: 2199.0 GB, 2199023255552 bytes

255 heads, 63 sectors/track, 267349 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00000000

이렇게 sdc ~ sde까지 네개의 패스가 보인다.

스토리지와 스위치간 2중화 스위치와 서버가 2중화로 걸었기 때문일것이다.


2. 멀티 패스 데몬을 설치하자

– yum 또는 rpm을 통해 설치하자 설치되어 있다면 건너뛰면 된다 

# yum install device-mapper-multipath 

또는 rpm을 통해 설치 해야 하는데

rpm을 통해 설치 할때는 먼저 device-mapper-multipath-libs” 와 “kpartx”를 설치한다.

# rpm -ivh http://ftp.riken.jp/Linux/centos/6/os/x86_64/Packages/kpartx-0.4.9-56.el6.x86_64.rpm

# rpm -ivh http://ftp.riken.jp/Linux/centos/6/os/x86_64/Packages/device-mapper-multipath-libs-0.4.9-56.el6.x86_64.rpm

(이날은 이상하게 한국 centos 미러사이트가 없어서 일본으로 했다)

그리고 device-mapper-multipath 설치하자

# rpm -ivh device-mapper-multipath-0.4.9-56.el6.x86_64.rpm

3. Config 파일을 복사해오자

– 나는 rpm을 통해 설치해서 아마 /etc 밑에 multipath.conf 파일이 없었던거 같아 yum으로 설치하면 아마 나타날듯….

– 원본 multipath.conf 파일은 /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf 있다

# cp /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf  /etc/multipath.conf


4. mpathconf파일 실행

– 이넘을 실행하면 conf파일을 만들어준다는데 난 안되더라…

– 그래도 혹시 함 실행해주자….


5. 서비스를 실행해주자

# service multipathd start


6. 멀티패스 명령을 실행하자!

# multipath

Jan 14 14:17:12 | mpatha: ignoring map

Jan 14 14:17:12 | mpathb: ignoring map

create: mpathc (36001f93105488000018c000200000000) undef XIOTECH,ISE2400

size=2.0T features=’0′ hwhandler=’0′ wp=undef

|-+- policy=’round-robin 0′ prio=1 status=undef

| `- 3:0:0:1 sdc 8:32 undef ready running

|-+- policy=’round-robin 0′ prio=1 status=undef

| `- 3:0:1:1 sdd 8:48 undef ready running

|-+- policy=’round-robin 0′ prio=1 status=undef

| `- 4:0:0:1 sde 8:64 undef ready running

`-+- policy=’round-robin 0′ prio=1 status=undef

  `- 4:0:1:1 sdf 8:80 undef ready running


— 뭔가 이루어진듯하다

– sdc ~e가 mpathc로 맵핑 된것이 보인다.


7. 파티션을 다시확인하자

# fdisk -l


Disk /dev/mapper/VolGroup-lv_home doesn’t contain a valid partition table

Disk /dev/sdc: 2199.0 GB, 2199023255552 bytes

255 heads, 63 sectors/track, 267349 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00000000

Disk /dev/sdc doesn’t contain a valid partition table

Disk /dev/sdd: 2199.0 GB, 2199023255552 bytes

255 heads, 63 sectors/track, 267349 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00000000

Disk /dev/sdd doesn’t contain a valid partition table

Disk /dev/sde: 2199.0 GB, 2199023255552 bytes

255 heads, 63 sectors/track, 267349 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00000000

Disk /dev/sde doesn’t contain a valid partition table

Disk /dev/sdf: 2199.0 GB, 2199023255552 bytes

255 heads, 63 sectors/track, 267349 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00000000

Disk /dev/sdf doesn’t contain a valid partition table

Disk /dev/mapper/mpathc: 2199.0 GB, 2199023255552 bytes


255 heads, 63 sectors/track, 267349 cylinders


Units = cylinders of 16065 * 512 = 8225280 bytes


Sector size (logical/physical): 512 bytes / 512 bytes


I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk identifier: 0x00000000

Disk /dev/mapper/mpathc doesn’t contain a valid partition table

-맵핑된 디스크가 맨 마지막에 보인다.

8. 맵핑된 디스크를 ext4로 포멧하자

# mkfs.ext4 /dev/mapper/mpathc

9. 미리 만들어둔 디렉토리로 마운트

#vi /etc/fstab

/dev/mapper/mpathc /test                             ext4    defaults        1 2     >>추가한다

– test란 디렉토리로 마운트를 했다.

10. 디스크 정보를 확인해보자

# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/mapper/VolGroup-lv_root

                       50G  1.7G   46G   4% /

tmpfs                  12G     0   12G   0% /dev/shm

/dev/sda1             485M   32M  428M   7% /boot

/dev/mapper/VolGroup-lv_home

                      858G  836M  813G   1% /home

/dev/mapper/mpathc    2.0T  834M  1.9T   1% /test

– 2T 가 정상적으로 마운트 된것이 보인다.



10. 후기

상당히 힘들줄 알았는데.

별다른 config의 변경없이 걍 알아서 잡는다는것이 신기했다!