iSCSI共享存储实战:在CentOS 7上构建多主机共享存储架构的深度指南
如果你管理过一个小型服务器集群,或者负责过需要多台服务器同时访问同一份数据的应用(比如数据库集群、虚拟化平台或者文件服务器),那么你一定对“共享存储”这个概念不陌生。传统的做法可能是用NFS,但当你需要更底层的块设备访问、更接近本地磁盘的性能体验时,iSCSI就成了一个非常吸引人的选择。它能让网络上的远程磁盘看起来和本地连接的硬盘一模一样,分区、格式化、挂载,所有操作都毫无二致。
但问题来了:当你想让两台、甚至更多台CentOS 7服务器同时挂载并使用同一个iSCSI目标(Target)提供的磁盘时,事情就变得有点微妙了。这不仅仅是配置完服务端和客户端就万事大吉,你还会遇到诸如访问控制、数据一致性、网络连通性以及一些令人头疼的错误(比如经典的 no route to host)。这篇文章,就是为你——那些需要在生产环境中部署可靠共享存储的运维工程师和系统管理员——准备的。我们不只讲步骤,更会深入原理,剖析多主机共享场景下的核心难点,并提供一套经过验证的、能直接上手的解决方案。
1. 理解iSCSI与多主机共享:不仅仅是网络磁盘
在开始敲命令之前,我们有必要先厘清几个关键概念。iSCSI(Internet Small Computer System Interface)本质上是在TCP/IP网络上封装SCSI命令,使得客户端(Initiator)能够通过网络访问服务端(Target)提供的块存储设备。对于客户端操作系统来说,这个网络磁盘和本地插了一块SATA硬盘几乎没有区别。
但是,多主机共享同一块iSCSI磁盘,与共享一个NFS目录有本质区别。 NFS是文件级共享,服务器端有完整的文件系统语义来管理并发访问。而iSCSI是块级共享,它只是把原始的磁盘块暴露给网络。当多个主机同时写入同一个块设备时,如果没有额外的协调机制,数据损坏几乎是必然的。这就好比两个人同时编辑一个Word文档,却没有锁机制——结果可想而知。
那么,什么场景下需要多主机共享块设备呢?常见的有:
- 集群文件系统:如OCFS2、GFS2。这些文件系统自身内置了分布式锁管理(DLM),可以安全地让多个节点同时挂载并读写同一个块设备。
- 高可用(HA)集群:例如Pacemaker+Corosync架构中,共享磁盘常用于存储仲裁信息或应用数据,但同一时间通常只由一个节点激活并挂载。
- 虚拟机共享存储:像KVM虚拟化中,多个计算节点需要访问同一个虚拟机镜像库(如通过iSCSI提供的LUN)。
重要提示:如果你只是想让多台服务器“看到”同一份数据,并且不需要同时写入,那么iSCSI配合集群文件系统是正确路径。如果你需要的是简单的文件共享,NFS或Samba可能更合适、更安全。
为了让后续的配置过程更清晰,我们先明确一下实验环境:
| 角色 | 主机名 | IP地址 | 操作系统 | 额外磁盘 |
|---|---|---|---|---|
| iSCSI Target (服务端) | target-server |
192.168.1.100 |
CentOS 7.9 | /dev/sdb (20GB) |
| iSCSI Initiator (客户端A) | client-node1 |
192.168.1.101 |
CentOS 7.9 | - |
| iSCSI Initiator (客户端B) | client-node2 |
192.168.1.102 |
CentOS 7.9 | - |
我们的目标是:在 target-server 上配置iSCSI Target,将 /dev/sdb 共享出去,并允许 client-node1 和 client-node2 都能发现、连接并挂载这个磁盘。
2. 服务端(Target)配置:从磁盘准备到精细访问控制
服务端的配置是整个架构的基石。

&spm=1001.2101.3001.5002&articleId=155119902&d=1&t=3&u=5c169cf9f6b74105969bf05e4fb19f10)
417

被折叠的 条评论
为什么被折叠?



