iSCSI 基础知识
iSCSI(Internet Small Computer System Interface)协议是一种基于IP网络的存储协议,它允许主机(计算机或服务器)通过TCP/IP网络访问远程存储设备。该协议具有以下主要特点:
-
灵活性:iSCSI可以在现有的IP网络基础上进行部署,不需要单独建立存储网络,从而大大降低了存储网络的部署成本。
-
高性能:通过使用高速以太网技术,iSCSI可以提供与Fibre Channel相媲美的性能,满足企业对存储性能的需求。
-
易管理:iSCSI协议的部署和管理相对简单,可以通过标准的网络管理工具进行管理,降低了对专业存储人员的需求。
-
兼容性:iSCSI协议可以与现有的存储设备兼容,无需更换现有的存储设备,进一步降低了存储升级的成本。
实验
参考:第 9 章 配置 iSCSI 目标 | Red Hat Product Documentation
第 10 章 配置 iSCSI initiator | Red Hat Product Documentation
配置 iSCSI 目标
Red Hat Enterprise Linux 使用 targetcli
shell 作为命令行界面执行以下操作:
-
添加、删除、查看和监控 iSCSI 存储间的连接来利用 iSCSI 硬件。
-
将由文件、卷、本地 SCSI 设备或者 RAM 磁盘支持的本地存储资源导出到远程系统。
targetcli
工具带有一个基于树形的布局,包括内置的 tab 完成 、自动完成支持和在线文档。
安装 targetcli
安装 targetcli
工具来添加、监控和删除 iSCSI 存储间的连接
# 设置selinux为宽容模式
[root@vm1 ~]# setenforce 0
# 在防火墙中打开端口 3260,并重新载入防火墙配置
[root@vm1 ~]# firewall-cmd --permanent --add-port=3260/tcp
[root@vm1 ~]# firewall-cmd --reload
# 安装targetcli
[root@vm1 ~]# yum -y install targetcli
进入交互模式进行配置(可以使用非交互模式):
[root@vm1 ~]# targetcli
Warning: Could not load preferences file /root/.targetcli/prefs.bin.
targetcli shell version 2.1.53
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]
/>
创建后备存储
给虚拟机添加一块20G的nvme硬盘
[root@vm1 ~]# ls /dev/nvme0n2
/dev/nvme0n2
[root@vm1 ~]# gdisk /dev/nvme0n2
[root@vm1 ~]# udevadm settle
[root@vm1 ~]# lsblk /dev/nvme0n2
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n2 259:3 0 20G 0 disk
└─nvme0n2p1 259:5 0 2G 0 part
[root@vm1 ~]#
通过随机字符创建一个500M的文件
[root@vm1 ~]# dd if=/dev/urandom of=/testfile bs=10M count=50
50+0 records in
50+0 records out
524288000 bytes (524 MB, 500 MiB) copied, 14.0538 s, 37.3 MB/s
[root@vm1 ~]# du -sh /testfile
500M /testfile
[root@vm1 ~]#
创建块存储对象
创建fileio存储对象
创建 iSCSI 目标
/> iscsi/ create iqn.2024-04.com.a:server
Created target iqn.2024-04.com.a:server.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/> ls
创建 iSCSI ACL
targetcli
服务使用访问控制列表(ACL)来定义访问规则,并授予每个启动器访问逻辑单元号(LUN)的权限。
目标和发起方都有唯一的标识名称。您必须知道配置 ACL 的发起方的唯一名称。由 iscsi-initiator-utils
软件包提供的 /etc/iscsi/initiatorname.iscsi
文件包含 iSCSI 启动器名称。
先决条件
-
targetcli
服务 已安装 并在运行。 -
与目标门户组(TPG)关联的 iSCSI 目标。
创建 iSCSI LUN
逻辑单元号(LUN)是一个由 iSCSI 后端存储支持的物理设备。每个 LUN 都有唯一的数字。
先决条件
-
已安装并运行
targetcli
。如需更多信息,请参阅安装 targetcli。 -
与目标门户组(TPG)关联的 iSCSI 目标。如需更多信息,请参阅创建 iSCSI 目标。
-
已创建存储对象。如需更多信息,请参阅 iSCSI Backstore。
创建 iSCSI 门户
创建 iSCSI 门户,为目标添加一个 IP 地址和端口来启用目标。
先决条件
-
已安装并运行
targetcli
。如需更多信息,请参阅安装 targetcli。 -
与目标门户组(TPG)关联的 iSCSI 目标。如需更多信息,请参阅创建 iSCSI 目标。
修改portals,仅监听ens160网卡的ip和端口
/> exit
Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup/.
Configuration saved to /etc/target/saveconfig.json
[root@vm1 ~]# 退出自动保存
[root@vm1 ~]# systemctl enable --now target
Created symlink /etc/systemd/system/multi-user.target.wants/target.service → /usr/lib/systemd/system/target.service.
[root@vm1 ~]#
客户端验证
# vm2:客户端 192.168.99.200
[root@vm2 ~]# setenforce 0
[root@vm2 ~]# firewall-cmd --set-default-zone=trusted
[root@vm2 ~]# yum -y install iscsi-initiator-utils
[root@vm2 ~]# vim /etc/iscsi/initiatorname.iscsi
[root@vm2 ~]# cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2024-04.com.a:vm2(服务端acl)
[root@vm2 ~]# systemctl restart iscsid iscsi
[root@vm2 ~]#
# 发现并登录远程存储:可以从man帮助查看示例:
[root@vm2 ~]# man iscsiadm
发现:
[root@vm2 ~]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.99.100 --discover
192.168.99.100:3260,1 iqn.2024-04.com.a:server
[root@vm2 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 10.6G 0 rom /run/media/root/CentOS-Stream-8-x86_64-dvd
nvme0n1 259:0 0 200G 0 disk
├─nvme0n1p1 259:1 0 1G 0 part /boot
└─nvme0n1p2 259:2 0 199G 0 part ├─cs_bogon-root 253:0 0 70G 0 lvm /├─cs_bogon-swap 253:1 0 4G 0 lvm [SWAP]└─cs_bogon-home 253:2 0 125.1G 0 lvm /home
[root@vm2 ~]#
# 登录:
[root@vm2 ~]# iscsiadm --mode node --targetname iqn.2024-04.com.a:server --portal 192.168.99.100:3260 --login
Logging in to [iface: default, target: iqn.2024-04.com.a:server, portal: 192.168.99.100,3260]
Login to [iface: default, target: iqn.2024-04.com.a:server, portal: 192.168.99.100,3260] successful.
[root@vm2 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 2G 0 disk
sdb 8:16 0 500M 0 disk
sr0 11:0 1 10.6G 0 rom /run/media/root/CentOS-Stream-8-x86_64-dvd
nvme0n1 259:0 0 200G 0 disk
├─nvme0n1p1 259:1 0 1G 0 part /boot
└─nvme0n1p2 259:2 0 199G 0 part ├─cs_bogon-root 253:0 0 70G 0 lvm /├─cs_bogon-swap 253:1 0 4G 0 lvm [SWAP]└─cs_bogon-home 253:2 0 125.1G 0 lvm /home
[root@vm2 ~]#
# 登出:
[root@vm2 ~]# iscsiadm --mode node --targetname iqn.2024-04.com.a:server --portal 192.168.99.100:3260 --logout
Logging out of session [sid: 1, target: iqn.2024-04.com.a:server, portal: 192.168.99.100,3260]
Logout of [sid: 1, target: iqn.2024-04.com.a:server, portal: 192.168.99.100,3260] successful.
[root@vm2 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 10.6G 0 rom /run/media/root/CentOS-Stream-8-x86_64-dvd
nvme0n1 259:0 0 200G 0 disk
├─nvme0n1p1 259:1 0 1G 0 part /boot
└─nvme0n1p2 259:2 0 199G 0 part ├─cs_bogon-root 253:0 0 70G 0 lvm /├─cs_bogon-swap 253:1 0 4G 0 lvm [SWAP]└─cs_bogon-home 253:2 0 125.1G 0 lvm /home
[root@vm2 ~]#
# 注:登录后会保留记录信息
[root@vm2 ~]# cat /var/lib/iscsi/nodes/iqn.2024-04.com.a\:server/192.168.99.100\,3260\,1/default
# 此时无需再次发现,可以直接登录:
[root@vm2 ~]# iscsiadm --mode node --targetname iqn.2024-04.com.a:server --portal 192.168.99.100:3260 --login
Logging in to [iface: default, target: iqn.2024-04.com.a:server, portal: 192.168.99.100,3260]
Login to [iface: default, target: iqn.2024-04.com.a:server, portal: 192.168.99.100,3260] successful.
[root@vm2 ~]#
挂载使用设备
[root@vm2 ~]# mkfs.xfs /dev/sda
meta-data=/dev/sda isize=512 agcount=4, agsize=131072 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=1, sparse=1, rmapbt=0= reflink=1 bigtime=0 inobtcount=0
data = bsize=4096 blocks=524288, imaxpct=25= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@vm2 ~]# mount /dev/sda /opt
[root@vm2 ~]# touch /opt/1.txt
[root@vm2 ~]# umount /opt
# 登出后清除记录:
[root@vm2 ~]# iscsiadm --mode node --targetname iqn.2024-04.com.a:server --portal 192.168.99.100:3260 --logout
Logging out of session [sid: 2, target: iqn.2024-04.com.a:server, portal: 192.168.99.100,3260]
Logout of [sid: 2, target: iqn.2024-04.com.a:server, portal: 192.168.99.100,3260] successful.
[root@vm2 ~]# iscsiadm --mode node --targetname iqn.2024-04.com.a:server --portal 192.168.99.100:3260 -o delete
[root@vm2 ~]# cat /var/lib/iscsi/nodes/iqn.2024-04.com.a\:server/192.168.99.100\,3260\,1/default
cat: '/var/lib/iscsi/nodes/iqn.2024-04.com.a:server/192.168.99.100,3260,1/default': No such file or directory
[root@vm2 ~]#
作业
留作业啦!要求如下:
准备两张网卡,一张nat(dhcp),一张桥接(不要网关和dns,静态ip)
-
使用桥接网卡配置iscsi服务端(IP地址任意/24) 添加一块硬盘,使用其中两个分区做一个逻辑卷名为lv1 创建一个文件,大小200M,路径为/file1 将lv1和file1作为后端存储 创建一个目标,包含两个lun,对应两个后端存储,WWN和acl自定义 挂载验证
-
可以调整portals监听所有网卡,使用windows挂载共享
-
配置CHAP身份认证
附录
使用windows发现并使用iscsi共享:
Windows-------> 管理工具----------> iscsi发起程序
指定目标、发现:
在配置处,填写ACL
返回目标页点击连接即可,登录后,可从磁盘管理看到未格式化的磁盘