iscsi(共享存储)

文章目录

  • iscsi(共享存储)
    • 了解什么是共享存储以及工程存储的必要性
      • 利用交换机使用集群
      • 利用网络使用集群
    • 配置iscsi服务器端
      • 1、先在虚拟机中添加一块新的硬盘
      • 2、创建分区:fdisk 设备名
      • 3、安装targetcli:yum -y install targetcli*
      • 4、进入子系统:targetcli
      • 5、iscsi中添加硬盘信息
      • 6、创建iscsi
      • 7、进入新建的新建的iscsi目录
      • 8、创建acls(配置访问控制)
      • 9、luns里添加设备
      • 10、portals(端口)
      • 11、重启服务:systemctl restart target
      • 12、防火墙设置
      • 配置完毕后exit退出报错:
    • 配置iscsi客户端
      • 1、安装iscsi的包: yum -y install iscsi*
      • 2、 vi /etc/iscsi/initiatorname.iscsi
      • 3、重启服务并设置开机自启动
      • 做一个发现的操作,发现target的名字
      • 把服务器端配置的硬盘添加到客户端(也就是登陆):
      • 登陆报错处理
      • 退出登陆
    • 挂载iscsi(要做发现和登陆以后再挂载)
    • 客户端配置扩展实验

iscsi(共享存储)

了解什么是共享存储以及工程存储的必要性

共享存储如同其名字所隐喻的,是物理存储器中一段可由两个以上的进程共享的存储空间。共享存储段具有大小和物理存储地址。想要访问共享存储段的进程可以连接这段存储区域到自己的地址空间中任何适合的地方,其他进程也一样。这样,多个进程便可以访问相同的物理存储。
iscsi(共享存储)_第1张图片
如上图:准备迁移

  1. 首先把vm01这个虚拟机的内存克隆一份出来(123),通过迁移网络发送到指定的rhevh上来,此时虚拟机还是在再rhevh1上运行的。
  2. 因为vm001还是在rhevh1上运行的,既然是正在运行的,所以内存里的数据肯定也是在不停的发生变化的比如多了456这些数据
    从123开始备份,456这些新的数据都没有出现在rhevh2上
    这之间要做个标记,这个标记叫做bitmap(位图)
    bitmap之后产生的数据一般是极少的
  3. 暂停vm001这个虚拟机,把bitmap之后所产生的数据发送到rhevh2上来,这样rhevh2上就有了所有的数据,且因为bitmap之后所产生的数据很少,所以很快就传输完了
  4. vm001在rhevh2上开始运行
  • 存储类型分为3大类:1、文件存储 2块存储 3、对象存储
    1、文件存储类似于我们共享一个文件夹
    NFS/SAMBA/ftp
    NAS-网络区域存储
    2、块存储: 把一个硬盘/分区 直接 给你共享出去
    fs
    iscsi
    SAN—存储区域网
    DAS—直接附加存储(性能低下)
    3、对象存储: 给你一个很大的空间,但这个空间是由很多硬盘组成的(这些硬盘不一定是一个机器上的),其中一个硬盘可以理解为一个osd,每个osd又由很多pg组成,如现在需要读取(或写入)1G的信息,其中每个osd有200M,这样读取速度就会很快。
    iscsi(共享存储)_第2张图片

组成集群的每个服务器–称之为 节点(node)
集群是由若干存储服务器组成(只有系统和硬盘,加入集群中)

利用交换机使用集群

下图node1和node2是主备模式,node1坏了自动切换到node2,node1和node2中的sdb盘的内容都是集群中的sdb1盘里的内容,所以node1坏了数据并不会丢失,也可以配置成 高性能模式(双活),高性能的集群可以理解为“读写分离”,其本质是将访问压力分散到集群中的多个节点,但是没有分散存储压力。
iscsi(共享存储)_第3张图片

利用网络使用集群

交换机很贵 一个也要几十上百万,所以 一般小企业是不会用交换机作为中转的,而是用网络
在node节点上看到的实际上和本地硬盘一模一样,也和本地硬盘一样的正常使用,但实际数据是存放在集群中的。
比如在node1上给sdb硬盘分区,被分区的硬盘实际是集群中的硬盘,因为node2和node1都是共享集群中的硬盘,所以在node1上分区硬盘后,node2上看到的硬盘也被分区了,所以需要分区硬盘只需要在一个节点上执行,如果node1上分区了再去node2上分区,会损坏磁盘数据。
iscsi(共享存储)_第4张图片
上图中一个接口称之为一个lun,target中分配了多少个lun,node中就能读取到多少个硬盘。
其中fc-san就是交换机
iscsi-ip.san就是网络

配置iscsi服务器端

1、先在虚拟机中添加一块新的硬盘

iscsi(共享存储)_第5张图片
然后创建分区,就是sdx1。。。这种
iscsi(共享存储)_第6张图片

2、创建分区:fdisk 设备名

创建完毕后刷新一下:partprobe 设备名
iscsi(共享存储)_第7张图片

3、安装targetcli:yum -y install targetcli*

安装完毕后启动target服务并设置开启自启:

systemctl start target   
systemctl enable target 

iscsi(共享存储)_第8张图片

4、进入子系统:targetcli

注意 在子系统中的根目录 并非系统的根目录,而是子系统的根。
iscsi(共享存储)_第9张图片
根目录中对应的关系如下图:
iscsi(共享存储)_第10张图片

5、iscsi中添加硬盘信息

  • iscsi中添加硬盘信息格式:/backstores/block create 自定义名称 设备名
    如:/backstores/block create block1 /dev/sda4(查看硬盘lsblk)
    iscsi(共享存储)_第11张图片
    iscsi(共享存储)_第12张图片
  • 删除添加的硬盘:/backstores/block delete 自定义的名称
    如:/backstores/block delete block1
    iscsi(共享存储)_第13张图片
    重新创建2个block后面要用:/backstores/block create block1 /dev/sda5/backstores/block create block2 /dev/sda6
    因为需要2块,所以我把之前的主分区sda4删了多建了几个逻辑分区:lsblkiscsi(共享存储)_第14张图片
    iscsi(共享存储)_第15张图片

6、创建iscsi

  • 创建iscsi格式为:/iscsi create 格式.年份-月份.*.com.自定义名称 (.*和.自定义名称两者必需有其一)
    如:/iscsi create iqn.2019-12.com.example.disk
  • 删除iscsi:/iscsi delete 已创建的全名称
    如:/iscsi delete example.disk
    iscsi(共享存储)_第16张图片
    注:如果创建iscsi格式不对,会报错,无法创建成功:
    iscsi(共享存储)_第17张图片
    创建一个iscsi 后面要用:/isisc create iqn.2019-12.com.disk

7、进入新建的新建的iscsi目录

如进入之前创建iscsi目录的:cd /iscsi/iqn.2019-12.com.disk/tpgl
iscsi(共享存储)_第18张图片

8、创建acls(配置访问控制)

  • 新增acls
    acls是配置访问控制(即设置访问服务客户端声称的名字),就是说想要哪个ip或者ip段可以使用这个iscsi存储,格式为:/iscsi/iqn.2018-08.com.example.district18:system1/tpg1/acls/ create iscsi名称:允许的ip或者主机名 ,如果默认所有人都可以访问,那么这个可以不配置。
    如:我只允许10.233.3.226这个ip访问我: /iscsi/iqn.2018-08.com.example.district18:system1/tpg1/acls/ create iqn.2018-08.com.example.district18:10.233.3.226

  • 删除acls:acls/ delete 创建的全称 (如果不在acls目录下,需要完整地址,如:/iscsi/iqn.2018-08.com.example.district18:system1/tpg1/acls)
    iscsi(共享存储)_第19张图片
    创建一个后面要用:acls/ create iqn.2019-12.com:ccx (ccx是一台服务器的主机名)

9、luns里添加设备

因为iscsi是虚拟的,所以需要指定设备,所以需要在luns里先添加设备(block中的硬盘)

  • 新增格式为:luns/ create /backstores/block/添加的名称
    如:我之前添加硬盘名词是block1和block2:luns/ create /backstores/block/block1 , luns/ create /backtores/block/block2
    iscsi(共享存储)_第20张图片
  • luns里删除设备 luns/格式: delete lun* (ls查看序号,lun可以不要,直接跟序号即可)
    如:我刚才创建了2个 就是lun0和lun1,所以:luns/ delete lun0 , luns/ delete lun1iscsi(共享存储)_第21张图片
    创建2个待会要用:luns/ create /backstores/block/block1 , luns/ create /backstores/block/block2

10、portals(端口)

portals的默认端口是3260,且对所有ip生效:ls可以查看portals,luns下面是portals,这就是端口,0.0.0.0 3260 意思是 3260端口是对所有ip开放的:
iscsi(共享存储)_第22张图片

  • 指定端口或ip
    说明: poerals的ip是自己(服务端)的IP, 指定IP和0.0.0.0的区别是:如果服务端有多个ip,0.0.0.0就全部放开了,但如果服务端只有一个IP,指定IP和0.0.0.0就没有区别!
    如果需要指定ip和端口,格式为:完整路径/portals/ create ip_address=ip ip_port=port
    如:我把10.233.3.226的端口指定为666:portals/ create ip_address=10.233.3.226 ip_port=666(注:我现在在portals目录下,如果不在portals目录,需要完整路径,如:/iscsi/iqn.2018-08.com.example.district18:system1/tpg1/portals
  • 可以删除该条目:portals/ delete 0.0.0.0 ip_port=port
    如:删除 0.0.0.0 的全部端口开放:portals/ delete 0 0 0 0 ip_port=3260
    如:下图中的 10.233.3.227 3260(就是只对227这个ip开放该端口,注意,226和227都是在同一个服务器上的ip)
    iscsi(共享存储)_第23张图片
    改回对所有ip开放3260端口:portals/ create 0.0.0.0 3260iscsi(共享存储)_第24张图片

11、重启服务:systemctl restart target

12、防火墙设置

如果防火墙是打开的,需要把3260端口添加到防火墙:

firewall-cmd  --add-port=3260/tcp    
firewall-cmd  --add-port=3260/tcp --permanent

iscsi服务端就配置完成了,exit退出。

配置完毕后exit退出报错:

如果配置过程中很顺利没有报错,但exit退出时报错,首先考虑是不是版本问题,cat /etc/redhat-release 查看当前版本,然后在查看你挂载的源是不是和版本同一个版本,如果是网络源 基本上不会因为版本导致exit报错。
版本和本地源一样的意思如下图:
在这里插入图片描述
退出后第三句话提示 文件已经保存到该文件下,就是说,如果我要更改acls中创建的名称,直接到该目录下定位到改行,直接改即可(就不需要再进入到子系统删除后重新建):vi /etc/target/saveconfig.json
在这里插入图片描述
注:修改后需要重启服务后生效:systemctl restart target

配置iscsi客户端

1、安装iscsi的包: yum -y install iscsi*

2、 vi /etc/iscsi/initiatorname.iscsi

把*Name=后面改为之前定义的acls名称(查看服务端配置的acls :targetcli (进入子系统后),ls / 即可看到)
iscsi(共享存储)_第25张图片
在这里插入图片描述

3、重启服务并设置开机自启动

systemctl restart iscsid  ,
systemctl enable iscsid

在这里插入图片描述

做一个发现的操作,发现target的名字

iscsiadm -m discovery -t st -p 服务器ip
如:我的服务器ip是226(现在客户端ip是225):iscsiadm -m discovery -t st -p 10.233.3.226
在这里插入图片描述
一开始我添加是报错的(no route to host)报错如下图:
iscsi(共享存储)_第26张图片
报错解决:我去看了 /etc/hosts里面,没有添加解析,我添加了解析后重试 依然报错,然后查看当前防火墙,发现是打开的,我就把防火墙关了依然不行,我就去看服务器的防火墙,依然是打开的,把服务器防火墙关闭后,成功。因为这是测试机 我以为我的防火墙是关闭的,就没有添加3260端口,所以如果防火墙必须打开,把端口添加进去即可。 下图 是查看防火墙以及关闭防火墙:
iscsi(共享存储)_第27张图片

  • 查看已经连接的设备:iscsiadm -m session
  • 查看发现纪录:iscsiadm -m discovery
  • 删除发现纪录:iscisadm -m discovery -p 服务端ip -o delete
    在这里插入图片描述
    重新做一个发现纪录 待会要用:iscsiadm -m discovery -t st -p 10.233.3.226

把服务器端配置的硬盘添加到客户端(也就是登陆):

不指定组登陆:iscsiadm -m discovery -t st -p 服务器ip -l (L)(不建议用)
指定iscsi组登陆:iscsiadm -m node -T iscsi名称 -p 服务器ip -l(是小L)
添加之前先查看客户端硬盘信息:lsblk,只有sda
iscsi(共享存储)_第28张图片
查看iscsi名称:targetcli(进入子系统后),ls / 即可看到:
iscsi(共享存储)_第29张图片
以我的为例,不指定组登陆:iscsiadm -m discovery -t st -p 10.233.3.226 -l (很方便 很好记,ip后面不加-l 就是查看,加-l就是登陆)
指定组登陆:iscsiadm -m node -T iqn.2019-12.com.disk -p 10.233.3.226 -l
登陆之前lsblk看不到服务器的硬盘,登陆成功以后lsblk就会看到服务器配置的硬盘信息了。
iscsi(共享存储)_第30张图片

登陆报错处理

  • 登陆报错截图
    在这里插入图片描述
  • 处理:
    只有一个原因,客户端 vi /etc/iscsi/initiatorname.iscsi里面的路径指定错误,指定的是acls的名称,去检查是不是指定为iscsi的名称了:
    iscsi(共享存储)_第31张图片

退出登陆

不想用已添加的硬盘了,退出登陆即可:iscsiadm -m node -T iscsi名词 -p 服务器ip -u (如果有多组,退出指定组) ,iscsiadm -m node --logoutall=all / iscsiadm -m node -u ALL (2个均为注销所有连接)
如:iscsiadm -m node -T iqn.2019-12.com.disk -p 10.233.3.226 -u
iscsi(共享存储)_第32张图片
注销后只是相当于退出登陆,但重启后共享存储又存在了,所以需要删除存储硬盘:

  • 删除所有:iscsiadm -m node -o delete
  • 删除指定组:iscsiadm -m node -T iscsi名称 -p 服务器ip -o delete

挂载iscsi(要做发现和登陆以后再挂载)

分区:fdisk 设备名 (注意,这个设备名是iscsi分享的设备名,不是本地设备)
格式化:mkfs.ext4(xfs) 设备名(注意,这个设备名是iscsi分享的设备名,不是本地设备
临时挂载:mount 格式化后的设备名 挂载路径
命令:
iscsi(共享存储)_第33张图片
iscsi(共享存储)_第34张图片
上述是临时挂载,如果需要永久挂载,需要吧信息写入到fsteb中,和本地硬盘一样,但在第四项,需要加上_netdev必须加上,不然开机系统不能正常启动(因为不加_netdev就是在本地找硬盘分区,但本地并不存在这个硬盘分区,所以系统起不来)。
在这里插入图片描述
上诉操作做完以后,整个共享存储从配置到使用就完成了,但lsblk看到的共享存储盘,重启是会自动加载到本机的,如果只想用一次性,不需要重启生效,去配置文件中把自动挂载注释掉:
vi /etc/iscsi/iscsid.conf
在这里插入图片描述

客户端配置扩展实验

扩展实验,就是说,我在服务器上配置了2组iscsi,想在客户端把这2组都配上去,经过种种实验,最终发现 ,客户端配置文件中,不允许同时写入两个秘钥;详细如下图:
服务器配置,2组iscsi:
iscsi(共享存储)_第35张图片
客户端配置:先写入文件vi /etc/iscsi/initiatorname.iscsi
在这里插入图片描述
重启:systemctl restart iscsid
发现:iscsiadm -m discovery -t st -p 10.233.3.226
iscsi(共享存储)_第36张图片
登陆:iscsiadm -m discovery -t st -p 10.233.3.226 -l (挂载所有)
iscsi(共享存储)_第37张图片
原因:系统只认配置文件/etc/iscsi/initiatorname.iscsi的其中一组,但这种情况想把2组都挂上去怎么弄呢!
刚才执行全部登陆的时候成功了一组,所以我们现在去配置文件中把成功的那组注释掉,重启服务,再次挂载即可!!
如:我刚才成功的是new,现在去配置文件把new注释掉,然后重启服务:
在这里插入图片描述
再次登陆,哈哈哈,成功了。我真是鬼才

为了测试能正常使用,我分区 格式化并挂载了/etc/iscsi/initiatorname.iscsi文件中已经注释的文件,证明该方法 能用
iscsi(共享存储)_第38张图片
当lsblk能看到硬盘以后,即全部配置完成,然后就可以正常使用了,但需要分区,格式化然后挂载目录,因为现在看到的其实是新盘,也就是相当于重新添加的硬盘。 (分区格式化挂载就不一一说明了)
查看完整名称:fdisk -l
iscsi(共享存储)_第39张图片
分区:fdisk 设备名
格式化:mkfs.ext4(xfs) 设备名
临时挂载:mount 设备名 挂载路径
命令:
iscsi(共享存储)_第40张图片
iscsi(共享存储)_第41张图片
上述是临时挂载,如果需要永久挂载,需要吧信息写入到fsteb中,和本地硬盘一样,但在第四项,需要加上_netdev,必须上,不然开机系统不能正常重启。
在这里插入图片描述
上诉操作做完以后,整个共享存储从配置到使用就完成了,但lsblk看到的共享存储盘,重启是会自动加载到本机的,如果只想用一次性,不需要重启生效,去配置文件中把自动挂载注释掉:
vi /etc/iscsi/iscsid.conf
在这里插入图片描述
查看已连接设备:
查看已经连接的设备:iscsiadm -m session
在这里插入图片描述
查看详细:iscsiadm -m session -P1 (1可替换为1,2,3,1-3分别代表详细程度)
iscsi(共享存储)_第42张图片

你可能感兴趣的:(linux,or,运维)