linux中两台机器使用iscsi完成从a服务器的磁盘共享到b服务器

本文详细介绍如何在两台服务器间通过ISC SI技术实现磁盘共享。包括安装必要的软件、配置服务端与客户端、以及如何验证共享功能等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

思路:
首先需要在两个服务器中都支持iscsi功能,那么需要安装两个软件
服务器安装scsi-target....rpm               在/cluster storge 里面 /media/ClusterStorage                scsi-target-utils-1.0.8-0.el5.i386.rpm
客户端安装iscsi。。。rpm                    在/server/...里面                                                                            iscsi-initiator-utils-6.2.0.872-6.el5.i386.rpm

服务器开启共享功能,把分区sdb1共享到服务器中,客户端登陆iscsi,就可以在客户端保存文件,在服务端存储

安装:
挂载cdrom   到/media
设置yum库文件目录          vi /etc/yum.repos.d/server.repo          file:///media/Server

进入 /media/ClusterStorage
rpm -ivh scsi-target-utils-1.0.8-0.el5.i386.rpm 

安装服务端iscsi时候可能需要依赖包,把那三个依赖包安装
yum -y install libverbs* && librdmacm*            有时候这个会报错,需要把后面这个导入    rpm --import /etc/pki/rpm-gpg/RPM* 
cd   /media/ClusterStorage
rpm -ivh perl-Config-General-2.40-1.el5.noarch.rpm 

再次安装iscsi

安装成功

servie tgtd restart               开启服务
chkconfig tgtd on               开机自启动
修改tgtd的配置文件,把sbd1分区共享出去(前提是已经创建好分区sdb1,并格式化了mkfs.ext3 /dev/sdb1

 vi /etc/tgt/targets.conf 



tgtadm --lld iscsi --op show --mode target               查看共享


到第二台服务器上:
安装客户端的iscsi
用rpm安装
先把cdrom挂载到/media中

rpm -ivh /media/Server/iscsi-initiator-utils-6.2.0.872-6.el5.i386.rpm 

重启iscsi
service iscsi restart
chkconfig iscsi on               设置开机自动启动

iscsiadm --mode discoverydb --type sendtargets --portal 192.168.18.104 --discover                    发现设备,查看名称


 iscsiadm --mode node --targetname iqn.2008-09.com.example:disk1 --portal 192.168.18.104:3260 --login               登陆设备


现在已经增加了一块硬盘,在服务端是分区,但是到了客户端就识别为磁盘


现在共享已经完成,下面测试一下:
在客户端上吧sdb挂载到/data中,创建几个文件,然后到服务端查看,是否保存在了服务器上

将sdb挂载到/data中


创建了20个文件


然后在服务端查看是否在分区中也增加了20个文件:


可以设置自动挂载操作:
vi /etc/fstab
















转载于:https://www.cnblogs.com/xiaoxiao5ya/p/701953f63cd366844a1c3d3893b24aca.html

<think>好的,我需要解决用户提到的iSCSI共享存储在两台机器上显示数据不一致的问题。首先,我要回忆一下iSCSI的基本概念和工作原理,确保自己理解正确。iSCSI允许通过IP网络将存储设备作为块设备挂载到多个服务器上,所以理论上这些服务器应该看到相同的存储内容。但用户遇到的是数据不一致的情况,这说明可能存在并发访问的问题,或者配置错误。 接下来,我需要分析可能的原因。根据用户提供的引用资料,共享磁盘支持多挂载点,但需要正确配置。首先想到的是是否启用了集群文件系统。普通的文件系统如ext4或NTFS并不支持多节点同时读写,这可能导致数据损坏或不一致。所以第一个解决方案应该是使用集群文件系统如GFS2或OCFS2,这些文件系统设计用于多节点访问,能够处理并发操作。 第二个可能的原因是缓存不一致。如果两台服务器启用了本地缓存,但缓存同步机制有问题,可能导致数据不同步。这时候需要检查iSCSI Initiator的缓存设置,并考虑禁用缓存或使用Write-through模式,确保数据实时写入存储设备。 第三个方面是访问控制配置。iSCSI的LUN访问权限如果没有正确设置,可能导致某服务器无法正确写入或读取数据。需要确认两台服务器的IQN是否都被允许访问同一个LUN,并且权限设置正确,比如读写权限是否一致。 第四点考虑存储设备本身的同步机制。某些iSCSI存储设备可能需要额外配置多路径或同步策略,确保数据在多个连接间保持一致。此外,存储设备的固件或驱动是否最新,也可能影响数据同步。 然后,用户可能还需要检查网络问题。延迟或丢包可能导致数据未能及时同步,所以检查网络连接稳定性,使用ping或traceroute排查潜在的网络问题。 最后,数据同步工具也是一个选项。如果以上方法无法解决,可能需要使用像DRBD这样的工具来保持数据同步,或者在应用层实现同步机制,比如rsync,但这可能增加复杂性。 在回答时,需要按照结构清晰的步骤,逐步列出可能的原因和对应的解决方案,同时引用用户提供的资料中的相关信息,比如共享磁盘的特性、IQN的配置等,确保回答的准确性和可靠性。同时要使用中文,数学公式正确应用格式,并生成相关问题。</think>### iSCSI共享存储数据不一致的解决方案 #### 1. **检查文件系统类型** - **问题**:普通文件系统(如ext4、NTFS)不支持多节点同时读写,可能导致数据损坏或缓存不一致。 - **解决方案**:使用集群文件系统(如GFS2、OCFS2)或分布式文件系统(如Ceph)。这些文件系统通过锁机制和日志协调多节点访问[^3]。 - **操作示例**: ```bash # 安装OCFS2工具包(Linux) yum install ocfs2-tools # 格式化磁盘为OCFS2 mkfs.ocfs2 /dev/sdb1 ``` #### 2. **禁用本地缓存** - **问题**:iSCSI Initiator可能启用本地缓存,导致数据未实时同步到存储设备。 - **解决方案**:在挂载时禁用缓存或使用`Write-through`模式。 - **操作示例**(Linux): ```bash # 修改iSCSI Initiator配置文件 vi /etc/iscsi/iscsid.conf # 设置node.session.timeo.replacement_timeout=180 和 node.conn[0].timeo.noop_out_interval=0 # 挂载时使用同步写入选项 mount -o sync /dev/sdb1 /mnt/iscsi ``` #### 3. **验证LUN访问权限** - **问题**:未正确配置LUN的访问控制,导致某服务器无法写入。 - **解决方案**:在iSCSI Target端检查两台服务器的IQN是否均被允许访问同一LUN,并确认权限为读写模式[^1]。 - **操作示例**(Target配置示例): ```bash # 使用targetcli工具(Linux) targetcli > cd /iscsi/iqn.2023-01.com.example:storage/tpg1/acls > create iqn.2023-01.com.example:server1 > create iqn.2023-01.com.example:server2 ``` #### 4. **检查存储设备同步机制** - **问题**:存储设备自身未启用多节点同步策略。 - **解决方案**:启用存储设备的原子写操作或多路径同步功能,并更新固件/驱动。 - **操作建议**:联系存储厂商确认设备是否支持多主机并发访问。 #### 5. **排查网络延迟或丢包** - **问题**:网络不稳定导致数据包丢失,影响同步。 - **解决方案**:使用`ping`和`traceroute`测试网络质量,优化交换机配置(如启用Jumbo Frame)。 - **示例命令**: ```bash ping -c 100 <存储设备IP> # 测试丢包率 ethtool -i eth0 # 检查网卡配置 ``` #### 6. **使用数据同步工具** - **问题**:若存储层无法解决,需在应用层补充同步机制。 - **解决方案**:部署DRBD(分布式复制块设备)或定时运行`rsync`。 - **操作示例**(DRBD配置片段): ```conf resource res0 { protocol C; # 同步写入模式 on server1 { device /dev/drbd0; disk /dev/sdb1; } on server2 { device /dev/drbd0; disk /dev/sdb1; } } ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值