1. 统信Linux与iSCSI服务概述
统信UOS作为国产操作系统的代表产品,在企业级应用场景中正获得越来越广泛的应用。iSCSI(Internet Small Computer System Interface)作为一种基于IP网络的存储协议,能够将远程存储设备映射为本地磁盘使用,这对于企业IT基础设施的灵活部署具有重要意义。
在实际工作中,我发现很多企业用户对统信Linux系统下的iSCSI服务配置存在诸多疑问。本文将基于统信UOS 20专业版(内核版本5.10),详细介绍iSCSI服务的完整配置流程和实用技巧。不同于普通的配置教程,我会特别分享在实际部署过程中遇到的典型问题及解决方案,这些经验都是通过多次项目实施积累而来。
2. iSCSI服务基础环境准备
2.1 系统要求确认
在开始配置前,必须确保系统满足以下条件:
- 统信UOS 20专业版(建议更新至最新补丁)
- 至少2GB可用内存
- 根分区剩余空间不小于10GB(用于安装必要软件包)
- 稳定的网络连接(建议千兆以太网环境)
可以通过以下命令检查系统版本:
bash复制cat /etc/os-release
lsb_release -a
uname -r
2.2 软件包安装与更新
统信UOS默认使用apt作为包管理工具,配置iSCSI服务需要安装以下关键组件:
- targetcli-fb:iSCSI目标配置工具
- open-iscsi:iSCSI启动器组件
- lvm2(可选):如需使用LVM管理存储空间
安装命令如下:
bash复制sudo apt update
sudo apt install targetcli-fb open-iscsi lvm2 -y
注意:统信UOS的软件源可能需要先配置正确的镜像源。如果遇到软件包找不到的情况,建议检查/etc/apt/sources.list文件内容。
3. iSCSI目标服务器配置
3.1 存储后端准备
iSCSI服务需要后端存储支持,常见的方案包括:
- 使用物理磁盘(如/dev/sdb)
- 使用LVM逻辑卷
- 使用文件镜像(适用于测试环境)
这里以LVM方案为例,展示具体配置步骤:
bash复制# 创建物理卷(假设使用/dev/sdb)
sudo pvcreate /dev/sdb
# 创建卷组
sudo vgcreate iscsi_vg /dev/sdb
# 创建逻辑卷(分配50GB空间)
sudo lvcreate -L 50G -n iscsi_lv iscsi_vg
3.2 使用targetcli配置iSCSI目标
targetcli是当前主流的iSCSI目标配置工具,提供交互式命令行界面:
bash复制sudo targetcli
在targetcli交互界面中,按以下步骤操作:
-
创建后端存储对象:
code复制/backstores/block create iscsi_store /dev/iscsi_vg/iscsi_lv -
创建iSCSI目标:
code复制/iscsi create iqn.2023-08.com.example:server -
创建门户(监听IP和端口):
code复制
/iscsi/iqn.2023-08.com.example:server/tpg1/portals create 0.0.0.0 3260 -
创建LUN并映射存储:
code复制
/iscsi/iqn.2023-08.com.example:server/tpg1/luns create /backstores/block/iscsi_store -
设置访问控制:
code复制/iscsi/iqn.2023-08.com.example:server/tpg1/acls create iqn.2023-08.com.example:client -
保存配置并退出:
code复制saveconfig exit
3.3 服务启动与防火墙配置
启用并启动相关服务:
bash复制sudo systemctl enable target
sudo systemctl start target
如果系统启用了防火墙,需要开放iSCSI端口:
bash复制sudo ufw allow 3260/tcp
4. iSCSI客户端配置
4.1 发现iSCSI目标
在客户端机器上执行以下命令发现目标:
bash复制sudo iscsiadm -m discovery -t st -p 服务器IP
成功执行后应能看到类似输出:
code复制192.168.1.100:3260,1 iqn.2023-08.com.example:server
4.2 登录iSCSI目标
使用发现的目标IQN进行登录:
bash复制sudo iscsiadm -m node -T iqn.2023-08.com.example:server -p 192.168.1.100 -l
登录成功后,使用以下命令验证:
bash复制lsblk
应该能看到新增的磁盘设备(通常为/dev/sdX)。
4.3 自动挂载配置
如需实现开机自动连接iSCSI目标,需要修改配置文件:
bash复制sudo iscsiadm -m node -T iqn.2023-08.com.example:server -p 192.168.1.100 -o update -n node.startup -v automatic
然后启用iscsid服务:
bash复制sudo systemctl enable iscsid
sudo systemctl start iscsid
5. 高级配置与优化
5.1 多路径I/O配置
对于高可用环境,建议配置多路径I/O(MPIO):
bash复制sudo apt install multipath-tools -y
编辑/etc/multipath.conf配置文件:
code复制defaults {
user_friendly_names yes
find_multipaths yes
}
devices {
device {
vendor "LIO-ORG"
product "*"
path_grouping_policy multibus
path_checker tur
features "0"
hardware_handler "0"
failback immediate
rr_weight uniform
no_path_retry fail
}
}
启用并启动服务:
bash复制sudo systemctl enable multipathd
sudo systemctl start multipathd
5.2 性能优化参数
在/etc/iscsi/iscsid.conf中添加以下参数可优化性能:
code复制node.session.timeo.replacement_timeout = 120
node.conn[0].timeo.noop_out_interval = 10
node.conn[0].timeo.noop_out_timeout = 15
node.session.iscsi.InitialR2T = No
node.session.iscsi.ImmediateData = Yes
node.session.iscsi.FirstBurstLength = 262144
node.session.iscsi.MaxBurstLength = 16776192
node.conn[0].iscsi.MaxRecvDataSegmentLength = 65536
修改后需要重启服务:
bash复制sudo systemctl restart iscsid
6. 常见问题排查
6.1 连接失败问题
症状:客户端无法发现或连接iSCSI目标
排查步骤:
-
检查网络连通性:
bash复制
ping 服务器IP telnet 服务器IP 3260 -
检查服务端target服务状态:
bash复制sudo systemctl status target -
检查防火墙设置:
bash复制sudo ufw status -
检查服务端日志:
bash复制
journalctl -u target -f
6.2 性能低下问题
症状:iSCSI磁盘I/O性能明显低于预期
优化建议:
- 确认网络带宽(建议使用千兆或更高带宽)
- 调整MTU值(建议设置为9000,需网络设备支持)
- 检查并优化服务端存储性能
- 考虑启用多路径I/O
6.3 设备重命名问题
症状:重启后iSCSI磁盘设备名变化(如从/dev/sdb变为/dev/sdc)
解决方案:
-
使用WWID或UUID挂载:
bash复制sudo blkid -
在/etc/fstab中使用类似以下格式:
code复制UUID=xxxx-xxxx-xxxx /mnt/iscsi ext4 _netdev 0 0
7. 安全加固建议
7.1 CHAP认证配置
在服务端targetcli中配置CHAP认证:
code复制/iscsi/iqn.2023-08.com.example:server/tpg1/portals delete ip_address=0.0.0.0 ip_port=3260
/iscsi/iqn.2023-08.com.example:server/tpg1 set auth userid=username
/iscsi/iqn.2023-08.com.example:server/tpg1 set auth password=password
/iscsi/iqn.2023-08.com.example:server/tpg1/portals create 0.0.0.0
客户端配置:
bash复制sudo iscsiadm -m node -T iqn.2023-08.com.example:server -p 192.168.1.100 --op update -n node.session.auth.authmethod -v CHAP
sudo iscsiadm -m node -T iqn.2023-08.com.example:server -p 192.168.1.100 --op update -n node.session.auth.username -v username
sudo iscsiadm -m node -T iqn.2023-08.com.example:server -p 192.168.1.100 --op update -n node.session.auth.password -v password
7.2 网络隔离
建议将iSCSI流量隔离到专用VLAN中,或至少使用专用网络接口。可通过以下方式实现:
- 配置单独的网络接口
- 使用VLAN tagging
- 配置适当的网络ACL
8. 实际应用案例
8.1 虚拟化存储后端
将iSCSI存储作为KVM虚拟机的后端存储:
bash复制sudo virt-install \
--name vm1 \
--ram 2048 \
--disk path=/dev/disk/by-path/ip-192.168.1.100:3260-iqn.2023-08.com.example:server-lun-0 \
--vcpus 2 \
--os-type linux \
--os-variant generic \
--network bridge=br0 \
--graphics none \
--console pty,target_type=serial
8.2 高可用集群共享存储
在Pacemaker/Corosync集群中配置iSCSI共享存储:
- 所有节点配置多路径I/O
- 配置集群资源:
bash复制sudo pcs resource create cluster_lvm ocf:heartbeat:LVM \ volgrpname=iscsi_vg \ exclusive=true \ --group cluster_storage
9. 维护与监控
9.1 日常监控命令
查看iSCSI会话状态:
bash复制sudo iscsiadm -m session -P 3
查看多路径状态:
bash复制sudo multipath -ll
监控iSCSI性能:
bash复制sudo iostat -x 1
9.2 定期维护任务
- 检查并更新系统补丁
- 监控存储空间使用情况
- 定期检查日志中的错误信息
- 测试故障转移能力
10. 备份与恢复策略
10.1 配置备份
备份targetcli配置:
bash复制sudo targetcli saveconfig /etc/target/backup.json
备份iSCSI客户端配置:
bash复制sudo tar czvf /backup/iscsi_client_config.tar.gz /etc/iscsi
10.2 数据备份方案
-
使用LVM快照:
bash复制sudo lvcreate -L 1G -s -n backup_snap /dev/iscsi_vg/iscsi_lv -
使用dd命令创建完整镜像:
bash复制sudo dd if=/dev/iscsi_vg/iscsi_lv of=/backup/iscsi_backup.img bs=1M status=progress -
考虑使用专业备份工具如Bacula或Veeam
在多次项目实施中,我发现iSCSI存储的稳定性很大程度上取决于网络质量。建议在正式部署前,进行至少72小时的压力测试,模拟各种网络异常情况。另外,对于生产环境,一定要配置完善的监控告警系统,确保能及时发现并处理潜在问题。
