一.ISCSI概述
iscsi是直接对设备进行共享的服务。 SCSI(Internet SCSI) 支持从客户端 ( 发起端 ) 通过 IP 向远程服务器上的 iSCSI 存储设备 ( 目标 ) 发送 SCSI 命令。 iSCSI限定名称用于确定发起端和目标 , 并采用 iqn.yyyy-mm.{reverse domain}:label 的格式 默认情况下 , 网络通信是至 iSCSI 目标上的端口 3260/tcp 的明文端口。 iSCSI发起端:需要访问原始SAN存储的客户端。iSCSI目标:从iSCSI服务器提供的远程硬盘磁盘,或“目标门户”
iSCSI目标门户:通过网络向发起端提供目标的服务器。
IQN:“iSCSI限定名称”。每个发起端和目标需要唯一名称进行标识,最好的做法是使用一个在Internet上可能独一无二的名称。
iscsi示意图:
![]()
![]()
使用场景:
![]()
二.配置iscsi
1.服务端 yum install targetcli -yfdisk /dev/vdb ####创建分区+2G partprob ####同步分区表
targetcli ls /> /backstores/block create wrh:storage1 /dev/vdb1 Created block storage object wrh:storage1 using /dev/vdb1. /> /iscsi create iqn.2017-12.com.example:storage1 ###iscsi节点名称格式:iqn-type ###linux上格式:iqn.yyyy-mm.com.example:有意义的名称如主机名 Created target iqn.2017-12.com.example:storage1. Created TPG 1. /> /iscsi/iqn.2017-12.com.example:storage1/tpg1/acls create iqn.2017-12.com.example:wrhkey Created Node ACL for iqn.2017-12.com.example:wrhkey ###创建key文件 /> /iscsi/iqn.2017-12.com.example:storage1/tpg1/luns create /backstores/block/wrh:storage1 ###luns连接 共享名称和设备名称 Created LUN 0. Created LUN 0->0 mapping in node ACL iqn.2017-12.com.example:wrhkey /> /iscsi/iqn.2017-12.com.example:storage1/tpg1/portals create 172.25.254.150 ###node节点 Using default IP port 3260 Created network portal 172.25.254.150:3260. ls exit
![]()
####火墙策略加端口 firewall-cmd --permanent --add-port=3260/tcp firewall-cmd --reload
2.客户端 yum search iscsi yum install iscsi-initiator-utils.x86_64 systemctl start iscsi
vim /etc/iscsi/initiatorname.iscsi #InitiatorName=iqn.2017-12.com.example:wrhkey #复制在服务端建的key systemctl restart iscsi
iscsiadm -m discovery -t st -p 172.25.254.150 #-m动作 -t类型 st iscsiadm -m node -T iqn.2017-12.com.example:storage1 -p 172.25.254.150 -l #-l登陆
fdisk -l fdisk /dev/vdb partprobe mkfs.xfs /dev/vdb2 mount /dev/vdb2 /mnt/ df cd /mnt/ touch textfile
测试:
![]()
三.开机自动挂载网络设备/dev/vdb2
blkid /dev/vdb2: UUID="37e8b451-5840-49ab-8218-9d267dc398b3" TYPE="xfs" vim /etc/fstab #UUID="37e8b451-5840-49ab-8218-9d267dc398b3" /mnt xfs defaults,_netdev 0 0![]()
#用id是为了避免使用设备名发生漂移,_netdev是开机先开网络而不是先读此文件内容 #先poweroff然后再启动
四.删除iscsi设备
1.删除网络设备/dev/vdb2 iscsiadm -m node -T iqn.2017-12.com.example:storage1 -p 172.25.254.150 -u #-u 退出登陆 暂时断开连接 iscsiadm -m node -T iqn.2017-12.com.example:storage1 -p 172.25.254.150 -o delete #删除iscsi目标的本地记录,永久断开连接 fdisk -l2.服务端: #删除共享设备 targetcli /> clearconfig confirm=true
![]()
四.建立lvm设备(动态分配空间)
服务端:
创建逻辑卷lvm
pvcreate /dev/vdb1 #共享一个lv
vgcreate iscsi_vg /dev/vdb1 #共享一个vg
vgdisplay #查看vg中的所有数据
lvcreate -l 511 -n iscsi_lv0 iscsi_vg
lvs
targetcli ###进入iscsi目标交互式配置模式
/> /backstores/block create wrh:storage2 /dev/iscsi_vg/iscsi_lv0
###和逻辑卷建立联系,把/dev/vg0/iscsi_storage用server1storage表示
/> /iscsi create iqn.2017-12.com.example:storage2
##创建iqn服务的名称(每个发起端和目标需要唯一名称进行标识)
/> /iscsi/iqn.2017-12.com.example:storage2/tpg1/acls create iqn.2017-12.com.example:key1
/> /iscsi/iqn.2017-12.com.example:storage2/tpg1/luns create /backstores/block/wrh:storage2
##加密(默认情况下,网络通信是至iSCSI目标上的端口3260/tcp的明文)
/> iscsi/iqn.2017-12.com.example:storage2/tpg1/portals create 172.25.254.150
/> exit
firewall-cmd --list-all
#客户端:
systemctl restart iscsid.service
systemctl restart iscsi
iscsiadm -m discovery -t st -p 172.25.254.150
iscsiadm -m node -T iqn.2017-12.com.example:storage2 -p 172.25.254.150 -l
fdisk -l
#如果需要增大
在服务端再增加一块lvm分区/dev/vdb2
pvcreate /dev/vdb2
vgextend iscsi_vg /dev/vdb2
lvextend -L 1500M /dev/iscsi_vg/iscsi_lv0
lvs