详细实验步骤

一、客户端安装iscsi包

      服务器端安装iscsi-initiator-utils包, /etc/iscsi/initiatorname.iscsi中查看主机端的iqn号码。
>rpm –ivh iscsi-initiator-utils-6.2.0.871-0.10.SEL5_3.i386.rpm
>cat /etc/iscsi/initiatorname.iscsi




二、在共享存储上为服务器划分磁盘空间

      型号为S16E-G1130的磁盘阵列,配8颗1TB SATA磁盘。8颗磁盘做RAID5,划分出一个2TB的空间映射给4个数据口。4个数据口再直连到RedHat服务器,需给4条通路配置4个网段的IP地址。例如:
IP/GateWay RedHat服务器 S16E-G1130的磁盘阵列
通路1 192.168.1.2/192.168.1.1 192.168.1.3/192.168.1.1
通路2 192.168.2.2/192.168.2.1 192.168.2.3/192.168.2.1
通路3 192.168.3.2/192.168.3.1 192.168.3.3/192.168.3.1
通路4 192.168.4.2/192.168.4.1 192.168.4.3/192.168.4.1
      子网掩码NETMASK均为255.255.255.0。


三、启用iscsi设备

1、 在服务器端,启动ISCSI服务
>service iscsi start
 
2、 查询ISCSI设备target的iqn号码(必须)
>iscsiadm -m discovery -t st -p IP
IP:磁盘阵列数据口的IP地址
 
3、 登陆到ISCSI存储设备
>iscsiadm –m node –T IQN -p IP – l
IQN:上面查询得到的号码
IP:磁盘阵列数据口的IP地址
 
4、 查看磁盘
>fdisk –l
此命令执行后,应可看到新的盘符。
 
5、 映射完成之后使用下面命令查看映射结果:
>iscsiadm -m node
显示已有的通路。
 
6、 本例操作
>service iscsi start
> iscsiadm -m discovery -t st -p 192.168.1.3
> iscsiadm –m node –T IQN -p 192.168.1.3 – l # IQN是上面命令查出的
> iscsiadm -m discovery -t st -p 192.168.2.3
> iscsiadm –m node –T IQN -p 192.168.2.3 – l # IQN是上面命令查出的
> iscsiadm -m discovery -t st -p 192.168.3.3
> iscsiadm –m node –T IQN -p 192.168.3.3 – l # IQN是上面命令查出的
> iscsiadm -m discovery -t st -p 192.168.4.3
> iscsiadm –m node –T IQN -p 192.168.4.3 – l # IQN是上面命令查出的
>iscsiadm -m node
此处应可见4条通路。



四、安装Device Mapper Multipath包

#安装device-mapper.1.02.28.tgz
>tar zxvf device-mapper.1.02.28.tgz;cd device-mapper.1.02.28
>./configure;make;make install

#安装multipath-tools-0.4.6.1.tar.bz2
>tar jxvf multipath-tools-0.4.6.1.tar.bz2;cd multipath-tools-0.4.6.1
>make;make install

#加载模块
> modprobe dm_multipath

      本例中服务器上可以看到4个物理磁盘,但此磁盘对应一个真实的virtual disk,故这4条路径间可以实现故障切换和负载均衡。
      由于需要实现存储设备的多路径访问及故障切换,故需要运行multipath服务。



五、修改配置参数并测试

1、 etc/multipath.conf 是多路径软件的配置文件,其中大部分配置是注释掉的,可以将他保存为备用,然后新建一个multipath.conf 文件,编辑新的配置文件。
      实际有用的就是以下列出的参数,其余参数都可以注释掉。
defaults {
user_friendly_names yes
udev_dir /dev
path_grouping_policy multibus
failback immediate
no_path_retry fail
}
保存退出
 
2、 启动服务
>service multipathd restart
启动成功后,我们会在dev目录下看到下面的目录:
/dev/mapper/mpathn,
/dev/mpath/mpathn,
/dev/dm-n.
 
说明::
      /dev/mapper/mpathn 是软件虚拟出来的多路径设备,这个可以被我们用来挂载使用。
      /dev/mpath/mpathn 这个是udev设备管理器创建的,不能用来挂载。
      /dev/dm-n 这个是软件自身使用的,不能被软件以外使用。不可挂载。
 
3、 用 multipath –ll 命令查看到4条活跃路径,他们之间互为A/A 关系。断掉其中一根线路,那么系统自动切换到另外一条。
>multipath –ll
 
4、 在多路径设备创建后,我们就可以像使用实际的物理设备样使用多路径设备了。前提是必须通过下面的命令将其标记为物理卷。
>pvcreate /dev/mapper/mpath1
 
5、 然后对磁盘进行分区和格式化
>fdisk /dev/mapper/mpath1

>parted /dev/mapper/mpath1
分区之后,会在dev/mapper/目录下创建新的块设备,
/dev/mapper/mpath1p1 这个表示mpath1设备下面的分区1.
如果没有看到或者不匹配,使用
>multipath –F
清除多路径设备缓存后,再用
>multipath –v3
重新加载。
分区之后使用
>fdisk -l
查看磁盘会看到dm-1 磁盘下面已经有分区的信息了。
 
6、 最后将磁盘mount挂载,就可以正常使用了。
>mkdir /media/mpath1p1;mount /dev/mapper/mpath1p1 /media/mpath1p1
 
7、 将multipathd服务设置成开机自启动。
>chkconfig multipathd on
 
8、 注意事项
      删除失效的iscsi 连接:
如果因为错误配置等原因创建了iscsi 对应,系统不会自动删除,需手动删除。例如:
>iscsiadm -m node -o delete -T IQN -p IP
如果其中一条链路出现故障,那么在日志里面我们可以看到信息:
>tail /var/log/messages
>multipath –ll
 
9、 多路径和负载均衡测试
本例中识别到的磁盘是/dev/mapper/mpath1,分区和格式化后是/dev/mapper/mpath1p1分区。使用如下命令:
#对/dev/mapper/mpath1设备写数据
>dd if=/dev/zero of=/dev/mapper/mpath1 bs=128k
#显示磁盘设备的读写速率和状态,1秒显示1次
>iostat 1
通过上面的命令可以看到4条通路同时对磁盘阵列写数据,数据包大致是平均分配的。
 
说明:
      iostat命令需要安装sysstat包,默认没有安装。
      >tar zxvf sysstat-9.0.5.tar.gz;cd sysstat-9.0.5
      >./configure;make;make install
 
10、 故障切换测试
将4条通路拔掉1个后,可以看到读写会暂停数秒,之后仍联通的通路会重新读写;再插上后,数秒内会恢复该通路的读写。拔掉多个情况也一样。
 
11、 性能测试
dd if=/dev/zero of=/dev/mapper/mpath1 bs=128k count=2048000
268435456000 bytes (268 GB) copied, 1712.14 seconds, 157 MB/s
 
dd if=/dev/zero of=/dev/mapper/mpath1 bs=128k count=204800
26843545600 bytes (27 GB) copied, 166.543 seconds, 161 MB/s
 
dd if=/dev/zero of=/dev/mapper/mpath1 bs=128k count=20480
2684354560 bytes (2.7 GB) copied, 11.2825 seconds, 238 MB/s
 
dd if=/dev/zero of=/dev/mapper/mpath1 bs=128k count=2048
268435456 bytes (268 MB) copied, 0.443421 seconds, 605 MB/s
 
dd if=/dev/zero of=/dev/mapper/mpath1 bs=128k count=4096
536870912 bytes (537 MB) copied, 0.759899 seconds, 707 MB/s
 
dd if=/dev/zero of=/dev/mapper/mpath1 bs=128k count=40960
5368709120 bytes (5.4 GB) copied, 28.393 seconds, 189 MB/s
 
dd if=/dev/zero of=/dev/mapper/mpath1 bs=128k count=409600
53687091200 bytes (54 GB) copied, 334.216 seconds, 161 MB/s
 
dd if=/dev/zero of=/dev/mapper/mpath1 bs=128k count=3072000
375809638400 bytes (376 GB) copied, 2375.54 seconds, 158 MB/s

以上数据显示:
      由于是4条100MB/s的通路和512MB的缓存,当数据量较小时,速率不真实。平均速率大致为155MB/s ~190MB/s。当改为2条或3条通路时情况类似。