构建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
相关文章
|
7天前
|
存储 监控 安全
单位网络监控软件:Java 技术驱动的高效网络监管体系构建
在数字化办公时代,构建基于Java技术的单位网络监控软件至关重要。该软件能精准监管单位网络活动,保障信息安全,提升工作效率。通过网络流量监测、访问控制及连接状态监控等模块,实现高效网络监管,确保网络稳定、安全、高效运行。
35 11
|
13天前
|
云安全 人工智能 安全
|
17天前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
44 3
|
20天前
|
算法 安全 网络安全
网络安全服务
机密主要利用密码学技术加密文件实现,完整主要利用验证码/Hash技术,可用**主要灾备来保障。 网络环境下的身份鉴别,当然还是依托于密码学,一种可以使用口令技术,另一种则是依托物理形式的鉴别,如身份卡等。其实更为安全的是实施多因子的身份认证,不只使用一种方式。数字签名可以用来保证信息的完整性,比如RSA就可以用于数字签名: 若A向B发送信息m则先用自己的保密密钥(私钥)对m加密,然后用B的公钥第二次加密,发送个B后,B先用自己的私钥解密一次,再用A的公钥解密即可。 Kerberos使用对称密码算法来实现通过可信第三方密钥分发中心的认证服务,已经成为工业界的事实标准。
31 3
|
25天前
|
数据采集 XML 存储
构建高效的Python网络爬虫:从入门到实践
本文旨在通过深入浅出的方式,引导读者从零开始构建一个高效的Python网络爬虫。我们将探索爬虫的基本原理、核心组件以及如何利用Python的强大库进行数据抓取和处理。文章不仅提供理论指导,还结合实战案例,让读者能够快速掌握爬虫技术,并应用于实际项目中。无论你是编程新手还是有一定基础的开发者,都能在这篇文章中找到有价值的内容。
|
1月前
|
安全 Linux 网络安全
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息。本文分三部分介绍 nmap:基本原理、使用方法及技巧、实际应用及案例分析。通过学习 nmap,您可以更好地了解网络拓扑和安全状况,提升网络安全管理和渗透测试能力。
127 5
|
1月前
|
SQL 安全 前端开发
PHP与现代Web开发:构建高效的网络应用
【10月更文挑战第37天】在数字化时代,PHP作为一门强大的服务器端脚本语言,持续影响着Web开发的面貌。本文将深入探讨PHP在现代Web开发中的角色,包括其核心优势、面临的挑战以及如何利用PHP构建高效、安全的网络应用。通过具体代码示例和最佳实践的分享,旨在为开发者提供实用指南,帮助他们在不断变化的技术环境中保持竞争力。
|
1月前
|
存储 网络协议 安全
软件管理,磁盘存储,文件系统以及网络协议
【11月更文挑战第9天】本文介绍了软件管理、磁盘存储和网络协议等内容。软件管理包括软件生命周期管理和软件包管理,涉及需求分析、设计、实现、测试、发布、维护等阶段,以及软件包的安装、升级和依赖关系处理。磁盘存储部分讲解了磁盘的物理结构、分区与格式化、存储管理技术(如 RAID 和存储虚拟化)。网络协议部分涵盖了分层模型、重要协议(如 HTTP、TCP、IP)及其应用与安全。
|
1月前
|
云安全 人工智能 安全
阿里云稳居公共云网络安全即服务市占率第一
日前,全球领先的IT市场研究和咨询公司IDC发布了《中国公有云网络安全即服务市场份额,2023:规模稳步增长,技术创新引领市场格局》报告。报告显示,阿里云以27.0%的市场份额蝉联榜首。
|
1月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
利用Python和TensorFlow构建简单神经网络进行图像分类
利用Python和TensorFlow构建简单神经网络进行图像分类
60 3