构建iscsi网络存储服务

本文涉及的产品
文件存储 NAS,50GB 3个月
简介:

网络存储概述:

   随着企业中数据信息的不断增长,尤其当成百上千TB的数据需要备份、恢复,以及面临着扩容、灾难恢复等需求时,DAS(直接附加存储,就是通过与计算机主板的I/O接口,如IDESCSI相连接由本机操作系统负责读写及管理)方式使得数据的管理与维护日益困难。正因为如此,网络存储技术应运而生,其最常见的就是NASSAN。

SANstorage area network,存储区域网络)

SAN是通过光纤交换机、光纤路由器等设备将磁盘阵列、磁带机或独立的ISCSI设备与服务器连接,构成一个高速存储子网,存储的数据以数据块的形式通过ISCSI协议进行传输,从而优于普通的IP包传输。

NAS(network attachment storage,网络附加存储)

NAS存储设备相当于一台独立的服务器,设备本身带有操作系统,也拥有网络接口,因此不依赖于其他服务器,在NAS设备中为客户机分配存储空间时,通常采用共享文件夹的方式进行发布,存储的数据以文件的形式进行传输,采用CIFS或者NFS等协议。

iscsiiscsi= internet Small Computer System Interface 

是由IEETF开发的网络存储标准,目的是为了用IP协议将存储设备连接在一起。通过在IP网上传送SCSI命令和数据,ISCSI推动了数据在网际之间的传递,同时也促进了数据的远距离管理。由于其出色的数据传输能力,ISCSI协议被认为是促进存储区域网(SAN)市场快速发展的关键因素之一。因为IP网络的广泛应用, ISCSI能够在LANWAN甚至internet上进行数据传送,使得数据的存储不再受地域的限制。


一、构建iscsi服务器

   ISCSI服务器通常也称为Target端,负责定义存储对象、分配逻辑空间LUNLogical Unit,逻辑单元)。在RHEL6服务器中需要安装scsi-target-utils软件包,对应的系统服务为tgtd,命令行管理工具为tgtadm。因此需要安装相应的软件包,安装如下:

1
[root@nas /]#yum -y install scsi-target-utils

   下面依次讲解配置ISCSI的主要过程:准备存储设备、创建ISCSI对象、为客户机分配存储空间,客户机使用ISCSI

   此处所说的存储设备指将要分配给某一个客户机使用的设备文件,在RHEL6系统中,硬盘、分区、逻辑卷、软RAID等都可以用作ISCSI服务的存储设备,为了延续磁盘空间的可扩展性,建议以一个逻辑卷为单位分配给客户机使用,对于个别有特殊要求的客户机,也可以将一个软RAID阵列分配出去。

1、准备存储设备

这里将Target主机一个逻辑卷作为iSCSI共享磁盘,共享给一台linux主机使用。创建一个逻辑卷,名为lv00,将来分配给客户机使用。如下图所示:

1
2
3
4
5
6
7
8
[root@nas /]#pvcreate /dev/sdb /dev/sdc /dev/sdd    //创建物理卷
   Physical volume  "/dev/sdb"  successfully created
   Physical volume  "/dev/sdc"  successfully created
   Physical volume  "/dev/sdd"  successfully created
[root@nas /]#vgcreate vg00 /dev/sdb /dev/sdc /dev/sdd    //创建卷组
   Volume group  "vg00"  successfully created
[root@nas /]#lvcreate -L  30  -n lv00 vg00    //创建逻辑卷
   Logical volume  "lv00"  created

2、创建iscsi对象

   根据iscsi定义的规范,Target的命名格式为“iqn.YYYY-mm.反向域名:识别标记”,其中YYYY-mm表示年月,方向域名建议为服务器FQDN的倒序,识别标记是用户自定义的字符串(以便区分)。例如:作者前面创建的LVM卷可以使用对象名为“iqn.2013-09.com.yunqn.www:lvm”。

使用tgtadm工具创建iscsi对象时,主要命令选项如下所述:

-L,--lld:指定驱动类型,如“-L iscsi”表示iscsi存储。

-o,--op:指定操作你类型,如“-o new”表示创建,“-o delete”表示删除。

-m,--mode:指定管理目标,如“-m target”表示iscsi对象。

-t,--tid:指定对象ID号,如“-t 1”表示第一个对象。

-T,--targetname:指定iscsi对象名称, 应符合“iqn.YYYY-mm.反向域名:识别标记”规范。

下面以刚才创建的LVM卷为例,来创建一个iscsi对象。如下:创建之前需要先启动tgtd服务,并设置系统启动时自动启动,iscsi通信的端口:3260/tcp,以明文传输数据。

1
2
3
4
[root@nas /]#service tgtd start
[root@nas /]#netstat -anpt | grep tgt
tcp     0    0  0.0 . 0.0 : 3260     0.0 . 0.0 :*    LISTEN         20353 /tgtd
[toot@nas /]#tgtadm -L iscsi -o  new  -m target -t  1  -T iqn. 2013 - 09 .com.yunqn.www:lvm

3、为客户端分配存储空间

   创建好iscsi对象后,就可以在存储对象中为客户机分配可用空间了。使用tgtadm工具时,只要命令选项如下所述:

-l,--lun:指定LUN的ID号,如“-l 1”表示第一个LUN。

-b,--backing-store:指定块设备位置,如“-b /dev/vg00/lv00”。

-l,--initiator-address:指定客户机地址,如“-l 192.168.1.10”。

下面以前面准备的逻辑卷“lv00”为例,将其挂在到刚才我们新建的iscsi对象上,并指定给客户机192.168.1.10的主机使用。其中选项“-m logicalunit”可简写为“-m lu”,“--lld”可简写为“-L”。

1
2
[root@nas /]#tgtadm --lld iscsi -o  new  -m logicalunit -t  1  -l  1  -b /dev/vg00/lv00
[root@nas /]#tgtadm --lld iscsi -o bind -m target -t  1  -I  192.168 . 1.10

完成上述配置以后,可以使用target命令,结合相关参数来查看iscsi对象的信息。如下:

1
[root@nas /]#tgtadm -L iscsi -o show -m target

4、保存配置,并设置开机自动加载。

修改文件“/etc/tgt/targets.conf”,将target、LUN信息保存为静态配置,以便在重启tgtd服务后仍然有效。为了保证客户机正常使用,tgtd服务应该自动启用,另外,iscsi服务器系统应先于客户机启动。

1
2
3
4
5
6
7
[root@nas /]#vim /etc/tgt/targets.conf
... //省略部分内容
<target iqn. 2013 - 09 .com.yunqn.www:lvm>
     backing-store /dev/vg00/lv00
     initiator-address  192.168 . 1.10
</target>
<root@nas />#chkconfig --level  35  tgtd on

注意:大家也可以省略“创建iscsi对象”和“为客户端分配存储空间”,而直接将配置写到配置文件“targets.conf”中,然后重启tgtd服务加载配置文件即可生效。


二、客户端使用iscsi存储设备

   iscsi客户机也称为initiator端,负责连接iscsi设备,在iscsi设备中创建文件系统,以及存储数据。在RHEL 6客户机中需要安装iscsi-initiator-utils软件包,对应的系统服务为iscsi,命令管理工具为iscsiadm。

1
[root@nas /]#yum -y install iscsi-initiator-utils lsscsi

1、发现并连接iscsi设备

   使用iscsiadm工具之前,先启动iscsi服务。查找iscsi设备可以参考以下命令操作选项:

-m discovery:表示发现/查找。

-t sendtargets:表示发布的target。

-p ip:port:用来指定服务器的IP地址以及tgtd的监听端口。

1
2
3
4
5
6
[root@nas /]#service iscsi start
[root@nas /]#iscsiadm -m discovery -t sendtargets -p  192.168 . 1.1  //查找iscsi对象
192.168 . 1.1 : 3260 , 1  iqn. 2013 - 09 .com.yunqn.www:lvm
[root@nas /]#iscsiadm -m node -T iqn. 2013 - 09 .com.yunqn.www:lvm --login  //连接iscsi对象
Logging  in  to [iface: default ,target:iqn. 2013 - 09 .com.yunqn.www:lvm,portal: 192.168 . 1.1 , 3260 ]
Logging to [iface: default ,target:iqn. 2013 - 09 .com.yunqn.www:lvm,portal: 192.168 . 1.1 , 3260 ] successful

注意:看到“Login to...successful”表示连接成功了,而后面的“--login”表示连接iscsi设备,如果是“--logout”表示断开已连接的iscsi设备。

2、使用iscsi存储设备

当成功连接iscsi到设备时,此时的iscsi设备就好像本地服务器的磁盘一样了,正常使用前需要将其分区,格式化,挂载等一系列动作。只有当iscsi服务器分配给客户机的LUN是一整块物理硬盘,而且此硬盘中已经包含了分区表,文件系统时,客户机才可以直接使用。

1
2
3
4
5
6
7
[root@nas /]#fdisk -l    //查看链接的iscsi设备
[root@nas /]#fdisk -l /dev/sdc    //将连接的iscsi设备进行分区
... //省略部分内容
[root@nas /]#partprobe /dev/sdc
[root@nas /]#mkfs -t ext4 /dev/sdc1   //格式化新建的分区
[root@nas /]#mkdir /opt/data
[root@nas /]#mount /dev/sdc1 /opt/data    //挂载新建的分区

3、保存iscsi连接配置

   为了是iscsi存储设备使用正常,客户机应确保iscsi服务能够自动启用,并将挂载iscsi设备中文件系统的操作写入“/etc/fstab”文件中。由于iscsi设备的特殊性,fstab文件中的配置记录应启用“_netdev”挂载参数,表示这是一个网络设备。

1
2
3
4
[root@nas /]#chkconfig --level  35  iscsi on
[root@nas /]#vim /etc/fstab
... //省略部分内容
/dev/sdc1    /opt/data    ext4    defaults,_netdev     0  0

也可以使用“blkid /dev/sdc1”命令查出“sdc1”的UUID,使用UUID代替fstab文件中的“/dev/sdc1”,这样更有安全保障。


保存上述配置以后,重新启动客户机后将自动连接iscsi对象,并挂载指定的网络存储文件系统。



本文转自yun5277 51CTO博客,原文链接:http://blog.51cto.com/dengqi/1293971,如需转载请自行联系原作者

相关实践学习
函数计算部署PuLID for FLUX人像写真实现智能换颜效果
只需一张图片,生成程序员专属写真!本次实验在函数计算中内置PuLID for FLUX,您可以通过函数计算+Serverless应用中心一键部署Flux模型,快速体验超写实图像生成的魅力。
相关文章
|
3月前
|
前端开发 JavaScript 开发者
JavaScript:构建动态网络的引擎
JavaScript:构建动态网络的引擎
|
5月前
|
机器学习/深度学习 算法 量子技术
GQNN框架:让Python开发者轻松构建量子神经网络
为降低量子神经网络的研发门槛并提升其实用性,本文介绍一个名为GQNN(Generalized Quantum Neural Network)的Python开发框架。
114 4
GQNN框架:让Python开发者轻松构建量子神经网络
|
6月前
|
存储 运维 API
HPE OneView 10.0 - HPE 服务器、存储和网络设备集中管理软件
HPE OneView 10.0 - HPE 服务器、存储和网络设备集中管理软件
125 1
|
3月前
|
人工智能 监控 数据可视化
如何破解AI推理延迟难题:构建敏捷多云算力网络
本文探讨了AI企业在突破算力瓶颈后,如何构建高效、稳定的网络架构以支撑AI产品化落地。文章分析了典型AI IT架构的四个层次——流量接入层、调度决策层、推理服务层和训练算力层,并深入解析了AI架构对网络提出的三大核心挑战:跨云互联、逻辑隔离与业务识别、网络可视化与QoS控制。最终提出了一站式网络解决方案,助力AI企业实现多云调度、业务融合承载与精细化流量管理,推动AI服务高效、稳定交付。
|
2月前
|
机器学习/深度学习 分布式计算 Java
Java与图神经网络:构建企业级知识图谱与智能推理系统
图神经网络(GNN)作为处理非欧几里得数据的前沿技术,正成为企业知识管理和智能推理的核心引擎。本文深入探讨如何在Java生态中构建基于GNN的知识图谱系统,涵盖从图数据建模、GNN模型集成、分布式图计算到实时推理的全流程。通过具体的代码实现和架构设计,展示如何将先进的图神经网络技术融入传统Java企业应用,为构建下一代智能决策系统提供完整解决方案。
314 0
|
3月前
|
机器学习/深度学习 算法 搜索推荐
从零开始构建图注意力网络:GAT算法原理与数值实现详解
本文详细解析了图注意力网络(GAT)的算法原理和实现过程。GAT通过引入注意力机制解决了图卷积网络(GCN)中所有邻居节点贡献相等的局限性,让模型能够自动学习不同邻居的重要性权重。
467 0
从零开始构建图注意力网络:GAT算法原理与数值实现详解
|
6月前
|
JSON 中间件 Go
Go 网络编程:HTTP服务与客户端开发
Go 语言的 `net/http` 包功能强大,可快速构建高并发 HTTP 服务。本文从创建简单 HTTP 服务入手,逐步讲解请求与响应对象、URL 参数处理、自定义路由、JSON 接口、静态文件服务、中间件编写及 HTTPS 配置等内容。通过示例代码展示如何使用 `http.HandleFunc`、`http.ServeMux`、`http.Client` 等工具实现常见功能,帮助开发者掌握构建高效 Web 应用的核心技能。
339 61
|
5月前
|
监控 安全 Go
使用Go语言构建网络IP层安全防护
在Go语言中构建网络IP层安全防护是一项需求明确的任务,考虑到高性能、并发和跨平台的优势,Go是构建此类安全系统的合适选择。通过紧密遵循上述步骤并结合最佳实践,可以构建一个强大的网络防护系统,以保障数字环境的安全完整。
132 12
|
4月前
|
存储 监控 Linux
Dell OpenManage Enterprise 4.5 - Dell 服务器、存储和网络设备集中管理软件
Dell OpenManage Enterprise 4.5 - Dell 服务器、存储和网络设备集中管理软件
101 0
|
6月前
|
JSON 编解码 API
Go语言网络编程:使用 net/http 构建 RESTful API
本章介绍如何使用 Go 语言的 `net/http` 标准库构建 RESTful API。内容涵盖 RESTful API 的基本概念及规范,包括 GET、POST、PUT 和 DELETE 方法的实现。通过定义用户数据结构和模拟数据库,逐步实现获取用户列表、创建用户、更新用户、删除用户的 HTTP 路由处理函数。同时提供辅助函数用于路径参数解析,并展示如何设置路由器启动服务。最后通过 curl 或 Postman 测试接口功能。章节总结了路由分发、JSON 编解码、方法区分、并发安全管理和路径参数解析等关键点,为更复杂需求推荐第三方框架如 Gin、Echo 和 Chi。