FC主要组件
FC交换机交换拓扑
iSCSI技术
Internet SCSI
优势
iSCSI技术
客户端
配置iSCSI服务
本案例要求先搭建好一台iSCSI服务器,并将整个磁盘共享给客户端:
服务器上要额外配置一块硬盘
服务端安装target,并将新加的硬盘配置为iSCSI 的共享磁盘
在客户端上安装initiator,挂在服务器iSCSI,要求实现开机自动挂载
实现此案例需要按照如下步骤进行。
一:安装iSCSI服务器软件
(1)使用yum安装targetcli软件包
[root@proxy ~]# yum -y install targetcli
.. ..
[root@proxy ~]# yum info targetcli
.. ..
二:通过命令行配置iSCSI服务
(1)真实主机准备底层存储磁盘
真实主机使用virt-manager工具为proxy虚拟机添加磁盘
双击打开虚拟机后添加磁盘设备。
登陆到192.168.2.5主机,为新添加的磁盘准备分区:
[root@proxy ~]# parted /dev/vdb mklabel gpt
[root@proxy ~]# parted /dev/vdb mkpart primary 1 100%
(2)使用targetcli定义后端存储
设置需要将哪个设备共享给其他主机,这里将/dev/vdb1设置为后端共享磁盘。
[root@proxy ~]# targetcli
/> ls
/> backstores/block create store /dev/vdb1
备注:store为任意名称
(3)创建iqn对象
给iSCSI共享设置一个共享名称,客户端访问时需要使用该共享名称。
/> /iscsi create iqn.2018-01.cn.tedu:server1
(4)授权客户机访问
类似于一个密码,设置ACL访问控制,拥有iqn.2018-01.cn.tedu:client1这个字符串的客户端才有权限访问服务器。
/> iscsi/iqn.2018-01.cn.tedu:server1/tpg1/acls create iqn.2018-01.cn.tedu:client1
(5) 绑定存储
将iqn共享名称(iqn.2018-01.cn.tedu:server1)与后端实际的存储设备(vdb)绑定。
/>iscsi/iqn.2018-01.cn.tedu:server1/tpg1/luns create /backstores/block/store
注意:block后面的store必须与前面步骤2定义后端存储create创建的名称一致。
(6) 存储绑定服务监听的地址,并保存配置
/> iscsi/iqn.2018-01.cn.tedu:server1/tpg1/portals/ create 0.0.0.0
/> saveconfig
/> exit
三:服务管理
(1)启动服务
[root@proxy ~]# systemctl {start|restart|stop|status} target
[root@proxy ~]# systemctl enable target
(2)查看端口信息
[root@proxy ~]# ss -utlnp | grep :3260
(3)关闭防火墙与SELinux
[root@proxy ~]# systemctl stop firewalld
[root@proxy ~]# setenforce 0
四:客户端访问(web1作为客户端的角色)
(1)客户端安装软件并启动服务
[root@web1 ~]# yum -y install iscsi-initiator-utils
(2)设置本机的iqn名称
[root@web1 ~]# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2018-01.cn.tedu:client1
注意:必须跟服务器上配置的ACL一致!
(3)发现远程target存储
提示:参考man iscsiadm!
[root@web1 ~]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.2.5 --discover
[root@web1 ~]# iscsiadm --mode node --targetname iqn.2018-01.cn.tedu:server1 --portal 192.168.2.5:3260 --login
(3)客户端挂载iSCSI共享
[root@web1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
#多了一个sda设备
sr0 11:0 1 1024M 0 rom
vda 252:0 0 20G 0 disk
[root@web1 ~]# systemctl restart iscsi
(4)分区、格式化、挂载
[root@web1 ~]# parted /dev/sda mklabel gpt
[root@web1 ~]# parted /dev/sda mkpart primary 1 800
[root@web1 ~]# mkfs.xfs /dev/sda1
[root@web1 ~]# mount /dev/sda1 /mnt
[root@web1 ~]# umount /mnt
四:多台FTP或者http主机使用共享存储。
这里以FTP为例,web1和web2主机都安装vsftpd软件,使用统一的后端共享存储设备。
(1) web1操作(延续前面步骤三的实验):
[root@web1 ~]# mkdir /var/ftp/
[root@web1 ~]# mount /dev/sda1 /var/ftp/
[root@web1 ~]# yum -y install vsftpd
[root@web1 ~]# sed -i 's/^#anon/anon/' /etc/vsftpd/vsftpd.conf
备注:修改vsftpd配置文件,开启匿名上传功能。将下面2行默认的注释行打开。
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
[root@web1 ~]# chmod 777 /var/ftp/pub
[root@web1 ~]# systemctl start vsftpd
[root@web1 ~]# systemctl enable vsftpd
(2) 真实主机访问web1的FTP共享,并任意上传一个文件到FTP服务器。
(3)当web1宕机后,web2主机可以继续使用iscsi提供FTP共享服务。
Web1关闭vsftpd服务,卸载iscsi挂载。
[root@web1 ~]# systemctl stop vsftpd
[root@web1 ~]# umount /var/ftp
添加iSCSI共享(web2操作)。
[root@web2 ~]# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2018-01.cn.tedu:client1
注意:必须跟服务器上配置的ACL一致!
[root@web2 ~]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.2.5 --discover
[root@web2 ~]# iscsiadm --mode node --targetname iqn.2018-01.cn.tedu:server1 --portal 192.168.2.5:3260 --login
安装部署vsftpd软件(web2操作)。
[root@web2 ~]# yum -y install vsftpd
[root@web2 ~]# sed -i 's/^#anon/anon/' /etc/vsftpd/vsftpd.conf
[root@web2 ~]# chmod 777 /var/ftp/pub/
[root@web2 ~]# systemctl start vsftpd
[root@web2 ~]# systemctl enable vsftpd
(4)真实主机访问web2的FTP共享,查看共享里现有的数据,并任意上传一个新文件到FTP服务器
多路径概述
多路径设备识别符
多路径主要功能
多路径设备
通过Multipath,实现以下目标:
在共享存储服务器上配置iSCSI,为应用服务器共享存储空间
应用服务器上配置iSCSI,发现远程共享存储
应用服务器上配置Multipath,将相同的共享存储映射为同一个名称
配置2台虚拟机,每台虚拟机均为两块网卡:
eth0和eth1都可用于iSCSI存储通讯
具体配置如表-
节点及网卡 | 地址应用 |
---|---|
proxy(iSCSI服务器) | eth0:192.168.4.5/24 eth1:192.168.2.5/24 |
web1(iSCSI客户端) | eth0:192.168.4.100/24 eth1:192.168.2.100/24 |
实现此案例需要按照如下步骤进行。
一:存储服务器上添加额外的磁盘(如果已经完成案例1,此步骤可以忽略)
使用KVM软件新建(或修改)虚拟机,为虚拟机额外添加一块硬盘。
二:存储服务器上安装并配置共享存储(如果已经完成案例1,此步骤可用忽略)
(1)定义后端存储
[root@proxy ~]# targetcli
/> ls
/> backstores/block create store /dev/vdb1
(2)创建iqn对象
/> /iscsi create iqn.2018-01.cn.tedu:server1
(3)授权客户机访问
/> iscsi/iqn.2018-01.cn.tedu:server1/tpg1/acls create iqn.2018-01.cn.tedu:client1
(4)绑定存储
/>iscsi/iqn.2018-01.cn.tedu:server1/tpg1/luns create /backstores/block/store
(5)绑定存储绑定监听地址,并保存配置
/> iscsi/iqn.2018-01.cn.tedu:server1/tpg1/portals/ create 0.0.0.0
/> saveconfig
/> exit
三:在client服务器上安装并配置iSCSI客户端
(1)安装客户端软件(前面的案例1已经完成的情况下,可以忽略此步骤)
[root@web1 ~]# yum list | grep iscsi
iscsi-initiator-utils.x86_64 6.2.0.873-14.el6
[root@web1 ~]# yum install -y iscsi-initiator-utils
(2)发现存储服务器的共享磁盘
因为有两条链路都可以连接到共享存储,所以需要在两条链路上都发现它。
注意:两次发现使用的IP地址不同!
[root@web1 ~]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.2.5 --discover
192.168.2.5:3260,1 iqn.2018-01.cn.tedu:client1
[root@web1 ~]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.4.5 --discover
192.168.4.5:3260,1 iqn.2018-01.cn.tedu:client1
(3)登陆共享存储
只需要将iscsi服务重启就可以自动登陆(就不需要再login了)。
在login之前,只能看到本地的存储,登陆之后,将会多出两块新的硬盘。
… …
[root@web1 ~]# service iscsi restart
停止 iscsi: [确定]
正在启动 iscsi: [确定]
[root@web1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 20G 0 part
sdb 8:0 0 20G 0 disk
├─sdb1 8:1 0 20G 0 part
vda 252:0 0 20G 0 disk
├─vda1 252:1 0 1G 0 part /boot
提示:登陆的是同一个服务器的同一个iSCSI,但客户端看到的是两个独立的设备,sda和sdb。其实,这两个设备是同一个设备。
(4)设置开机自启动
iscsi用于自动login远程存储,iscsid是守护进程。
[root@web1 ~]# systemctl enable iscsid
[root@web1 ~]# systemctl enable iscsi
四:配置Multipath多路径
(1)安装多路径软件包
[root@web1 ~]# yum list | grep multipath
device-mapper-multipath.x86_64 0.4.9-111.el7 Server
device-mapper-multipath-libs.i686 0.4.9-111.el7 Server
device-mapper-multipath-libs.x86_64 0.4.9-111.el7 Server
[root@web1 ~]# yum install -y device-mapper-multipath
(2)生成配置文件
[root@web1 ~]# cd /usr/share/doc/device-mapper-multipath-0.4.9/
[root@web1 ~]# ls multipath.conf
[root@web1 ~]# cp multipath.conf /etc/multipath.conf
(3)获取wwid
登陆共享存储后,系统多了两块硬盘,这两块硬盘实际上是同一个存储设备。应用服务器使用哪个都可以,但是如果使用sdb时,sdb对应的链路出现故障,它不会自动切换到sda。
为了能够实现系统自动选择使用哪条链路,需要将这两块磁盘绑定为一个名称。
通过磁盘的wwid来判定哪些磁盘是相同的。
取得一块磁盘wwid的方法如下:
[root@web1 ~]# /usr/lib/udev/scsi_id --whitelisted --device=/dev/sdb
360014059e8ba68638854e9093f3ba3a0
(4)修改配置文件
首先声明自动发现多路径:
[root@web1 ~]# vim /etc/multipath.conf
defaults {
user_friendly_names yes
find_multipaths yes
}
然后在文件的最后加入多路径声明,如果哪个存储设备的wwid和第(3)步获取的wwid一样,那么,为其取一个别名,叫mpatha。
multipaths {
multipath {
wwid "360014059e8ba68638854e9093f3ba3a0"
alias mpatha
}
}
五:启用Multipath多路径,并测试
注意:如果做案例1时,已经挂载了iSCSI设备,一定要先umount卸载掉再启动多路径。
(1)启动Multipath,并设置为开机启动
[root@web1 ~]# systemctl start multipathd
[root@web1 ~]# systemctl enable multipathd
(2)检查多路径设备文件
如果多路径设置成功,那么将在/dev/mapper下面生成名为mpatha的设备文件:
[root@web1 ~]# ls /dev/mapper/
control mpatha mpatha1
(3)对多路径设备文件执行分区、格式化、挂载操作
提示:如果前面已经对iscsi做过分区操作,则这里可以直接识别到mpatha1(就不需要再次分区了)。
[root@web1 ~]# fdisk -cu /dev/mapper/mpatha
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x205c887e.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): n #创建分区
Command action
e extended
p primary partition (1-4)
p #分区类型为主分区
Partition number (1-4): 1 #分区编号为1
First sector (2048-4194303, default 2048): #起始扇区回车
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-4194303, default 4194303): #回车
Using default value 4194303
Command (m for help): w #保存并退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
新的分区名称应该是/dev/mapper/mpathap1,如果该文件不存在,则执行以下命令进行配置的重新载入:
[root@web1 ~]# ls /dev/mapper/ #再次查看,将会看到新的分区
control mpatha mpatha1
创建目录并挂载(如果已经格式化,这里就不需要再次格式化,直接挂载即可):
[root@web1 ~]# mkfs.xfs /dev/mapper/mpatha1
[root@web1 ~]# mkdir /data
[root@web1 ~]# mount /dev/mapper/mpatha1 /data/
[root@web1 ~]# df -h /data/
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/mpatha1 20G 3.0M 19G 1% /data
(4)验证多路径
查看多路径,sda和sdb都是running状态。
[root@web1 ~]# multipath -rr
reload: mpatha (360014059e8ba68638854e9093f3ba3a0) undef LIO-ORG ,store
size=9.3G features='0' hwhandler='0' wp=undef
|-+- policy='service-time 0' prio=1 status=undef
| `- 2:0:0:0 sda 8:0 active ready running
`-+- policy='service-time 0' prio=1 status=undef
`- 3:0:0:0 sdb 8:16 active ready running
关闭某个链路后,再次查看效果,此时会发现sdb为运行失败状态。
[root@web1 ~]# nmcli connection down eth1
[root@web1 ~]# multipath -rr
reject: mpatha (360014059e8ba68638854e9093f3ba3a0) undef LIO-ORG ,store
size=9.3G features='0' hwhandler='0' wp=undef
|-+- policy='service-time 0' prio=0 status=undef
| `- 2:0:0:0 sda 8:0 active undef running
`-+- policy='service-time 0' prio=0 status=undef
`- 3:0:0:0 sdb 8:16 active faulty running
使用-ll选项查看,仅sda为有效运行状态。
[root@web1 ~]# multipath -ll
reject: mpatha (360014059e8ba68638854e9093f3ba3a0) undef LIO-ORG ,store
size=9.3G features='0' hwhandler='0' wp=undef
`-+- policy='service-time 0' prio=0 status=undef
`- 2:0:0:0 sda 8:0 active undef running