存储-3-网络存储
开课
在日常生活中,如果你的电脑硬盘空间不足怎么办?如果你的手机存储空间不足怎么办?解决这些问题的方法就是增加容量,我们可以通过购买大容量的硬盘,存储卡,网络存储,网盘等手段来解决空间不足的问题,而上面我们所提到的这些,其实都属于存储,本章我们就一起来学习一下存储相关的知识。
知识点
存储的概念、类型、分类
linux存储的分层
本地存储与共享存储
SAN存储介绍及ISCSI
多路径存储的实现
课程目标
能够区分DAS,NAS,SAN三种存储分类
能够根据业务环境选择存储
能够区分文件存储类型与块存储类型
能够使用iscsi实现IP-SAN
能够使用双路径iscsi存储
网络存储(storage)
一、存储介绍
1、存储是什么

存储指的是计算
机中用来存放数据的设备,而存储系统是指计算机中由存放程序和数据的各种存储设备、控制部件及管理信息调度的设备(硬件)和算法(软件)所组成的系统。
2、存储分类
存储分类 | 描述 |
DAS 直连式存储 (direct access/attach storage) | 如:机箱里的disk,或通过接口直连到系统总线上的disk(如U盘,移动硬盘) |
NAS 网络附加存储(network attched storage) | 如:nfs,samba,ftp |
SAN 存储附加网络(storage area network) | 通过交换机,路由器连接起来的高速存储网络 |
DAS: 直接连接系统,不受网速限制,速度快; 扩展不方便。
NAS与SAN: 通过网络设备连接的远程存储,速度受网络影响; 但扩展方便。
NAS和SAN都是通过网络(通过了网络设备,如路由器,交换机等)的,但NAS共享的是应用层的目录,而SAN共享的是/dev/sdb1或/dev/sdb这种块设备。
3、存储类型的分类
存储类型分类 | 描述 |
文件存储 | NAS都属于这一类。简单来说就是mount后直接使用的 |
块存储 | SAN都属于这一类。简单来说就是类似/dev/sdb这种,要分区,格式化后才能mount使用 |
对象存储(了解) | 通俗来讲,就是存储是什么形式,怎么做的都不用关注。使用的人只要直接使用程序接口去访问, 进行get下载与put上传就好 |
文件存储: 类似一个大的目录,多个客户端都可以挂载过来使用。
- 优点: 利于数据共享
- 缺点: 速度较慢
块存储: 类似一个block设备,客户端可以格式化,挂载并使用,和用一个硬盘一样。
- 优点: 和本地硬盘一样,直接使用
- 缺点: 数据不共享
对象存储: 一个对象我们可以看成一个文件, 综合了文件存储和块存储的优点。
- 优点: 速度快,数据共享
- 缺点: 成本高, 不兼容现有的模式
4、linux存储分层

物理卷:物理磁盘,硬件
模块驱动:物理磁盘的驱动程序,没有驱动程序,系统无法识别
文件系统:决定了计算机存取数据的方式,不同的操作系统支持的文件系统不同,不同的文件系统的优势也是各不相同的,比如说ext3、ext4、extfat、ntfs这几种文件系统所支持的文件数量、大小等都不一样
虚拟文件系统:这个虚拟文件系统有两个特性,一个是跨文件系统操作,用户对数据进行操作的时候不需要考虑文件系统类型,比如说我将两个不同文件系统类型的分区挂载到两个不同的目录后,我就可以直接在这两个目录之间拷贝数据,而不需要考虑文件系统是否兼容等问题;另一个就是一切皆文件,在虚拟文件系统中,文件、目录、字符设备、块设备、等都会被当做文件对待。比如说我们系统中的硬盘分区,会对应一个叫/dev/sdb1的文件,当用户使用mount命令将设备挂载到某一个目录后,针对目录的读写操作,实际上就是针对于硬盘的读写。
应用程序:就是我们日常使用的命令等工具
二、存储业务的前世今生
近年来,随着互联网和智能硬件的快速普及,数据以爆炸方式增长。全球数据总量增长率将维持在50%左右;1986年,全球只有0.02EB也就是约21000TB的数据量,而到了2007年,全球就是280EB也就是约300000000TB的数据量,翻了14000倍。由于移动互联网及物联网的出现,各种终端设备的接入,各种业务形式的普及,平均每40个月,全球的数据量就会翻倍!如果这样说还没有什么印象,可以再举个简单的例子,在2012年,每天会产生2.5EB的数据量。基于IDC的报告预测,从2013年到2020年,全球数据量会从4.4ZB猛增到44ZB!到2025 年,全球的数据总量将达到160ZB以上。互联网的快速发展,互联网公司的业务也越来越多,架构也越来越大,越来越复杂。公司经过多年业务的积累,公司的数据量也是直线上升。特别是从3G正式进入我们的生活后,公司的数据更是井喷式的增长,数据的快速存储及快速读出成为每一个运维人员关注和工作的重心。
1TB=1024GB,1PB=1024TB,1EB=1024PB,1ZB=1024EB,1YB=1024ZB
搜狐每天日志数量:8PB左右
百度每日搜索:60亿次
淘宝首页日均pv:一亿左右
每天面对海量数据的增长,公司数据的存储方式也随着发生了变化,主要经历了一下几种存储方式:
- 本地存储时代:
- 共享存储时代
2.1、本地存储时代:
- 单机最开始的时候,由于互联网中的用户比较少,早期能接触到计算机的人基本上都是非富即贵,再或者是科研及教育人员,所以计算机产生的数据非常的少,所以很多公司的业务服务器都是部署在一台机器,甚至一台机器部署多个web业务(虚拟主机业务).单机实现简单,用户上传只需一个FTP就能成功将的文件写入指定目录。数据保存和访问起来倒是也很方便,但是上传方式混乱,严重不利于网站的扩展。
- 大集群
访问量上升,单台服务器的业务压力会越来越大,磁盘空间、IO瓶颈、并发处理能力等等问题就凸显出来了。
针对上述最原始的架构,主要面临着如下问题: 1)随着网站目录中文件越来越多,所在分区(例如/data分区)如果出现容量不足,则很难扩容。只能停机后更换更大容量的存储设备,再将旧数据导入。 2)在更新应用数据和日常备份的时候,需要同时操作所有主机应用所涉及的目录中的文件,
为了解决这个问题,我们采用了集群架构。我们在负载均衡后边部署由多台应用服务器组成的负载均衡集群(如web集群),由于数据存放在每台业务机的硬盘中,所以集群节点之间如何做好文件实时同步将是个难题,虽然可以使用rsync实现数据同步,但是无法做到实时同步,而且还受到到其它因素影响,如网络
2.2、共享存储时代
经历了本地存储的两个阶段之后,人们又发现在生产环境中随着数据的增长,业务机器的磁盘会越来越紧张,要面临着空间和IO的双重压力,为了给业务服务器减负,对架构架构进行了重新优化,将数据分离出来。在业务架构中加入了共享存储服务器,我们将所有公共数据或者高速增长的数据统一存储在共享存储中,由共享存储统一管理,实现高效读写和容灾。
- 独立的存储服务器SAN:将共享设备挂载到本地
- NAS:将共享存储的文件夹挂载到本地URL:独立的服务器和域名,资源通过URL访问
在早期的很多基于Linux开源架构的网站中,如果不想同步图片,可能会利用NFS来实现。事实证明,NFS在高并发读写和海量存储方面,效率上存在一定问题,并非最佳的选择,类似的还有samba、FTP等服务。
架构缺点:
该架构在上传/下载操作时,都经过了Web服务器,这对Web服务器来讲无疑是造成巨大的压力。
解决方案:
生产环境中,建议大家采用具有独立域名的独立服务器来做共享存储,比如,可以使用nginx来做图片服务器,因为nginx处理静态文件相比其他web服务器软件效率更高,并发更大,通过URL实现资源调用
使用独立服务器和域名的优点:
1.图片访问是很消耗服务器资源的(因为会涉及到操作系统的上下文切换和磁盘I/O操作)。分离出来后,Web/App服务器可以更专注发挥动态处理的能力。
2.独立存储,更方便做扩容、容灾和数据迁移。
3.不需要考虑浏览器在访问相同域名下的并发限制导致的性能损失。
4.方便做图片访问请求的负载均衡,方便应用各种缓存策略(HTTP Header、Proxy Cache等),也更加方便迁移到CDN。
2.分布式存储
3G开放后,人们的生活发生了巨大变化,同时,云计算、大数据、人工智能这些词也走入人的生活。许多公司为了给客户提供更多的便利,更好的体验。疯狂的通过各种手段收集用户的数据,通过大数据平台清洗、分析后按照特定的算法对用户进行分类,迎着用户的喜好推送数据,给用户最好的体验。
但是为了实现精准的分析就需要海量的数据支撑,数据的存储也不再是几个G或者几个T的小儿科了,独立的存储服务器的已经无法满足我们的现状了,所有我们不得不寻找更大的存储来进行数据存储。
我们希望我们的存储可以实现以下的功能:
- 高效的数据读写
- 数据安全
- 弹性伸缩
- 用不完的空间
优点:
1)弹性伸缩:可以根据业务情况,通过添加或者减少机器来降低公司成本
2)高效读写:数据读写由多个机器的多块磁盘共同并发完成
3)数据安全:数据存储在多台服务器,任意一台数据磁盘故障都不会影响业务
三、SAN存储
1、SAN分类
1)FC-SAN: 早期的SAN, 服务器与交换机的数据传输是通过光纤进行的, 服务器把SCSI指令传输到存储设备上,不能走普通LAN网的IP协议。
2)IP-SAN: 用IP协议封装的SAN, 可以完全走普通网络,因此叫做IP-SAN, 最典型的就是ISCSI。
FC-SAN优缺点: 速度快(2G,8G,16G), 成本高, 传输距离有一定限制。
IP-SAN优缺点: 速度较慢(已经有W兆以太网标准), 成本低, 传输距离无限制。
2、IP-SAN实现-ISCSI
2.1、ISCSI介绍
iSCSI(internet SCSI)技术由IBM公司研究开发,是一个供硬件设备使用的、可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够在诸如高速千兆以太网上进行路由选择。iSCSI是一种新储存技术,它是将现有SCSI接口与以太网络(Ethernet)技术结合,使服务器可与使用IP网络的储存装置互相交换资料。
iscsi internet小型计算机系统接口是一个基于tcp/ip的协议,用于通过IP网络仿真scsi高性能本地存储总线,从而为远程块存储设备提供数据传输和管理。(将远端的设置块仿真到本地,仿真成scsi总线)
scsi协议套件提供基于设备总线通信协议的命令描述器块(CBD)命令集,iscsi同样保留了CBD命令集,通过标准tcp/ip封装的iscsi系统之间执行总线通信。
将设备通过tcp/ip的方式共享到客户端,仿真为本地设备
2.2、ISCSI构成
ISCSI之间通信是一种C/S架构。
客户端:
叫做Initator(发起者 C)
服务端:
这里称之为Target:(目标 S),每个Target可包含多个LUN(Logical Unit Number 逻辑单元)。真正提供服务的是LUN。
2.3、ISCSI实现

教学案例:
- 将本机的/dev/sdb磁盘共享给node1(192.168.98.201)机器
- 将本机/opt/file100磁盘(300M)文件共享给node1(192.168.98.201)机器
注意事项:
- 静态IP,(两台IP互通就行,网关和DNS不做要求)
- 都配置主机名及其主机名互相绑定
- 关闭防火墙,selinux
- 时间同步
- 配置好yum(需要加上epel源)
- 在存储导出端模拟存储(模拟存储可以使用多种形式,如硬盘:/dev/sdb,分区:/dev/sdb1,软raid:/dev/md0,逻辑卷:/dev/vg/lv01,dd创建的大文件等等)
实验步骤:
1)创建共享设备
#1、准备一个设备文件
[root@manage01 ~]# dd if=/dev/zero of=/opt/file100 bs=1M count=300
记录了300+0 的读入
记录了300+0 的写出
314572800字节(315 MB)已复制,2.67216 秒,118 MB/秒
#2、查看/dev/sdb是否被占用
[root@manage01 ~]# fdisk -l /dev/sdb
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
2)安装iscsi服务端
[root@manage01 ~]# dnf -y install targetcli
#启动服务
[root@manage01 ~]# systemctl enable target.service
Created symlink from /etc/systemd/system/multi-user.target.wants/target.service to /usr/lib/systemd/system/target.service.
[root@manage01 ~]# systemctl start target
3)共享设备
- 将设备添加到共享库
- 设置IQN标识,创建全球唯一标识设备名
- 设置TPG组中对应的三个问题 谁 从哪里 访问什么设备
3.1、将共享设备添加到共享库
[root@manage01 ~]# targetcli
Warning: Could not load preferences file /root/.targetcli/prefs.bin.
targetcli shell version 2.1.fb46
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.
/> ls
o- / ................................... [...]
o- backstores ..................... [...]
| o- block .............. [Storage Objects: 0]
| o- fileio ............ [Storage Objects: 0]
| o- pscsi ........... [Storage Objects: 0]
| o- ramdisk ................ [Storage Objects: 0]
o- iscsi ......................... [Targets: 0]
o- loopback ....................... [Targets: 0]
备注
/代表存储的根目录
/backstores 代表后端存储,iscsi通过使用文件、逻辑卷或任何类型的磁盘作为底层存储来仿真呈现为目标的scsi设备
block 后端存储是个块设备
fileio 后端存储是一个文件
pscsi 物理scsi设备
ramdisk 后端存储是内存上的空间,在内存上创建一个指定大小的ramdisk设备
可以通过help命令来打印可用命令
#将需要共享的设备加入到backstores共享库中
/> /backstores/block create block1 /dev/sdb
Created block storage object block1 using /dev/sdb.
/> /backstores/fileio create block2 /opt/file100
Created fileio block2 with size 314572800
#查看一下,确认添加成功
/> ls
o- / ...................................... [...]
o- backstores ............................. [...]
| o- block ............. [Storage Objects: 1]
| | o- block1 ...... [/dev/sdb (10.0GiB) write-thru deactivated]
| | o- alua .................... [ALUA Groups: 1]
| | o- default_tg_pt_gp .... [ALUA state: Active/optimized]
| o- fileio ............. [Storage Objects: 1]
| | o- block2 ....... [/opt/file100 (300.0MiB) write-back deactivated]
| | o- alua ................ [ALUA Groups: 1]
| | o- default_tg_pt_gp ........ [ALUA state: Active/optimized]
| o- pscsi ................ [Storage Objects: 0]
| o- ramdisk ................ [Storage Objects: 0]
o- iscsi ............................ [Targets: 0]
o- loopback .......................... [Targets: 0]
/>
3.2、设置IQN标识(共享名)
/> /iscsi create iqn.2019-07.com.test:manage01
Created target iqn.2019-07.com.test:manage01.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
TPG:目标门户组,某个特定iscsi目标将要监听的IP地址和tcp端口的集合。
设置tgp1选项中的acls(访问控制) lun设备(逻辑单元) portals(访问地址及端口)
备注:IQN标识,也就是共享名,必须符合IQN的规范
iqn.年-月.二级域名倒写:主机名称
随便写也可以使用,但是不推荐,如果你随便写的话,在线上环境可能会出问题
创建完成之后,使用ls可以查看到iscsi目录下多了一些内容,除了我们刚才设置的共享名之外呢,还有tpg1,在tpg1下面还包含了三个目录,其中呢tpg1我们可以理解成组,而这个组包含的三个元素,acls用来控制允许谁访问,luns是将谁共享出去,portals是用来定义允许客户端从哪里访问我的设备
3.3、设置TPG组中对应的三个问题 谁 从哪里 访问什么设备
#通过ACL设置允许访问的客户端的iqn,因为iscsi工作的时候看的是iqn名称,所以我们也要给客户端取一个IQN名称
/> /iscsi/iqn.2020-10.com.test:manage01/tpg1/acls create iqn.2020-10.com.test:node1
Created Node ACL for iqn.2020-10.com.test:node1
#将共享库中的磁盘共享,也就是将设备加入到luns中
/> /iscsi/iqn.2020-10.com.test:manage01/tpg1/luns create /backstores/block/block1
Created LUN 0.
Created LUN 0->0 mapping in node ACL iqn.2020-10.com.test:node1
/> /iscsi/iqn.2020-10.com.test:manage01/tpg1/luns create /backstores/fileio/block2
Created LUN 1.
Created LUN 1->1 mapping in node ACL iqn.2020-10.com.test:node1
#默认允许客户端通过服务器任意IP访问,我们改为只允许通过192.168.98.200 port 3260来访问,
/> /iscsi/iqn.2020-10.com.test:manage01/tpg1/portals/ delete 0.0.0.0 3260
Deleted network portal 0.0.0.0:3260
/> /iscsi/iqn.2020-10.com.test:manage01/tpg1/portals create 192.168.98.200 3260
Using default IP port 3260
Created network portal 192.168.98.200:3260.
#设置完成之后执行exit就会自动保存
3.4、查看共享
/> ls
o- / ................................................................................ [...]
o- backstores ..................................................................... [...]
| o- block ......................................................... [Storage Objects: 1]
| | o- block1 ................................. [/dev/sdb (10.0GiB) write-thru activated]
| | o- alua .......................................................... [ALUA Groups: 1]
| | o- default_tg_pt_gp .............................. [ALUA state: Active/optimized]
| o- fileio ........................................................ [Storage Objects: 1]
| | o- block2 ............................ [/opt/file100 (300.0MiB) write-back activated]
| | o- alua .......................................................... [ALUA Groups: 1]
| | o- default_tg_pt_gp .............................. [ALUA state: Active/optimized]
| o- pscsi ......................................................... [Storage Objects: 0]
| o- ramdisk ....................................................... [Storage Objects: 0]
o- iscsi ................................................................... [Targets: 1]
| o- iqn.2020-10.com.test:manage01 .......................................... [TPGs: 1]
| o- tpg1 ...................................................... [no-gen-acls, no-auth]
| o- acls ................................................................. [ACLs: 1]
| | o- iqn.2020-10.com.test:node1 ................................ [Mapped LUNs: 2]
| | o- mapped_lun0 ....................................... [lun0 block/block1 (rw)]
| | o- mapped_lun1 ...................................... [lun1 fileio/block2 (rw)]
| o- luns ................................................................. [LUNs: 2]
| | o- lun0 ............................ [block/block1 (/dev/sdb) (default_tg_pt_gp)]
| | o- lun1 ....................... [fileio/block2 (/opt/file100) (default_tg_pt_gp)]
| o- portals ........................................................... [Portals: 1]
| o- 192.168.98.200:3260 ..................................................... [OK]
o- loopback ................................................................ [Targets: 0]
/>
删除共享设备
删除顺序:倒序
#删除tgp下的三项
/> /iscsi/iqn.2020-10.com.test:manage01/tpg1/portals/ delete 192.168.98.200 3260
Deleted network portal 192.168.98.200:3260
/> /iscsi/iqn.2020-10.com.test:manage01/tpg1/luns/ delete 0
Deleted LUN 0.
/> /iscsi/iqn.2020-10.com.test:manage01/tpg1/luns/ delete 1
Deleted LUN 1.
/> /iscsi/iqn.2020-10.com.test:manage01/tpg1/acls/ delete iqn.2020-10.com.test:node1
Deleted Node ACL iqn.2020-10.com.test:node1.
#删除IQN
/> /iscsi/ delete iqn.2020-10.com.test:manage01
Deleted Target iqn.2020-10.com.test:manage01.
#删除共享库中设备
/> /backstores/block/ delete block1
Deleted storage object block1.
/> /backstores/fileio/ delete block2
Deleted storage object block2.
4)客户端连接共享
- 安装客户端包
- 设置客户端IQN名称
- 连接共享设备
- 共享设备应用(分区、格式化、挂载)
4.1、安装客户端包
[root@node1 ~]# dnf -y install iscsi-initiator-utils
4.2、设置客户端IQN名称
[root@node1 ~]# cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2020-10.com.test:node1
4.3、连接共享设备
iscsiadm
-m,--mode 指定模式,常用的模式有discovery,node
-t,--type 这里可以使用的类型为sendtargets,此选项仅用于discovery模式
-T,--targetname 用于指定target的名字
-p,--portal 指定target服务的IP和端口
-l,--login 登录
-u,--logout 退出
使用方式可以man iscsiadm 搜索examples,里面会有详细的说明
#1、查看目标服务器共享
[root@node1 ~]# iscsiadm --mode discovery --type sendtargets --portal 192.168.98.200 --discover
192.168.98.200:3260,1 iqn.2020-10.com.test:manage01
#2、连接共享设备
[root@node1 ~]# iscsiadm --mode node --targetname iqn.2020-10.com.test:manage01 --portal 192.168.98.200:3260 --login
Logging in to [iface: default, target: iqn.2020-10.com.test:manage01, portal: 192.168.98.200,3260] (multiple)
Login to [iface: default, target: iqn.2020-10.com.test:manage01, portal: 192.168.98.200,3260] successful.
##备注 断开共享方法
Logout:
iscsiadm --mode node --targetname iqn.2020-10.com.test:manage01 --portal 192.168.98.200:3260 --logout
#3、查看连接
[root@node1 ~]# fdisk -l
####发现了两个设备 /dev/sdb /dev/sdc 这就是远程共享过来的设备
4.4、共享设备应用(分区、格式化、挂载)
#分区
##/dev/sdb
[root@node1 ~]# fdisk /dev/sdb <<EOF
n
p
3
+3G
w
EOF
##/dev/sdc
[root@node1 ~]# fdisk /dev/sdc <<EOF
> n
> p
> 4
>
>
> w
> EOF
#格式化
[root@node1 ~]# mkfs.ext4 /dev/sdb3
[root@node1 ~]# mkfs.xfs /dev/sdc4
#开机自动挂载
##建立挂载点
[root@node1 ~]# mkdir /opt/san{1..2}
##修改/etc/fstab文件
[root@node1 ~]# grep "_netdev" /etc/fstab
/dev/sdb3 /opt/san1 ext4 _netdev 0 0
/dev/sdc4 /opt/san2 xfs _netdev 0 0
##挂载
[root@node1 ~]# mount -a
##挂载查看
[root@node1 ~]# mount | grep san
##写入文件,测试权限为读写
[root@node1 ~]# touch /opt/san1/file{1..10}
[root@node1 ~]# ls /opt/san1/
file1 file10 file2 file3 file4 file5 file6 file7 file8 file9 lost+found
[root@node1 ~]# touch /opt/san2/file{a..z}
[root@node1 ~]# ls /opt/san2/
4.5、断开共享
#1、卸载挂载
[root@node1 ~]# umount /opt/san{1..2}
#2、注销连接
[root@node1 ~]# iscsiadm --mode node --targetname iqn.2020-10.com.test:manage01 --portal 192.168.98.200:3260 --logout
#3、以后再也不连接,那就清除记录
[root@node1 ~]# rm -rf /var/lib/iscsi/nodes/iqn.2020-10.com.test\:manage01
[root@node1 ~]# rm -rf /var/lib/iscsi/send_targets/192.168.98.200,3260
#4、删除/etc/fstab文件内容
四、ipsan 多路径存储
4.1、多链路IPSAN部署介绍
单点故障在生产环境中是不被允许的,我们运维在设计架构的时候,如果无法解决单点故障,那么他设计的这个架构就无法满足高可用的需求,自然容灾性就无法谈起。同样我们在设计IPSAN架构的时候,也需要考虑单点故障的问题,因为一旦线路出现了问题,那么业务就会被中断了。这种问题我们是不能容忍的,这节课我就给大家说下如何实现IPSAN多链路共享。
4.2、多链路IPSAN实施
1)实验拓扑图

2)实验步骤
a、配置双链路网络 192.168.10.0 192.168.11.0两个网段线路。
服务器 | 网卡1IP地址 | 网卡2IP地址 |
IPSAN服务器 | 192.168.98.200/24 | 192.168.98.201/24 |
IPSAN客户端 | 192.168.10.100/24 | 192.168.10.236/24 |
实验要求:
关闭selinux
关闭防火墙
保证线路的连通性
b、IPSAN服务器设置设备共享
参考上文2.3 共享一个设备(/dev/sdb)
客户端可以通过访问192.168.10.100:3260 192.168.98.200:3260这两个地址访问共享
共享设备iqn名称:iqn.2020-10.com.test:manage01
客户端的iqn名称为 iqn.2020-10.com.test:node1
[root@manage01 ~]# targetcli
/> /backstores/block create block1 /dev/sdb
/> /iscsi create iqn.2020-10.com.test:manage01
/> /iscsi/iqn.2020-10.com.test:manage01/tpg1/acls create iqn.2020-10.com.test:node1
/> /iscsi/iqn.2020-10.com.test:manage01/tpg1/luns create /backstores/block/block1
/> /iscsi/iqn.2020-10.com.test:manage01/tpg1/portals/ delete 0.0.0.0 3260
/> iscsi/iqn.2020-10.com.test:manage01/tpg1/portals create 192.168.98.200 3260
/> iscsi/iqn.2020-10.com.test:manage01/tpg1/portals create 192.168.10.100 3260
/> exit
4.3、多路径IPSAN客户端挂载
a、客户端连接服务器共享实现容灾有两种方式
1)多路径软件
2)udev
关于多路径软件和udev介绍
多路径软件Device Mapper Multipath概述
多路径软件Device Mapper Multipath(DM-Multipath)可以将服务器节点和存储阵列之间的多条I/O链路配置为一个单独的设备。这些I/O链路是由不同的线缆、交换机、控制器组成的SAN物理链路。Multipath将这些链路聚合在一起,生成一个单独的新的设备。
1.DM-Multipath概览:
(1)数据冗余
DM-Multipath可以实现在active/passive(主动/被动)模式下的灾难转移。在active/passive模式下,只有一半的链路在工作,如果链路上的某一部分(线缆、交换机、控制器)出现故障,DM-Multipath就会切换到另一半链路上。
(2)提高性能
DM-Multipath也可以配置为active/active模式,从而I/O任务以round-robin的方式分布到所有的链路上去。通过配置,DM-Multipath还可以检测链路上的负载情况,动态地进行负载均衡。
udev
udev 是Linux kernel 2.6系列的设备管理器。它主要的功能是管理/dev目录底下的设备节点。udev会根据用户添加/删除硬件的行为,自处理/dev目录下所有设备文件。
本文主要介绍的是IPSAN+多路径软件实现高可用
b、实现步骤
- 安装客户端程序,并启动
- 连接共享设备从两条线路
- 分区格式化
- 安装多路径软件
- 实现多路径负载均衡
- 测试
c、实现步骤
客户端通过两条线路连接共享
#设置客户端iscsi名称
[root@node1 ~]# cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2020-10.com.test:node1
#发现服务端共享设备
[root@node1 ~]# iscsiadm --mode discovery --type sendtargets --portal 192.168.98.200 --discover
[root@node1 ~]# iscsiadm --mode discovery --type sendtargets --portal 192.168.10.100 --discover
192.168.98.200:3260,1 iqn.2020-10.com.test:manage01
192.168.10.100:3260,1 iqn.2020-10.com.test:manage01
#通过两条线路连接共享
[root@node1 ~]# iscsiadm --mode node --targetname iqn.2020-10.com.test:manage01 --portal 192.168.98.200:3260 --login
[root@node1 ~]# iscsiadm --mode node --targetname iqn.2020-10.com.test:manage01 --portal 192.168.10.100:3260 --login
#验证连接
[root@node1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 10G 0 disk
sdc 8:32 0 10G 0 disk
sr0 11:0 1 4.3G 0 rom
发现多了/dev/sdb /dev/sdc两个设备
#分区格式化-对其中一个设备操作就行,表面上看是两个设备,其实是一个。
#分区
##/dev/sdb
[root@node1 ~]# fdisk /dev/sdb <<EOF
n
p
3
+3G
w
EOF
#验证设备
[root@node1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 10G 0 disk
└─sdb3 8:19 0 3G 0 part
sdc 8:32 0 10G 0 disk
└─sdc3 8:35 0 3G 0 part
sr0 11:0 1 4.3G 0 rom
发现有/dev/sdb3 /dev/sdc3 这就是那个设备,因为从两条线路挂载,所以看到的是两个设备
注意:如果发现其中一个没有分区信息,就刷一下分区表
刷新分区表,比如/dev/sdc没有分区信息
[root@node1 ~]# partprobe /dev/sdc
安装多路径软件
#安装多路径软件包
[root@node1 ~]# dnf install device-mapper-multipath -y
#拷贝例子配置文件
[root@node1 ~]# cp /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf /etc/
#启动服务
[root@node1 ~]# systemctl enable multipathd;systemctl start multipathd
#启动成功后再次验证
[root@node1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 10G 0 disk
└─mpatha 253:2 0 10G 0 mpath
└─mpatha3 253:3 0 3G 0 part
sdc 8:32 0 10G 0 disk
└─mpatha 253:2 0 10G 0 mpath
└─mpatha3 253:3 0 3G 0 part
sr0 11:0 1 4.3G 0 rom
发现两个设备发生了变化,统一了名字
#查看多路径配置
[root@node1 ~]# multipath -ll
mpatha (3600140562f2f59614024a3e9cbf7ecc7) dm-2 LIO-ORG ,block1
size=10G features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=1 status=active #活动
| `- 5:0:0:0 sdb 8:16 active ready running
`-+- policy='service-time 0' prio=1 status=enabled #备份
`- 6:0:0:0 sdc 8:32 active ready running
3600140562f2f59614024a3e9cbf7ecc7 (远程存储设备id)dm-2 LIO-ORG(厂商) block1的ID
默认提供的是AB备份线路,不是负载均衡线路
#我们可以通过修改配置文件来设置为负载均衡线路
[root@node1 ~]# cat /etc/multipath.conf
multipaths {
multipath {
wwid 3600140562f2f59614024a3e9cbf7ecc7 填写你的block1的ID
alias multipath_study
#别名随便起,有意义就行
path_grouping_policy multibus
#路径分组策略,其中,“failover” 表示一条路径一个组(默认值);“multibus”表示所有路径在一个组;默认failover
path_selector "round-robin 0"
#路径选择算法,其中,“round-robin 0”表示在多个路径间不断循环;“queue-length 0”表示选择当前处理IO数最少的路径;"service-time 0" 选择耗时时间最短的路径;默认"service-time 0"
failback manual
#恢复路径的方法,其中,“Immediate”表示立即恢复到包含活动路径的高优先级路径组;“manual”表示手动恢复(默认值);
rr_weight priorities
#路径选择算法的权重,只能用在round-robin算法上
no_path_retry 5
#当所有路径都关闭时执行的工作,如果是大于0的值,则表示禁用I/O队列前的重试次数,fail立即标记为故障,queue不停止I/O队列(进行排队) 默认值为fail
}
}
#重启服务生效
[root@node1 ~]# systemctl restart multipathd
#再次验证
[root@node1 ~]# multipath -ll
multipath_study (3600140562f2f59614024a3e9cbf7ecc7) dm-2 LIO-ORG ,block1
size=10G features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
|- 5:0:0:0 sdb 8:16 active ready running
`- 6:0:0:0 sdc 8:32 active ready running
4.4、故障测试
- 挂载设备,写入数据
- 断开一个线路,测试数据读写
#挂载设备,写入数据
[root@node1 ~]# mkdir /opt/mpath
[root@node1 ~]# mkfs.ext4 /dev/mapper/multipath_study1
[root@node1 ~]# mount -o _netdev,rw /dev/mapper/multipath_study3 /opt/mpath/
[root@node1 ~]# mount|egrep "/opt/mpath"
/dev/mapper/multipath_study3 on /opt/mpath type ext4 (rw,relatime,stripe=1024,data=ordered,_netdev)
[root@node1 ~]# echo "`date`" > /opt/mpath/file
#断开一个线路,测试数据读写
[root@node1 ~]# ifconfig ens37 down
[root@node1 ~]# multipath -ll
Feb 26 04:15:04 | /etc/multipath.conf line 99, invalid keyword: path_checker
Feb 26 04:15:04 | sda: fail to get serial
multipath_study (36001405f1f567c3865b42eab2274ec6c) dm-2 LIO-ORG,block1
size=20G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=50 status=active
| `- 3:0:0:0 sdb 8:16 active ready running
`-+- policy='service-time 0' prio=0 status=enabled
`- 4:0:0:0 sdd 8:48 failed faulty running
发现该线路错误
#对共享存储中的数据读写测试
[root@node1 ~]# cat /opt/mpath/file
2019年 07月 06日 星期六 13:05:00 EDT
[root@node1 ~]# date >> /opt/mpath/file
[root@node1 ~]# cat /opt/mpath/file
2019年 07月 06日 星期六 13:05:00 EDT
2019年 07月 06日 星期六 13:06:32 EDT
ok!一切正常
章总结
存储的概念、类型、分类
linux存储的分层
本地存储与共享存储
SAN存储介绍及ISCSI
多路径存储的实现
重点:存储的概念、分类及类型、存储的发展历程和阶段、如何使用ISCSI、多路径存储的优势、部署、使用
难点:理解存储的分类和类型,理解存储的发展历程和不同阶段,如何部署并设置ISCSI,如何实现多路径存储
3分钟了解计算机发展历史-组团学
[注:本文部分图片来自互联网!未经授权,不得转载!每天跟着我们读更多的书]
互推传媒文章转载自第三方或本站原创生产,如需转载,请联系版权方授权,如有内容如侵犯了你的权益,请联系我们进行删除!
如若转载,请注明出处:http://www.hfwlcm.com/info/21528.html