首先需要了解以下概念:
- GFS(Global File System):全局文件系统,可以实现多台服务器共享同一块磁盘数据的读写。
- iSCSI(Internet Small Computer System Interface):一种用于在IP网络上发送SCSI命令的协议,可以通过网络传输SCSI命令,来控制远程的SCSI设备。
下面我将详细讲解如何在Linux系统中搭建iSCSI+GFS网络存储系统。
系统要求
- 至少两台CentOS或RHEL服务器,其中一台安装iSCSI Target,另一台安装iSCSI Initiator。
- 安装GFS软件包。
搭建iSCSI Target
- 安装iSCSI Target软件:
yum -y install scsi-target-utils
- 编辑iSCSI Target配置文件
/etc/tgt/targets.conf
:
nano /etc/tgt/targets.conf
添加以下内容:
<target iqn.2021-09.com.example:target>
# 这里可以设置server的一些参数,例如iSCSI端口,数据传输方式等。
# 省略部分配置...
# 添加一个LUN
<logicalunit target_backend="blockstore">
# 配置LUN的大小,这里为10GB
<backing-store /dev/sdb1>
# 这里sdb1为待映射为LUN的磁盘分区
# 如果想添加多个LUN,可以在此继续添加
</backing-store>
</logicalunit>
</target>
- 启动iSCSI Target服务:
systemctl start tgtd.service
systemctl enable tgtd.service
搭建iSCSI Initiator
- 安装iSCSI Initiator软件:
yum -y install iscsi-initiator-utils
- 配置iSCSI Initiator,添加iSCSI Target:
iscsiadm -m discovery -t sendtargets -p <iSCSI target IP>
# 这里<iSCSI target IP>为iSCSI Target所在的服务器IP地址
# 获取到iSCSI Target后,连接到iSCSI Target
iscsiadm -m node -T <IQN> -p <iSCSI target IP> -l
# 替换<IQN>为iSCSI target的IQN,<iSCSI target IP>为iSCSI Target所在的服务器IP地址
- 显示连接状态:
iscsiadm -m session
- 创建新的分区,并格式化为GFS文件系统:
# 查看LUN路径,一般在/dev/sd*路径下
cat /proc/partitions
# 这里先假设LUN路径为/dev/sdc
# 创建新的分区
fdisk /dev/sdc
# 然后根据提示依次输入n、p、1、回车、回车、w,创建一个新的20GB的分区
# 格式化分区为GFS文件系统
mkfs.gfs2 -p lock_nolock -j 2 /dev/sdc1
# 这里-p lock_nolock参数设置为lock_nolock,表示不使用锁定机制,这可以在测试或者不要求如此高的性能时使用
使用GFS文件系统
- 挂载GFS文件系统:
mkdir -p /mnt/gfs
mount -t gfs2 /dev/sdc1 /mnt/gfs/
- 在GFS文件系统上进行测试:
cd /mnt/gfs/
touch test
echo "Hello World" > test
cat test
经过上述步骤,我们就成功搭建了iSCSI+GFS网络存储系统,可以实现多台服务器共享同一块磁盘数据的读写。
示例1:
假设我们已经在服务器A上搭建好了iSCSI Target,服务器B上搭建好了iSCSI Initiator,现在我们需要在服务器C上挂载GFS文件系统并进行读写测试。那么,我们只需要在服务器C上按照上述步骤,将iSCSI Initiator连接到iSCSI Target,并挂载GFS文件系统,即可进行读写测试。
示例2:
假设我们有两块硬盘,一块用于搭建iSCSI Target,另一块用于搭建iSCSI Initiator。那么,在创建LUN时,我们只需要在<backing-store>
标签中,将/dev/sdb1
替换为待映射为LUN的磁盘分区即可,例如/dev/sdd1
。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:linux搭建gfs系统 iscsi+GFS 实现网络存储 - Python技术站