要准备iSCSI存储资源,核心是搭建iSCSI目标服务器并创建LUN,然后通过客户端发起程序连接使用。
准备iSCSI存储资源前的规划
动手配置之前,先明确你的使用场景,iSCSI block级别存储适合数据库、虚拟化等对延迟敏感的应用,与NAS类文件存储有本质区别,行业共识认为,规划阶段需要重点考虑硬件、网络和软件选型,这三项直接决定后续的性能和稳定性。
硬件选型与成本考量
iSCSI存储服务器硬件不需要太特殊,但有几个关键点。
- CPU:多数情况下,iSCSI target的CPU负载并不高,但如果你启用加密或压缩,需要性能更好的处理器,Intel Xeon或AMD EPYC性价比不错。
- 内存:大缓存能显著提升读性能,建议至少16GB起步,具体看存储容量,对于全闪存场景,内存更多用于缓存元数据。
- 存储介质:机械盘适合大容量冷数据,SSD适合热数据,混合配置推荐用SSD做缓存,HDD做容量盘。
- 网络:万兆网卡是标配,千兆只能满足小规模测试,如果预算允许,使用双网卡做链路聚合或多路径。
iSCSI存储服务器价格 根据配置差异很大,一台入门级双路服务器配4块SATA硬盘和万兆网卡,成本约在1-2万元,如果加上全闪存和双控,价格会攀升到5万以上,对于大多数中小企业,利用现有服务器改造一个iSCSI target是更经济的选择。
软件环境选择
iSCSI和NFS对比 是选型时绕不开的,iSCSI提供块设备,客户端可以格式化任意文件系统,适合运行数据库或虚拟机磁盘,NFS提供文件共享,配置简单,但多客户端并发写入时容易产生锁定问题,如果你的场景需要高性能DB,iSCSI更合适;如果只是文件共享或日志存储,NFS更便捷。
当前主流的iSCSI target软件包括:
- Linux LIO:集成在Linux内核,功能全面,支持ACL、认证、VAAI等。
- FreeBSD istgt/ctld:性能稳定,适合FreeBSD环境。
- Windows iSCSI Target:微软官方提供,集成在Windows Server,适合纯Windows环境。
- 商业存储系统:如Dell EMC、NetApp等,但价格较高。
对于大多数DIY场景,Linux LIO是最推荐的选择,开源、灵活、社区活跃。
iSCSI存储服务器怎么配置:实操步骤
这部分以Linux LIO为例,展示从零准备iSCSI存储资源的完整流程,命令基于CentOS 7/8或Ubuntu 20.04+,使用targetcli工具。
安装iSCSI Target软件
在服务器上安装targetcli和相关包。
yum install targetcli -y # CentOS/RHEL
apt install targetcli -y # Debian/Ubuntu
安装后启动服务并设置开机自启。
systemctl start target
systemctl enable target
创建存储池和LUN
存储池通常由物理磁盘或RAID组构成,假设你有一块磁盘 /dev/sdb,准备用作iSCSI的存储后端。
进入targetcli交互界面。
targetcli
创建块设备(backstore)。
/backstores/block create name=disk01 dev=/dev/sdb
创建iSCSI target。
/iscsi create iqn.2026-01.com.example:storage.target01
在target下创建LUN,关联到刚才的块设备。
/iscsi/iqn.2026-01.com.example:storage.target01/tpg1/luns create /backstores/block/disk01
配置ACL和认证
为了安全,需要配置访问控制,默认情况下,target会拒绝所有连接,你需要指定允许哪些initiator连接。
设置ACL(initiator的IQN)。
/iscsi/iqn.2026-01.com.example:storage.target01/tpg1/acls create iqn.2026-01.com.client:initiator01
如果需要CHAP认证,配置用户名和密码。
/iscsi/iqn.2026-01.com.example:storage.target01/tpg1/acls/iqn.2026-01.com.client:initiator01 set auth userid=username
/iscsi/iqn.2026-01.com.example:storage.target01/tpg1/acls/iqn.2026-01.com.client:initiator01 set auth password=secret
在target上开启认证。
/iscsi/iqn.2026-01.com.example:storage.target01/tpg1 set attribute authentication=0 # 如果不用CHAP,设为0简易
保存配置并退出。
saveconfig
exit
配置网络监听
默认target监听所有IP,但最好指定一个内网IP。
/iscsi/iqn.2026-01.com.example:storage.target01/tpg1/portals create 192.168.1.100
如果有多个网卡,可以为每个IP创建portal,客户端通过多路径连接。
客户端连接iSCSI存储资源
Windows客户端配置
Windows自带了iSCSI发起程序,打开控制面板 -> 管理工具 -> iSCSI发起程序。
在“目标”选项卡中输入target的IP,点击“快速连接”,或点击“发现门户”输入IP,如果配置了CHAP,需要在“配置”选项卡中设置用户名和密码。
连接成功后,打开磁盘管理,应能看到一块新的磁盘,右键初始化,创建分区并格式化,即可使用。
Linux客户端配置
Linux客户端安装iscsiadm。
yum install iscsi-initiator-utils -y
apt install open-iscsi -y
编辑 /etc/iscsi/initiatorname.iscsi,设置initiator名称,需与target的ACL一致。
InitiatorName=iqn.2026-01.com.client:initiator01
如果使用CHAP,在 /etc/iscsi/iscsid.conf 中设置。
node.session.auth.authmethod = CHAP
node.session.auth.username = username
node.session.auth.password = secret
发现target。
iscsiadm -m discovery -t sendtargets -p 192.168.1.100
登录target。
iscsiadm -m node -T iqn.2026-01.com.example:storage.target01 -p 192.168.1.100 -l
登录后,查看 /dev/disk/by-path/ 获取新磁盘设备,如 /dev/sdc,然后分区格式化,挂载使用。
如果希望开机自动挂载,需要配置fstab使用磁盘UUID,并设置自动登录。
性能优化与常见问题
网络优化
iSCSI走TCP/IP,网络延迟是最大瓶颈。万兆网络是基础,但光有硬件不够,还要调整网络参数。
- 启用巨帧(Jumbo Frames):MTU设置为9000,减少CPU开销。
- 调整TCP缓冲区:在target和initiator上增大
net.core.rmem_max和
net.core.wmem_max。 - 使用专用网络:将iSCSI流量与业务网络隔离,避免争抢带宽。
多路径配置
如果服务器有多个网卡,可以配置多路径I/O(MPIO)提高可用性和负载均衡。
在target端,为每个网卡添加portal,在客户端,发现多个路径,安装device-mapper-multipath。
yum install device-mapper-multipath -y
mpathconf --enable
配置 /etc/multipath.conf,设置绑定策略(如round-robin),重启服务后,你会看到多路径设备,如 /dev/mapper/mpatha。
常见问题排查
- 连接不上:检查防火墙是否开放3260端口,target的ACL是否包含initiator名称。
- 性能差:检查网络是否为千兆而非万兆,磁盘是否争抢,或者使用iostat查看磁盘队列长度。
- 磁盘丢失:检查链路稳定性,建议使用MPIO并提供冗余路径。
iSCSI存储服务器准备资源常见问题
iSCSI和NFS对比,哪个更适合我的业务?
如果你的业务是数据库、虚拟机磁盘或需要精细控制文件系统,iSCSI更合适,它提供块设备,性能更高且支持多路径,如果是文件共享、日志存储或Web静态资源,NFS配置更简单,且支持多客户端共享,一句话:块存储选iSCSI,文件存储选NFS。
iSCSI存储服务器价格大概多少?
价格取决于配置,入门级用普通服务器加万兆网卡和几块SATA盘,成本约1-2万元,中端使用SSD缓存和RAID卡,价格3-5万元,高端全闪存或双控方案超过10万,对于个人或中小企业,用现有服务器搭建iSCSI target是最经济的方式,软件免费,只需购买网卡和硬盘。
如何对iSCSI存储资源进行扩容?
扩容不需要重建整个target,在target服务器上,新增一块磁盘或RAID组,通过targetcli创建新的backstore,然后挂载到已有target的LUN列表中,客户端重新扫描SCSI总线即可发现新空间,如果使用的是LVM,可以在target后端添加物理卷并扩展逻辑卷,客户端看到的是扩大的块设备。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/567359.html




