登入 iSCSI Target 之後我們會發現多出來兩顆硬碟,不管是大小還是狀態都一樣,這就是 iSCSI Initiator 已經和 Target 端透過兩條路徑建立了不同的連線.接下來就需要設定一下所謂的 MPIO , 在 Linux 下是被稱為 device-mapper multipath

[root@benjr ~]#  fdisk -l
Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14       60801   488279610   8e  Linux LVM

Disk /dev/sdb: 20.0 GB, 20012106240 bytes
64 heads, 32 sectors/track, 19085 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

   Device Boot      Start         End      Blocks   Id  System

Disk /dev/sdc: 20.0 GB, 20012106240 bytes
64 heads, 32 sectors/track, 19085 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

   Device Boot      Start         End      Blocks   Id  System
 

DM(Device-Mapper) multipath 的設定檔儲存在 /etc/multipath.conf ,我們只需要將系統預設的 blacklist - devnode,將他用 "#"註解掉.讓系統自己來偵測即可.

[root@benjr ~]# vi /etc/multipath.conf
blacklist {
#        devnode "*"
}

DM(Device-Mapper) multipath 的服務名稱為 multipathd ,開機啟動時設定 chkconfig ,立即啟用服務使用 service 程式.

[root@benjr ~]# chkconfig multipathd on
Start multipathd:
 
[root@benjr ~]# service multipathd start
List multipath devices:

當我將 "multipathd" 的服務啟動之後使用 multipath 指定來觀看可以發現剛剛由 iSCSI Initiator 連線所建立出來的 2 顆硬碟已經其實是指向同一個 SCSI ID 而 DM-Multipath 也確認的出來.

[root@benjr ~]# multipath -ll
mpath1 (16465616462656166313a3100000000000000000000000000) dm-2 IET,VIRTUAL-DISK
[size=19G][features=0][hwhandler=0]
\_ round-robin 0 [prio=1][active]
 \_ 7:0:0:1 sdb 8:16  [active][ready]
\_ round-robin 0 [prio=1][enabled]
 \_ 6:0:0:1 sdc 8:32  [active][ready]

我們也可以透過指令 scsi_id 來檢視硬碟裝置的 ID 是否相同.

[root@benjr ~]# scsi_id -x -g -u -s /block/sdb
ID_VENDOR=IET
ID_MODEL=VIRTUAL-DISK
ID_REVISION=0001
ID_SERIAL=16465616462656166313a3100000000000000000000000000
ID_TYPE=disk
ID_BUS=scsi
 
[root@benjr ~]# scsi_id -x -g -u -s /block/sdc
ID_VENDOR=IET
ID_MODEL=VIRTUAL-DISK
ID_REVISION=0001
ID_SERIAL=16465616462656166313a3100000000000000000000000000
ID_TYPE=disk
ID_BUS=scsi

我們透過系統就可以觀看到 /dev/dm 的裝置了.這個裝置就如同一般的硬碟裝置,如同 /dev/sda 你可以針對他做分割,格式化,讀寫等動作.而且還具備 MPIO 的功能.

[root@benjr ~]# fdisk -l
Disk /dev/dm-2: 20.0 GB, 20012106240 bytes
255 heads, 63 sectors/track, 2433 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
     Device Boot      Start         End      Blocks   Id  System
/dev/dm-2p1   *           1          13      104391   83  Linux
/dev/dm-2p2              14        2433    19438650   8e  Linux LVM
 

如果系統沒有自動產生 /dev/dm 的裝置時可以透過程式 kpartx 來產生.

[root@benjr ~]# kpartx -a /dev/mapper/16465616462656166313a3100000000000000000000000000