构建iscsi网络存储服务

网络存储概述:

   随着企业中数据信息的不断增长,尤其当成百上千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,如需转载请自行联系原作者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/286916.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10个python办公黑科技,助你办公效率提高100倍

1946年&#xff0c;世界上第一台通用计算机“ENIAC”在美国宾夕法尼亚大学诞生&#xff1b;“ENIAC”占地170平方米&#xff0c;重达30吨&#xff0c;耗电功率约150千瓦&#xff0c;每秒钟可进行5000次运算&#xff0c;这个庞然大物用于美国国防部进行弹道计算。 在当时&#…

Flutter之Container

1、Container介绍 我们先看它的构造方法 Container({Key key,this.alignment,this.padding, //容器内补白&#xff0c;属于decoration的装饰范围Color color, // 背景色Decoration decoration, // 背景装饰Decoration foregroundDecoration, //前景装饰double width,//容器的宽…

关于jQuery.query.js 取参数的一个小问题

形如&#xff1a;http://localhost:10864/srch.htm?keys&type1 这样的地址&#xff0c;如果我们要取keys的参数&#xff1a; var srchKey $.query.get("keys"); 那么得到的将是‘true’ &#xff0c;而不是空客串&#xff0c;这常常不是我们想要的 。 修正办法…

安卓模拟器获取服务器信息出错,安卓模拟器客户端与服务器不同步

安卓模拟器客户端与服务器不同步 内容精选换一换目前从本地或虚拟机通过DRS备份迁移功能直接迁移到本云RDS for SQL Server实例上&#xff0c;在迁移完成后还需要针对Login账号&#xff0c;DBLink&#xff0c;AgentJOB&#xff0c;关键配置进行识别&#xff0c;并手动完成相关同…

Blazor University (24)路由 —— 可选路由参数

原文链接&#xff1a;https://blazor-university.com/routing/optional-route-parameters/可选路由参数Blazor 不明确支持可选路由参数&#xff0c;但可以通过在组件上添加多个 page 声明轻松实现等效。例如&#xff0c;更改标准 Counter.razor 页面以添加额外的 URL。page &qu…

【无人机组装与调试】第六章 电调、电池、电机

【无人机组装与调试】系列课程全集: 第一章 概述 第二章 关于新西达30A电调说明书的问题 第三章 舵机安装与调整 第四章 F450四轴装机实例-选择机型、需要的器材工具材料 第五章 无人机遥控器 第六章 电调、电池、电机 一、电调 6.1.1 电调的概念 电调,全称电子调速器,英…

关于tomcat和sessionCookieName和SESSION_PARAMETER_NAME以及disableURLRewriting参数原理和使用...

关于tomcat和sessionCookieName和SESSION_PARAMETER_NAME以及disableURLRewriting参数 关于session和cookie参考&#xff1a; http://www.blogjava.net/freeman1984/archive/2011/09/02/357833.html http://www.blogjava.net/freeman1984/archive/2010/09/09/331501.html http:…

我让代码生了个孩子继承了他爸爸谁知他爸爸继承了他爷爷(16)

本系列文章将会以通俗易懂的对话方式进行教学&#xff0c;对话中将涵盖了新手在学习中的一般问题。此系列将会持续更新&#xff0c;包括别的语言以及实战都将使用对话的方式进行教学&#xff0c;基础编程语言教学适用于零基础小白&#xff0c;之后实战课程也将会逐步更新。 若…

linux之lrzsz

1、lrzsz介绍 我们利用lrzsz进行windows和linux间的文件上传下载 2、安装 在ubuntu系统下 sudo apt-get install lrzsz 在centos系统下 yum install lrzsz 3、使用 1)、windows上传文件到linux环境,使用如下命令 rz

POJ 1611 The Suspects (并查集)

The Suspects题目链接&#xff1a; http://acm.hust.edu.cn/vjudge/contest/123393#problem/B Description 严重急性呼吸系统综合症( SARS), 一种原因不明的非典型性肺炎,从2003年3月中旬开始被认为是全球威胁。为了减少传播给别人的机会, 最好的策略是隔离可能的患者。 在Not-…

Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原理分析(2)...

函数load也是实现在文件hardware/libhardware/hardware.c文件中&#xff0c;如下所示&#xff1a; static int load(const char *id, const char *path, const struct hw_module_t **pHmi) { int status; void *handle; struct hw_module_t …

Win8消费者预览版下载地址 包含中文下载地址及中文手册

Win8消费者预览版下载地址&#xff08;32位英文版&#xff09;&#xff1a; http://ak.or.esd.microsoft.com/pr/WCPDL/8A9D4FDFF736C5B1DBF956B89D6C8FDFD925DACD2/Windows8-ConsumerPreview-32bit-English-x1794225.esd Win8消费者预览版下载地址&#xff08;64位英文版&…

VS2019社区版(Community)试用30天过期的有效解决办法

VS2019社区版是免费的&#xff0c;前提是你得登陆自己的账户&#xff0c;如果一开始安装时没有登陆&#xff0c;那么就会只有30天有效期。此时&#xff0c;需要我们登陆微软账号&#xff0c;重新验证即可。 登陆微软账号&#xff0c;即可继续免费试用。

【万字长文】使用 LSM Tree 思想实现一个 KV 数据库

目录设计思路内存表WALSSTable 的结构SSTable 元素和索引的结构SSTable Tree内存中的 SSTable数据查找过程何为 LSM-Treee参考资料整体结构实现过程文件压缩测试插入测试加载测试查找测试SSTable 结构SSTable 文件结构SSTable Tree 结构和管理 SSTable 文件读取 SSTable 文件SS…

linux之安装mysql提示Error: Unable to find a match: mysql-community-server

1 问题 在centos系统下安装mysql,命令如下 yum -y install mysql-community-server 提示错误如下 [root@iZm5e6dk6exl71zbx327zvZ mysql]# yum -y install mysql-community-server MySQL Connectors Community …

记录部件中GetFieldControlByFieldName(字段值样式设置)用法

度量快速开发平台中&#xff0c;记录部件上&#xff0c;不单是字段名称可以设置样式&#xff0c;要填入内容的方框也可以设置样式。通过获取记录部件上某一个字段的输入控件&#xff0c;在二次开发中不常用。该方法只有一个参数&#xff0c;即要获取对象的字段&#xff0c;需要…

C/C++/Linux工程师学习资料干货路线这都有,从入门到实战!【CSDN宝藏资料图鉴第二期】

若是大一学子或者是真心想学习刚入门的小伙伴可以私聊我&#xff0c;若你是真心学习可以送你书籍&#xff0c;指导你学习&#xff0c;给予你目标方向的学习路线&#xff0c;无套路&#xff0c;博客为证。 前言 CSDN 是全球知名的开发者社区&#xff0c;创建于1999年&#xff…

你要的来了:ArcGIS空间插值分析方法权威解读

插值问题的提出??? 一、趋势面 Trend is a global polynomial interpolation that fits a smooth surface defined by a mathematical function (a

Socket解决粘包问题2

在AsynServer中对接收函数增加接收判断&#xff0c;如果收到客户端发送的请求信息&#xff0c;则发送10个测试包给发送端&#xff0c;否则继续接收&#xff0c;修改后的接收代码如下&#xff1a; private void AsynReceive(){byte[] data new byte[1024];//接收缓存string rec…

C# WebBrowser 取 window.open 新窗口 url的方法

System.Windows.Forms.WebBrowser wb; //WebBrowser 对象wb.NewWindow new CancelEventHandler(wb_NewWindow);wb.DocumentCompleted delegate{ #region 处理window.open新开窗口的问题System.Windows.Forms.HtmlElement html wb.Document.CreateElemen…