在服务器管理器中找到添加角色和功能:
勾选ISCSI目标存储提供程序和ISCSI目标服务器:
选择虚拟化磁盘存放的位置,由于我的Windows Server就一个C盘,所以就选择C盘符:
创建一个100G的虚拟磁盘文件,这个100G虚拟磁盘文件会在磁盘中实际占用一个100G的文件:
接下来需要结合虚拟化集群操作。
添加一块硬盘/dev/vdb,并进行fdisk分区
yum -y install scsi-target-utils
systemctl start tgtd
systemctl status tgtd
创建target:
tgtadm --lld iscsi --mode target --op new --tid 1 --targetname iqn.2023-02.com.wangzy:iscsi.fcdisk
创建lun:
tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 --backing-store /dev/vdb1
删除lun:
tgtadm --lld iscsi --mode logicalunit --op delete --tid 1 --lun 1
授权:
为 Target 分配了 LUN 后,需要配置访问控制才可以使用。可以设置所有用户都能访问,也可以设置基于IP/IP段或用户名验证的访问权限。
添加 IP 的访问权限:
tgtadm --lld iscsi --mode target --op bind --tid 1 --initiator-address 10.1.248.154
添加一个 IP 段的访问权限:
tgtadm --lld iscsi --mode target --op bind --tid 1 --initiator-address 172.26.160.0/24
添加所有 IP 的访问权限:
tgtadm --lld iscsi --mode target --op bind --tid 1 --initiator-address ALL
注意:访问控制是 Target 的一个特性,只能给 Target 添加访问控制,而对单独的 LUN 则无法添加访问控制。
tgt的主配置文件为/etc/tgt/targets.conf,可以通过修改该配置文件的方式:
<targetiqn.2023-02.com.example.server1:iscsi>
backing-store /dev/vdb1 #指定要发布的设备已划分的分区
initiator-address ALL #对于客户端的访问控制,允许所有用户访问,可根据访问策略进行修改
</target>
iqn(iSCSI Qualified Name)名称规则如下:
格式是:“iqn”+“年月”+“.”+“域名的颠倒”+“:”+“设备的具体名称”,之所以颠倒域名是为了避免可能的冲突
查看配置属性信息:
tgtadm --lld iscsi --mode target --op show
Target 1: iqn.2023-02.com.wangzy:iscsi.fcdisk
System information:
Driver: iscsi
State: ready
I_T nexus information:
I_T nexus: 1
Initiator: iqn.1994-05.com.redhat:2b8a66a51d4wzynode01 alias: vm10-1-248-154.cloud.local
Connection: 0
IP Address: 10.1.248.154
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
SWP: No
Thin-provisioning: No
Backing store type: null
Backing store path: None
Backing store flags:
LUN: 1
Type: disk
SCSI ID: IET 00010001
SCSI SN: beaf11
Size: 107373 MB, Block size: 512
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
SWP: No
Thin-provisioning: No
Backing store type: rdwr
Backing store path: /dev/vdb1
Backing store flags:
Account information:
ACL information:
172.26.160.43
172.26.160.0/24
10.1.248.154
开放防火墙服务端口:
firewall-cmd --add-port=3260/tcp --permanent
firewall-cmd --reload
安装iscsi服务:
yum install -y iscsi*
systemctl restart iscsi
配置客户端的iqn:
cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1994-05.com.redhat:2b8a66a51d4
vim /etc/iscsi/initiatorname.iscsi
发现服务端:
iscsiadm -t st -m discovery -p 10.1.248.111
10.1.248.111:3260,1 iqn.2023-02.com.wangzy:iscsi.fcdisk
systemctl status iscsi -l
# 看最后有target: iqn.2023-02.com.wangzy:iscsi.fcdisk
● iscsi.service - Login and scanning of iSCSI devices
Loaded: loaded (/usr/lib/systemd/system/iscsi.service; enabled; vendor preset: disabled)
Active: active (exited) since Wed 2023-02-15 16:19:44 CST; 43s ago
Docs: man:iscsiadm(8)
man:iscsid(8)
Process: 1455 ExecStart=/sbin/iscsiadm -m node --loginall=automatic (code=exited, status=19)
Main PID: 1455 (code=exited, status=19)
Feb 15 16:19:44 vm10-1-248-154.cloud.local systemd[1]: Starting Login and scanning of iSCSI devices...
Feb 15 16:19:44 vm10-1-248-154.cloud.local iscsiadm[1455]: iscsiadm: Could not login to [iface: default, target: iqn.2023-02.com.wangzy:iscsi.fcdisk, portal: 10.1.248.111,3260].
Feb 15 16:19:44 vm10-1-248-154.cloud.local iscsiadm[1455]: iscsiadm: initiator reported error (19 - encountered non-retryable iSCSI login failure)
Feb 15 16:19:44 vm10-1-248-154.cloud.local iscsiadm[1455]: iscsiadm: Could not log into all portals
Feb 15 16:19:44 vm10-1-248-154.cloud.local systemd[1]: Started Login and scanning of iSCSI devices.
Feb 15 16:19:44 vm10-1-248-154.cloud.local iscsiadm[1455]: Logging in to [iface: default, target: iqn.2023-02.com.wangzy:iscsi.fcdisk, portal: 10.1.248.111,3260] (multiple)
连接服务端:
iscsiadm -m node -T iqn.2023-02.com.wangzy:iscsi.fcdisk -p 10.1.248.111:3260 -l
Logging in to [iface: default, target: iqn.2023-02.com.wangzy:iscsi.fcdisk, portal: 10.1.248.111,3260] (multiple)
Login to [iface: default, target: iqn.2023-02.com.wangzy:iscsi.fcdisk, portal: 10.1.248.111,3260] successful.
最后一定要看到successful字段
注意:如果是云主机的话,一定不能使用EIP地址进行发现,要使用虚拟机网卡的真实IP地址进行发现
查看磁盘信息表:
100G空间大小为ISCSI服务端存储:
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
vda 253:0 0 20G 0 disk
└─vda1 253:1 0 20G 0 part /
分区并创创建挂载目录挂载:
fdisk /dev/sda
mkdir /mnt/iscsi
mkfs.xfs /dev/sda1
cat >>/etc/fstab<<EOF
/dev/sda1 /mnt/iscsi xfs defaults 0 0
EOF
mount -a
df -h /mnt/iscsi/
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 100G 33M 100G 1% /mnt/iscsi
拷贝华为FusionCompute集群服务器的WWN号与存储关联
虚拟化服务器的WWN号与存储进行关联:
确认配置信息:
确认完成之后点击创建:
创建完成之后会自动进行初始化,必须等待初始化完成之后才能进行接下来的操作:
初始化完成之后会显示未连接状态,因为此时华为FusionCompute还未对存储进行扫描(CNA主机还未和存储进行关联):
关联存储:在华为FusionCompute中添加存储的管理和业务IP地址(管理网络和业务网络没有进行区分,所以地址是一样的)
再回到Windows Server中查看ISCSI存储就会显示已经连接状态:
可以看到实际占用大小就是100G
CNA1主机挂载了该SAN存储,那么在CNA1主机中启动的虚拟机磁盘都可以建立在该存储中
在虚拟机删除数据或者直接删除虚拟机时,SAN存储里面的空间不会立即释放,需要等待一定的时间后才能完全释放
说明:我的CNA主机是使用KVM虚拟机搭建的,其中虚拟机有8块网卡,有两块网卡eth4和eth4单独作为存储网络是可以和Linux ISCSI服务端的网卡互通的,当然Linux ISCSI服务端我也是使用KVM虚拟机搭建的。在我的其他博客中有具体的搭建方案。
绑定网卡:
添加存储资源:
添加存储的管理IP和业务IP,因为我是KVM虚拟机搭建的ISCSI存储,所以管理和业务IP一样,都是填写Linux的存储业务网络的网卡IP地址
扫描存储设备:
查看到Linux ISCSI存储已经关联到CNA主机
存储设备已经扫描到100G的存储
添加数据存储:
需要添加一个软件适配器,添加完整之后就会显示该软件适配器的WWN号
在Windows ISCSI存储服务端添加该WWN号,使ISCSI存储和ESXI主机对接:
添加动态发现,ISCSI服务器添加Windows Server ISCSI服务器的IP地址
这时候重新扫描存储设备的话,还是不能扫描出来,而且Windows Server ISCSI还是显示未连接状态,因为还没有添加网络端口的绑定。
这块先留下一个尾巴,因为我没有多余的单独网卡,没办法绑定一个物理网卡,绑定成功之后再重新扫描在Windows Server查看ISCSI就会是连接状态了
总体感觉此方式搭建的存储性能不是特别高,生产系统也没这么用过,可以作为一个临时解决方案吧。