快捷搜索:

存储-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、本地存储时代:

  1. 单机最开始的时候,由于互联网中的用户比较少,早期能接触到计算机的人基本上都是非富即贵,再或者是科研及教育人员,所以计算机产生的数据非常的少,所以很多公司的业务服务器都是部署在一台机器,甚至一台机器部署多个web业务(虚拟主机业务).单机实现简单,用户上传只需一个FTP就能成功将的文件写入指定目录。数据保存和访问起来倒是也很方便,但是上传方式混乱,严重不利于网站的扩展。
  2. 大集群

访问量上升,单台服务器的业务压力会越来越大,磁盘空间、IO瓶颈、并发处理能力等等问题就凸显出来了。

针对上述最原始的架构,主要面临着如下问题: 1)随着网站目录中文件越来越多,所在分区(例如/data分区)如果出现容量不足,则很难扩容。只能停机后更换更大容量的存储设备,再将旧数据导入。 2)在更新应用数据和日常备份的时候,需要同时操作所有主机应用所涉及的目录中的文件,

为了解决这个问题,我们采用了集群架构。我们在负载均衡后边部署由多台应用服务器组成的负载均衡集群(如web集群),由于数据存放在每台业务机的硬盘中,所以集群节点之间如何做好文件实时同步将是个难题,虽然可以使用rsync实现数据同步,但是无法做到实时同步,而且还受到到其它因素影响,如网络

2.2、共享存储时代

经历了本地存储的两个阶段之后,人们又发现在生产环境中随着数据的增长,业务机器的磁盘会越来越紧张,要面临着空间和IO的双重压力,为了给业务服务器减负,对架构架构进行了重新优化,将数据分离出来。在业务架构中加入了共享存储服务器,我们将所有公共数据或者高速增长的数据统一存储在共享存储中,由共享存储统一管理,实现高效读写和容灾。

  1. 独立的存储服务器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)机器

注意事项

  1. 静态IP,(两台IP互通就行,网关和DNS不做要求)
  2. 都配置主机名及其主机名互相绑定
  3. 关闭防火墙,selinux
  4. 时间同步
  5. 配置好yum(需要加上epel源)
  6. 在存储导出端模拟存储(模拟存储可以使用多种形式,如硬盘:/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