iscsi與multipath搭建

liiinuuux發表於2015-04-03
服務端
安裝
yum install iscsi-initiator-utils
yum install scsi-target-utils
yum install lsscsi

service   iscsi  start
service   iscsid start
service   tgtd   start
chkconfig iscsi  on
chkconfig iscsid on
chkconfig tgtd   on

配置
sdb,sdc,sdd三個磁碟,允許所有客戶端訪問
tgtadm --lld iscsi --mode target --op new --tid 1 --targetname disk0
tgtadm --lld iscsi --mode target --op new --tid 2 --targetname disk1
tgtadm --lld iscsi --mode target --op new --tid 3 --targetname disk2

tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 --backing-store /dev/sdb
tgtadm --lld iscsi --mode logicalunit --op new --tid 2 --lun 2 --backing-store /dev/sdc
tgtadm --lld iscsi --mode logicalunit --op new --tid 3 --lun 3 --backing-store /dev/sdd

tgtadm --lld iscsi --mode target --op bind --tid 1 --initiator-address ALL
tgtadm --lld iscsi --mode target --op bind --tid 2 --initiator-address ALL
tgtadm --lld iscsi --mode target --op bind --tid 3 --initiator-address ALL

生成配置檔案
tgt-admin --dump > /etc/tgt/targets.conf 

啟動服務
...

客戶端
發現磁碟
[root@db10 ~]# iscsiadm -m discovery -t sendtargets -p 1.1.1.252
Starting iscsid:                                           [  OK  ]
1.1.1.252:3260,1 disk0
1.1.1.252:3260,1 disk1
1.1.1.252:3260,1 disk2

登陸iscsi
(把--login改成--logout就是取消)
iscsiadm --mode node --targetname disk0 --portal 1.1.1.252:3260 --login
iscsiadm --mode node --targetname disk1 --portal 1.1.1.252:3260 --login
iscsiadm --mode node --targetname disk2 --portal 1.1.1.252:3260 --login

[root@db10 ~]# fdisk -l | grep "Disk /"
Disk /dev/sda: 34.4 GB, 34359738368 bytes
Disk /dev/sdb: 8589 MB, 8589934592 bytes
Disk /dev/sdc: 8589 MB, 8589934592 bytes
Disk /dev/sdd: 8589 MB, 8589934592 bytes


多路徑
用iscsiadm登陸另外的ip。
iscsiadm --mode node --targetname disk0 --portal 2.2.2.252:3260 --login
iscsiadm --mode node --targetname disk1 --portal 2.2.2.252:3260 --login
iscsiadm --mode node --targetname disk2 --portal 2.2.2.252:3260 --login
看見了重複的sdN
[root@db10 ~]#  fdisk -l | grep "Disk /"
Disk /dev/sda: 34.4 GB, 34359738368 bytes
Disk /dev/sdb: 8589 MB, 8589934592 bytes
Disk /dev/sdc: 8589 MB, 8589934592 bytes
Disk /dev/sdd: 8589 MB, 8589934592 bytes
Disk /dev/sde: 8589 MB, 8589934592 bytes
Disk /dev/sdf: 8589 MB, 8589934592 bytes
Disk /dev/sdg: 8589 MB, 8589934592 bytes
[root@db10 ~]# scsi_id -u -g /dev/sdb
1IET_00010001
[root@db10 ~]# scsi_id -u -g /dev/sde
1IET_00010001

安裝多路徑軟體
yum -y install device-mapper*
chkconfig multipathd on
service multipathd start

配置對映
建立配置檔案
[root@db10 ~]# cat /etc/multipath.conf 
defaults {
       udev_dir                /dev
       polling_interval        10
       path_selector           "round-robin 0"
       path_grouping_policy    multibus
       getuid_callout          "/lib/udev/scsi_id --whitelisted --replace-whitespace -g -u -d /dev/%n"
       prio                    const
       path_checker            readsector0
       rr_min_io               100
       max_fds                 8192
       rr_weight               priorities
       failback                immediate
       no_path_retry           fail
       user_friendly_names     yes
}

blacklist {
       wwid     1ATA_VBOX_HARDDISK_VB2271fad5-dee44b6d
}

multipaths {
       multipath {
               wwid                    1IET_00010001
               alias                   mpath_0
       }
       multipath {
               wwid                    1IET_00020001
               alias                   mpath_1
       }
       multipath {
               wwid                    1IET_00030001
               alias                   mpath_2
       }
}

devices {
       device {
               vendor                  IET
               product                 VIRTUAL-DISK
       }
}
說明:
defaults裡是其它配置的預設引數,供其它配置整合。
polling_interval:鏈路的檢查間隔,單位是秒。預設為5秒。檢查間隔會逐步增加到4*polling_interval。
selector:
  round-robin 0:向每個通道分配等量IO;
  queue-length 0:向通道發生最小的未完成IO;
  service-time 0:根據每個通道的未完成IO和吞吐量分配新IO;
path_grouping_policy:通道的優先策略
  failover    每個組只有一個通道(主備模式);
  multibus    所有通道放到一個組(負載均衡);
  group_by_serial 按serial number分組;
  group_by_prio 按“prio”引數指定的值來分組;
  group_by_node_name 按/sys/class/fc_transport/target*/node_name的名稱分組
  預設策略是multibus
getuid_callout:指定識別裝置UID使用的命令
prio:決定通道優先順序的方式,const表示所有通道優先順序一樣,也是預設的方式。其它的還有emc,alua,tpg_pref,ontap,rdac,hp_sw,hds,都是針對不同廠商的產品的。
path_checker:通道狀態的檢查方式:
  readsector0:讀取裝置的第一個sector;
  tur:向裝置發生TEST UNIT READY命令;     
  directio:透過direct I/O讀取裝置的第一個sector;
  emc_clariion,hp_sw,rdac這三個是針對特定廠商產品的;
  預設值是readsector0。
rr_min_io:在一個優先順序組的多個通道之間分配IO時,每次給一個通道分配的IO的最小次數。相當於IO分配的顆粒度。預設為1。這個引數值針對 2.6.31之前的核心,新核心需要設定rr_min_io_rq,其預設為1000。
max_fds:指定multipath和multipathd能開啟的檔案描述符數量。這個值和ulimit -n相關。
  /proc/sys/fs/nr_open顯示的是系統能開啟的檔案描述符數。
  如果沒有設定max_fds,multipath和multipathd能開啟的檔案描述符數量就取決於呼叫它們的程式。
  通常是1024. 如果通道數量乘以32大於1024,最好是設定為通道數量*32。

blacklist是忽略哪些磁碟,比如本地磁碟

multipaths裡的每個multipath是一個對映,指定wwid和alias。
wwid就是defaults裡getuid_callout指定的命令的返回值。相當於繫結uuid
alias是別名,對映好的裝置會出現在/dev/mapper裡。

devices指定的是裝置型別
vendor: 取自/sys/block/device_name/device/vendor
product: 取自/sys/block/device_name/device/model


啟動multipathd服務後,message日誌:
Apr  3 14:54:59 db10 kernel: device-mapper: multipath round-robin: version 1.0.0 loaded
Apr  3 14:54:59 db10 multipathd: mpath_0: load table [0 16777216 multipath 0 0 1 1 round-robin 0 2 1 8:16 1 8:64 1]
Apr  3 14:54:59 db10 multipathd: mpath_1: load table [0 16777216 multipath 0 0 1 1 round-robin 0 2 1 8:32 1 8:80 1]
Apr  3 14:54:59 db10 multipathd: mpath_2: load table [0 16777216 multipath 0 0 1 1 round-robin 0 2 1 8:48 1 8:96 1]
Apr  3 14:54:59 db10 multipathd: mpath_0: event checker started
Apr  3 14:54:59 db10 multipathd: mpath_1: event checker started
Apr  3 14:54:59 db10 multipathd: mpath_2: event checker started
Apr  3 14:54:59 db10 multipathd: path checkers start up

對映結果
[root@db10 device]# ll /dev/mapper/
total 0
crw-rw---- 1 root root 10, 58 Apr  3 10:25 control
lrwxrwxrwx 1 root root      7 Apr  3 14:54 mpath_0 -> ../dm-0
lrwxrwxrwx 1 root root      7 Apr  3 14:54 mpath_1 -> ../dm-1
lrwxrwxrwx 1 root root      7 Apr  3 14:54 mpath_2 -> ../dm-2

[root@db10 ~]# multipath -ll
mpath_2 (1IET_00030001) dm-2 IET,VIRTUAL-DISK
size=8.0G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  |- 5:0:0:1 sdd 8:48 active ready running
  `- 8:0:0:1 sdg 8:96 active ready running
mpath_1 (1IET_00020001) dm-1 IET,VIRTUAL-DISK
size=8.0G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  |- 4:0:0:1 sdc 8:32 active ready running
  `- 7:0:0:1 sdf 8:80 active ready running
mpath_0 (1IET_00010001) dm-0 IET,VIRTUAL-DISK
size=8.0G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  |- 3:0:0:1 sdb 8:16 active ready running
  `- 6:0:0:1 sde 8:64 active ready running


[root@db10 ~]# fdisk -l | grep "Disk /"
Disk /dev/sda: 34.4 GB, 34359738368 bytes
Disk /dev/sdb: 8589 MB, 8589934592 bytes
Disk /dev/sdc: 8589 MB, 8589934592 bytes
Disk /dev/sdd: 8589 MB, 8589934592 bytes
Disk /dev/sde: 8589 MB, 8589934592 bytes
Disk /dev/sdf: 8589 MB, 8589934592 bytes
Disk /dev/sdg: 8589 MB, 8589934592 bytes
Disk /dev/mapper/mpath_0: 8589 MB, 8589934592 bytes
Disk /dev/mapper/mpath_1: 8589 MB, 8589934592 bytes
Disk /dev/mapper/mpath_2: 8589 MB, 8589934592 bytes












來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26239116/viewspace-1485362/,如需轉載,請註明出處,否則將追究法律責任。

相關文章