HoRain云--Linux下ISCSI存储部署教程
你希望为服务器B提供100GB的共享存储,用于数据库集群。通过iSCSI部署,服务器B可以将远程存储作为本地磁盘使用,实现数据共享和高可用。
·

🎬 HoRain 云小助手:个人主页
⛺️生活的理想,就是为了理想的生活!
⛳️ 推荐
前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。
目录

一、基础概念
iSCSI(Internet Small Computer System Interface)是一种基于TCP/IP协议的网络存储标准,它允许在IP网络上运行SCSI命令,从而实现远程存储设备的访问。简单来说,iSCSI可以将远程存储设备像本地磁盘一样使用。
为什么需要iSCSI?
- 成本效益:使用现有以太网基础设施,无需额外投资专用存储网络
- 灵活性:易于扩展,可以根据需求动态增加或减少存储容量
- 高可用性:为集群环境提供共享存储,提高系统可靠性
- 应用场景:虚拟化环境、数据库集群、数据备份等
二、环境准备
硬件需求
- iSCSI目标端(Target):提供存储资源的服务器(如192.168.1.100)
- iSCSI发起端(Initiator):需要访问存储的客户端(如192.168.1.101)
- 存储设备:可以是物理磁盘或逻辑卷(如/dev/sdb)
网络要求
- 目标端和发起端在同一网络或能互相通信
- 确保防火墙放行3260端口(iSCSI默认端口)
三、配置iSCSI目标端(Target)
1. 安装iSCSI服务端软件
# CentOS/RHEL系统
sudo yum install targetcli -y
# Ubuntu/Debian系统
sudo apt-get install targetcli -y
2. 启动并启用target服务
sudo systemctl start target
sudo systemctl enable target
3. 配置iSCSI目标
sudo targetcli
在targetcli命令行界面中执行以下操作:
# 创建后端存储块(使用物理磁盘)
/ > /backstores/block create name=mydisk dev=/dev/sdb
# 创建iSCSI目标
/ > /iscsi create iqn.2023-09.com.example:mytarget
# 将后端存储与目标关联
/ > /iscsi/iqn.2023-09.com.example:mytarget/tpg1/luns create /backstores/block/mydisk
# 配置访问控制列表(ACL)
/ > /iscsi/iqn.2023-09.com.example:mytarget/tpg1/acls create iqn.1994-05.com.redhat:client1
# 设置监听IP和端口(默认已配置)
/ > /iscsi/iqn.2023-09.com.example:mytarget/tpg1/portal delete 0.0.0.0:3260
/ > /iscsi/iqn.2023-09.com.example:mytarget/tpg1/portal create 192.168.1.100:3260
# 退出并保存配置
/ > exit
4. 配置防火墙
# CentOS/RHEL
sudo firewall-cmd --permanent --add-port=3260/tcp
sudo firewall-cmd --reload
# Ubuntu/Debian
sudo ufw allow 3260/tcp
四、配置iSCSI发起端(Initiator)
1. 安装iSCSI客户端软件
# CentOS/RHEL系统
sudo yum install iscsi-initiator-utils -y
# Ubuntu/Debian系统
sudo apt-get install open-iscsi -y
2. 配置iSCSI发起器名称
sudo vi /etc/iscsi/initiatorname.iscsi
修改为:
InitiatorName=iqn.1994-05.com.redhat:client1
3. 启动iSCSI服务
sudo systemctl start iscsid
sudo systemctl enable iscsid
4. 发现iSCSI目标
sudo iscsiadm -m discovery -t st -p 192.168.1.100
5. 登录到iSCSI目标
sudo iscsiadm -m node -T iqn.2023-09.com.example:mytarget -p 192.168.1.100 -l
6. 验证连接
# 查看已登录的iSCSI设备
iscsiadm -m session
# 查看新发现的磁盘
lsblk
7. 格式化和挂载iSCSI设备
# 格式化(如果需要)
sudo mkfs.ext4 /dev/sdb
# 创建挂载点并挂载
sudo mkdir /mnt/iscsi
sudo mount /dev/sdb /mnt/iscsi
# 设置开机自动挂载(编辑/etc/fstab)
echo "/dev/sdb /mnt/iscsi ext4 defaults,_netdev 0 0" | sudo tee -a /etc/fstab
五、高级配置
1. 使用TSIG密钥进行安全认证(可选但推荐)
# 生成密钥
sudo dnssec-keygen -a HMAC-SHA256 -b 128 -n HOST iscsi-sync
# 获取密钥内容
sudo cat /etc/bind/keys/iscsi-sync.key
在目标端和发起端的配置文件中添加密钥信息,实现安全同步。
2. 配置多路径(Multipath)
# 安装多路径软件包
sudo yum install device-mapper-multipath -y
# 配置多路径
sudo vi /etc/multipath.conf
添加以下内容:
defaults {
user_friendly_names yes
path_grouping_policy group_by_prio
path_selector "round-robin 0"
path_checker "tur"
prio "alua"
rr_weight "uniform"
failback immediate
no_path_retry 10
}
重启多路径服务:
sudo systemctl restart multipathd
六、验证与测试
1. 测试iSCSI连接
# 在发起端执行
sudo iscsiadm -m node -T iqn.2023-09.com.example:mytarget -p 192.168.1.100 -u
sudo iscsiadm -m node -T iqn.2023-09.com.example:mytarget -p 192.168.1.100 -l
2. 创建测试文件
# 在挂载点创建测试文件
sudo touch /mnt/iscsi/testfile
sudo ls /mnt/iscsi
3. 检查文件系统
df -h /mnt/iscsi
七、常见问题排查
-
无法发现iSCSI目标
- 检查网络连接是否通畅
- 确认防火墙是否放行3260端口
- 确认iSCSI服务是否在目标端运行
-
登录失败
- 检查iSCSI IQN名称是否正确
- 确认ACL配置中是否包含客户端IQN
- 检查目标端的配置是否正确
-
挂载失败
- 确认设备名称正确(如/dev/sdb)
- 检查文件系统是否已格式化
- 确认在fstab中使用了_netdev选项
八、实际应用场景
假设你有两台服务器组成集群:
- 服务器A(192.168.1.100):iSCSI目标端
- 服务器B(192.168.1.101):iSCSI发起端
你希望为服务器B提供100GB的共享存储,用于数据库集群。通过iSCSI部署,服务器B可以将远程存储作为本地磁盘使用,实现数据共享和高可用。
九、小贴士
- Serial号:每次修改区域文件后,必须增加Serial号,否则同步不会触发
- 性能优化:使用高速网络,确保iSCSI网络与常规网络隔离
- 安全建议:使用CHAP或TSIG进行认证,避免未授权访问
- 监控:使用
iscsiadm -m session定期检查连接状态
希望这份教程对你有帮助!配置完成后,你的服务器将能轻松实现网络存储共享,大大提升系统灵活性和可靠性。😊
如果你在配置过程中遇到问题,可以告诉我你的具体环境(Linux发行版、网络拓扑),我会给你针对性的建议。需要我帮你检查配置吗?
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙
更多推荐




所有评论(0)