构建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,如需转载请自行联系原作者

相关实践学习
基于ECS和NAS搭建个人网盘
本场景主要介绍如何基于ECS和NAS快速搭建个人网盘。
阿里云文件存储 NAS 使用教程
阿里云文件存储(Network Attached Storage,简称NAS)是面向阿里云ECS实例、HPC和Docker的文件存储服务,提供标准的文件访问协议,用户无需对现有应用做任何修改,即可使用具备无限容量及性能扩展、单一命名空间、多共享、高可靠和高可用等特性的分布式文件系统。 产品详情:https://www.aliyun.com/product/nas
相关文章
|
16天前
|
安全 网络安全 数据安全/隐私保护
网络堡垒的构建者:洞悉网络安全与信息安全的深层策略
【4月更文挑战第9天】在数字化时代,数据成为了新的价值核心。然而,随之而来的是日益复杂的网络安全威胁。从漏洞利用到信息泄露,从服务中断到身份盗用,攻击手段不断演变。本文深入剖析了网络安全的关键组成部分:识别和防范安全漏洞、加密技术的应用以及提升个体和企业的安全意识。通过探讨这些领域的最佳实践和最新动态,旨在为读者提供一套全面的策略工具箱,以强化他们在数字世界的防御能力。
|
4天前
|
存储 安全 网络安全
云端防御策略:融合云服务与网络安全的未来之路
【4月更文挑战第20天】 随着企业数字化转型的加速,云计算已成为支撑现代业务架构的关键。然而,伴随其发展的网络安全威胁也不断演变,对信息安全提出更高要求。本文将深入探讨在动态云环境中实现网络安全防护的策略和技术,包括最新的加密技术、身份验证机制以及入侵检测系统等。通过分析当前云服务中的安全挑战,并结合前沿的网络安全技术,旨在为读者提供一个关于如何在享受云计算便利的同时保障数据安全的全面视角。
|
5天前
|
存储 安全 网络安全
构建坚固的防线:云计算环境下的网络安全策略
【4月更文挑战第19天】 随着企业纷纷迁移至云平台,云计算已成为现代信息技术架构的核心。然而,数据存储与处理的云端化也带来了前所未有的安全挑战。本文深入探讨了在复杂多变的云环境中,如何实施有效的网络安全措施,确保信息安全和业务连续性。通过分析云服务模型、网络威胁以及加密技术,提出了一系列切实可行的安全策略,旨在帮助组织构建一个既灵活又强大的防御体系。
16 1
|
5天前
|
监控 安全 算法
数字堡垒的构建者:网络安全与信息保护的现代策略
【4月更文挑战第19天】在信息化快速发展的今天,网络安全和信息安全已成为维护社会稳定、保障个人隐私和企业商业秘密的关键。本文将深入探讨网络安全漏洞的成因、加密技术的进展以及提升安全意识的重要性,旨在为读者提供一套综合性的网络防护策略,以应对日益猖獗的网络威胁。
7 1
|
7天前
|
运维 安全 Cloud Native
安全访问服务边缘(SASE):网络新时代的安全与连接解决方案
SASE(安全访问服务边缘)是一种云基安全模型,结合了网络功能和安全策略,由Gartner在2019年提出。它强调身份驱动的私有网络、云原生架构和全面边缘支持,旨在解决传统WAN和安全方案的局限性,如高延迟和分散管理。SASE通过降低IT成本、提升安全响应和网络性能,应对数据分散、风险控制和访问速度等问题,适用于移动办公、多分支办公等场景。随着网络安全挑战的增加,SASE将在企业的数字化转型中扮演关键角色。
|
9天前
|
机器学习/深度学习 资源调度 数据可视化
使用Python和Keras进行主成分分析、神经网络构建图像重建
使用Python和Keras进行主成分分析、神经网络构建图像重建
13 1
|
10天前
|
数据采集 API 数据安全/隐私保护
畅游网络:构建C++网络爬虫的指南
本文介绍如何使用C++和cpprestsdk库构建高效网络爬虫,以抓取知乎热点信息。通过亿牛云爬虫代理服务解决IP限制问题,利用多线程提升数据采集速度。示例代码展示如何配置代理、发送HTTP请求及处理响应,实现多线程抓取。注意替换有效代理服务器参数,并处理异常。
畅游网络:构建C++网络爬虫的指南
|
10天前
|
存储 负载均衡 监控
|
17天前
|
机器学习/深度学习 人工智能 运维
构建未来:AI驱动的自适应网络安全防御系统
【4月更文挑战第7天】 在数字时代的浪潮中,网络安全已成为维系信息完整性、保障用户隐私和确保商业连续性的关键。传统的安全防御策略,受限于其静态性质和对新型威胁的响应迟缓,已难以满足日益增长的安全需求。本文将探讨如何利用人工智能(AI)技术打造一个自适应的网络安全防御系统,该系统能够实时分析网络流量,自动识别并响应未知威胁,从而提供更为强大和灵活的保护机制。通过深入剖析AI算法的核心原理及其在网络安全中的应用,我们将展望一个由AI赋能的、更加智能和安全的网络环境。
28 0
|
26天前
|
缓存 网络协议 数据库连接
【底层服务/编程功底系列】「网络通信体系」深入探索和分析TCP协议的运输连接管理的核心原理和技术要点
【底层服务/编程功底系列】「网络通信体系」深入探索和分析TCP协议的运输连接管理的核心原理和技术要点
23 0

热门文章

最新文章