一、ISCSI构建
### --- 实验环境规划
~~~ HA-server1:10.10.10.11:ISCSI服务器端:2块磁盘,另外一块作为共享磁盘
~~~ HA-server2:10.10.10.12:ISCSI客户机端
二、实验构建.临时配置
1、LVM的整合
### --- LVM的整合:是多余的操作,在生产环境中,
~~~ 是通过硬raid把多块磁盘整合在一起的,所以在装完操作系统之后,
~~~ 分了一个单独的空间叫做LVM或者ISCSI,ISCSI这个/根下的这个目录分了90GB的存储资源,
~~~ 拿这个空间去做ISCSI的共共享存储
### --- 对于ISCSI设备来说:它可以使用的是一个:已格式化的分区 单独块 目录 都是可以的,
### --- 共享是多样的。只要是能提供存储能力的,都是可以作为共享设备来使用。
[root@server11 ~]# fdisk -l
Disk /dev/sdb: 107.4 GB, 107374182400 bytes
[root@server11 ~]# pvcreate /dev/sdb // 创建逻辑卷/dev/sdb
Physical volume "/dev/sdb" successfully created
[root@server11 ~]# vgcreate vg0 /dev/sdb // 创建卷组,名称为vg0
Volume group "vg0" successfully created
[root@server11 ~]# lvcreate -L 5G -n lv0 vg0 // 创建逻辑卷:-L 5G:空间为5G,-n lv0:名称为lv0 vg0:从vg0里创建
Logical volume "lv0" created.
[root@server11 ~]# mkfs.ext4 /dev/vg0/lv0 // 该命令等同于mkfs -t ext4 /dev/vg0/lv0 //对创建的逻辑卷进行格式化
[root@server11 ~]# fdisk -l
Disk /dev/mapper/vg0-lv0: 5368 MB, 5368709120 bytes
2、在target端创建LQN标签:在HA-server1:10.10.10.11服务器端安装ISCSI的服务器端软件
### --- 安装服务器端软件scsi-target
[root@server11 ~]# yum install -y scsi-target-utils // 安装包,创建ISCSI对象
[root@server11 ~]# service tgtd start // 开启服务 tgtd:ISCSI服务的服务器端名称
Starting SCSI target daemon: [ OK ]
[root@server11 ~]# netstat -anpt |grep tgtd // 查看服务是否开启
tcp 0 0 0.0.0.0:3260 0.0.0.0:* LISTEN 2312/tgtd
tcp 0 0 :::3260 :::* LISTEN 2312/tgtd
### --- 创建对应的LQN标签
[root@server11 ~]# tgtadm -L iscsi -o show -m target // 查看target创建的信息;什么信息都没有输出
[root@server11 ~]# date
Sun Jan 24 07:20:59 CST 2021
[root@server11 ~]# tgtadm -L iscsi -o new -m target -t 1 -T iqn.2021-01.com.ityanqi.www.roc //创建对应的LQN标签:
~~~ tgtadm -L (制定驱动类型) iscsi -o(制定操作类型)new -m(制定管理的对象) target -t(制定当前存储资源ID号)1(这个ID号可以从6开始,也可以从8开始,也可以从1开始,随机的,只要不冲突即可) -T (制定iqn标签,命名规则:iqn创建年-月.域名反写:自定义)iqn.2016-2.com.xdl.www.lvm
~~~ LUN:逻辑单元;去划分存储能力的,如果有多个逻辑存储单元,它上面会打一个标签,该标签就是LQN标签,这是对于服务器来说的。
~~~ 对于客户端来:它需要去访问LQN标签的方式去确定它的存储设备有那几个。LQN标签命名规则:制定iqn标签,命名规则:iqn创建年-月.域名反写:自定义)iqn.2016-2.com.xdl.www.lvm
[root@server11 ~]# tgtadm -L iscsi -o show -m target // 查看target创建的信息;创建的LQN标签
Target 1: iqn.2021-01.com.ityanqi.www.roc
System information: // 系统属性
Driver: iscsi // 驱动iscsi
State: ready // 状态:准备了,已就绪
I_T nexus information:
LUN information:
LUN: 0 // 划分存储单元的,存储能力的
Type: controller // 类型
SCSI ID: IET 00010000
SCSI SN: beaf10
Size: 0 MB, Block size: 1 // 结果size是0MB,原因是:该是存储控制类型,专门是做控制的,而不是做真正存储能力的。
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: null
Backing store path: None
Backing store flags:
Account information:
ACL information:
3、绑定IQN标签到存储设备
[root@server11 ~]# tgtadm -L iscsi -o new -m logicalunit -t 1 -l 1 -b /dev/vg0/lv0 //tgtadm -L iscsi指定类型为iscsi类型 -o new:-o指定是一个new操作 -m logicalunit:-m指定是一个logicalunit逻辑存储单元 -t 1:-t指定要把这个存储单元绑定到哪一个LQN标签上,标签是1 -l:-L指的是logicalunit也就是LUN的ID号1, -b:指定的是存储设备/dev/vg0/lv0:逻辑卷
~~~ tgtadm -L (指定驱动类型)iscsi -o new -m (管理的对象)logicalunit -t (tat标签)1 -l(逻辑存储单元的标签)1-b(设备名称) /dev/vg0/lv0
[root@server11 ~]# tgtadm -L iscsi -o show -m target
Target 1: iqn.2021-01.com.ityanqi.www.roc
System information:
Driver: iscsi
State: ready
I_T nexus information:
LUN information:
LUN: 0
Type: controller
SCSI ID: IET 00010000
SCSI SN: beaf10
Size: 0 MB, Block size: 1
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: null
Backing store path: None
Backing store flags:
LUN: 1 // 这里多了一个LUN:1
Type: disk // 类型为disk,磁盘类型
SCSI ID: IET 00010001
SCSI SN: beaf11
Size: 5369 MB, Block size: 512 // 空间大小为5G左右,之前共享的lv0空间大小
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: rdwr // 操作类型,可读可写可执行
Backing store path: /dev/vg0/lv0 // 给LUN提供存储能力的设备:/dev/vg0/lv0
Backing store flags:
Account information: // 访问控制列表:指定用户 //在这两行什么都不操作,对所有的客户端或者网段都是运行去使用该存储设备的,只要它知道这个存储的名称即可。是不太安全的
ACL information: // 控制列表:指定IP或者是网段,也是访问控制列表 //这两行设定是空的,什么都没有设定
[root@server11 ~]# tgtadm -L iscsi -o bind -m target -t 1 -I 10.10.10.12 // tgtadm -L iscsi -o bind:-o动作类型为bind绑定 -m target:-m绑定的是target端 -t 1:-t绑定target的ID号 -I 10.10.10.12 :-I指定IP地址绑定给谁去使用
[root@server11 ~]# tgtadm -L iscsi -o show -m target
Account information:
ACL information:
10.10.10.12 // 控制列表发现多了10.10.10.12这台服务器,那么10.10.10.12就可以使用了
4、客户端配置:HA-server2:10.10.10.12
### --- 安装iscsi-initiator-utils
[root@server12 ~]# yum install -y iscsi-initiator-utils
### --- 发现块设备,并登录到该块设备,并为该块设备挂载目录,创建文件系统,并写入数据
[root@server12 ~]# iscsiadm -m discovery -t st -p 10.10.10.11 // iscsiadm -m discovery:发现探索一下 -t st:-t指定操作类型为st扫描类型 -p(指定需要扫描的服务器IP地址)10.10.10.12
Starting iscsid: [ OK ]
10.10.10.11:3260,1 iqn.2021-01.com.ityanqi.www.roc // 扫描出一个LQN标签,端口是3260,1是ID号,IQN标签:iqn.2021-01.com.ityanqi.www.roc
[root@server12 ~]# iscsiadm -m node -T iqn.2021-01.com.ityanqi.www.roc --login //--login表示登录操作,-m:node节点,-T指定iqn标签
Logging in to [iface: default, target: iqn.2021-01.com.ityanqi.www.roc, portal: 10.10.10.11,3260] (multiple)
Login to [iface: default, target: iqn.2021-01.com.ityanqi.www.roc, portal: 10.10.10.11,3260] successful. //出现了successful表示
[root@server12 ~]# fdisk -l
Disk /dev/sdc: 5368 MB, 5368709120 bytes // 该服务器下多了一个块存储,且大小刚好是5个GB,在11设备这个人块是5369,而在这边是5368,它是需要创建存储块的目录,占用了1MB
[root@server12 ~]# fdisk /dev/sdc // 为这个块设备分区
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1018, default 1):
Last cylinder, +cylinders or +size{K,M,G} (1-1018, default 1018):
Command (m for help): w
[root@server12 ~]# fdisk -l
Device Boot Start End Blocks Id System
/dev/sdc1 1 1018 5238597 83 Linux
[root@server12 ~]# mkfs.ext4 /dev/sdc1
[root@server12 ~]# mkdir /iscsi
[root@server12 ~]# mount -t ext4 /dev/sdc1 /iscsi/
[root@server12 ~]# cd /iscsi/
[root@server12 iscsi]# ls
lost+found // lost+found是典型的块设备去缓存的目录
[root@server12 iscsi]# touch 1
[root@server12 iscsi]# vim 1
[root@server12 iscsi]# cat 1
this is HA-server2:10.10.10.12 iscsi-client
### --- 移除登录的块设备,并退出登录(卸载)流程
[root@server12 ~]# umount /iscsi/ // 解除挂载,
[root@server12 ~]# iscsiadm -m node -T iqn.2021-01.com.ityanqi.www.roc --logout
Logging out of session [sid: 1, target: iqn.2021-01.com.ityanqi.www.roc, portal: 10.10.10.11,3260]
Logout of [sid: 1, target: iqn.2021-01.com.ityanqi.www.roc, portal: 10.10.10.11,3260] successful. //登出successful
[root@server12 ~]# fdisk -l // 发现/dev/sdc1这块盘已经没有了
### --- 重启一下HA-server1节点
[root@server11 ~]# service tgtd start
[root@server11 ~]# tgtadm -L iscsi -o show -m target // 重启后show的情况下为空,之前没有创建IQN标签的时候show的时候就是空的。重启之后消失,说明之前的操作都是非持久化的过程
三、持久化配置
1、HA-server1下:10.10.10.11:ISCSI服务端-永久生效-配置文件修改方式
### --- 重点:Linux/Unix中需要持久化设置,只有在文件中保存才能确保设置持久化,但是之前的操作都是基于命令行的,不会被保存在配置文件中的。所以之前的操作都是临时的。
### --- 查看新加的磁盘
[root@server11 ~]# fdisk -l
Disk /dev/sdb: 107.4 GB, 107374182400 bytes // 第二种方案,该块不做lvm整合,直接把这个块共享出去
### --- 安装服务器端软件scsi-target
[root@server11 ~]# yum install -y scsi-target-utils // 安装包,创建ISCSI对象
### --- 修改ISCSI服务的配置文件 // 配置文件修改方式-永久生效(生产环境使用)
[root@server11 ~]# ls /etc/tgt/targets.conf // 该文件就是ISCSI服务的配置文件
<target iqn.2021-01.com.ityanqi.www.sdb> // 配置共享磁盘 //iqn标签 //iqn号命名遵循qin命名规则
<backing-store /dev/sdb> // 配置发行商(任意)//提供的设备/dev/sdb直接把块提供给它
vendor_id ityanqi // 发行商,ityanqi:描述信息,没有太多的含义
lun 6 // 配置LUN号 //lun是指定lun的ID号,可以不从1开始,可以自定义去写
</backing-store>
incominguser iscsiuser iscsiuser // 配置认证的用户名和密码//提供认证的用户名及密码,自己可以定义,用户名和密码都是iscsiuser。更安全了
initiator-address 10.10.10.0/24 // 配置允许的网段//放行的一个网段
</target>
### --- 启动ISCSI服务的启动程序tgtd并设置开机自启,并查看配置是否生效
[root@server11 ~]# vim /etc/tgt/targets.conf
[root@server11 ~]# service tgtd start
Starting SCSI target daemon: [ OK ]
[root@server11 ~]# chkconfig tgtd on
[root@server11 ~]# tgtadm -L iscsi -o show -m target
Target 1: iqn.2021-01.com.ityanqi.www.sdb // iqn标签号为1,配置正确,自己定义的
System information:
Driver: iscsi // iscsi类型
State: ready // 状态为准备就绪
I_T nexus information:
LUN information:
LUN: 0 // LUN 0控制端
Type: controller
SCSI ID: IET 00010000
SCSI SN: beaf10
Size: 0 MB, Block size: 1
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: null
Backing store path: None
Backing store flags:
LUN: 6 // LUN 6
Type: disk // disk类型
SCSI ID: IET 00010006
SCSI SN: beaf16
Size: 107374 MB, Block size: 512 // size大小是100GB
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: rdwr
Backing store path: /dev/sdb
Backing store flags:
Account information:
iscsiuser // 用户名是iscsiuser和密码也是iscsiuser只是密码没有显示出来
ACL information:
10.10.10.0/24 // 允许访问的网段是10.10.10.0/24 //也就意味着这里是CIDR的表达方式
~~~ 不管怎么重启,这里都不会失效,已经达到了持久化配置的设定。建议生产环境中这样配置。
2、HA-server2下:10.10.10.12:ISCSI客户端-永久生效-配置文件修改方式
### --- 安装iscsi-initiator-utils
[root@server12 ~]# yum install -y iscsi-initiator-utils
### --- 修改配置文件,和临时配置不一致的是多了一个身份认证需要键入用户名和密码
[root@server12 ~]# vim /etc/iscsi/iscsid.conf
node.session.auth.username = iscsiuser // 连接服务端的用户名
node.session.auth.password = iscsiuser // 连接服务端的密码
### --- 发现块设备,并登录到该块设备,并为该块设备挂载目录,创建文件系统,并写入数据
[root@server12 ~]# iscsiadm -m discovery -t st -p 10.10.10.11
10.10.10.11:3260,1 iqn.2021-01.com.ityanqi.www.sdb
[root@server12 ~]# iscsiadm -m node -T iqn.2021-01.com.ityanqi.www.sdb --login
Logging in to [iface: default, target: iqn.2021-01.com.ityanqi.www.sdb, portal: 10.10.10.11,3260] (multiple)
Login to [iface: default, target: iqn.2021-01.com.ityanqi.www.sdb, portal: 10.10.10.11,3260] successful.
[root@server12 ~]# fdisk -l
Disk /dev/sdc: 107.4 GB, 107374182400 bytes // 是100GB服务器端直接提供的是100GB块
[root@server12 ~]# fdisk /dev/sdc
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-13054, default 1):
Last cylinder, +cylinders or +size{K,M,G} (1-13054, default 13054):
Command (m for help): w
[root@server12 ~]# mkfs.ext4 /dev/sdc1
[root@server12 ~]# fdisk -l
Device Boot Start End Blocks Id System
/dev/sdc1 1 13054 104856223+ 83 Linux
[root@server12 ~]# mkdir /iscsi // 这一步临时方案已经做过,省略
[root@server12 ~]# mount -t ext4 /dev/sdc1 /iscsi/ // 这一步临时方案已经做过,省略
[root@server12 ~]# !mount // 执行之前的mount执行操作
mount -t ext4 /dev/sdc1 /iscsi/
[root@server12 ~]# ls /iscsi/
lost+found // 缓存文件已生效
[root@server12 ~]# vim /iscsi/1
this is HA-server2:10.10.10.12 chijiuhuabushu
[root@server12 ~]# cat /iscsi/1
### --- 移除登录的块设备,并退出登录(卸载)流程
[root@server12 ~]# umount /iscsi/ // 解除挂载,
[root@server12 ~]# iscsiadm -m node -T iqn.2021-01.com.ityanqi.www.roc --logout
Logging out of session [sid: 1, target: iqn.2021-01.com.ityanqi.www.roc, portal: 10.10.10.11,3260]
Logout of [sid: 1, target: iqn.2021-01.com.ityanqi.www.roc, portal: 10.10.10.11,3260] successful. //登出successful
[root@server12 ~]# fdisk -l // 发现/dev/sdc1这块盘已经没有了
四、重点:
### --- 问题:
~~~ 我们已经有文件存储了,块存储的意义何在?
### --- 解决方案:
~~~ 对于有些数据库来说,若是你想使用我,我存储必须是一个单独的块,文件共享可以吗,不可以;
~~~ 块存储之间传输的ISCSI指令,而不是文件本身,它的效率会更高。