首先需要了解以下概念:
- GFS(Global File System):全局文件系统,可以实现多台服务器共享同一块磁盘数据的读写。
- iSCSI(Internet Small Computer System Interface):一种用于在IP网络上发送SCSI命令的协议,可以通过网络传输SCSI命令,来控制远程的SCSI设备。
下面我将详细讲解如何在Linux系统中搭建iSCSI+GFS网络存储系统。
yum -y install scsi-target-utils
/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>
systemctl start tgtd.service
systemctl enable tgtd.service
yum -y install iscsi-initiator-utils
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
# 查看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,表示不使用锁定机制,这可以在测试或者不要求如此高的性能时使用
mkdir -p /mnt/gfs
mount -t gfs2 /dev/sdc1 /mnt/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
。
本文链接:http://task.lmcjl.com/news/13758.html