配置ISCSI-Target构建网络存储服务器,在典型服务器中,存储


前言

相对于服务器使用的本地存储系统,网络存储是一种新的存储模式。在典型服务器中,存储数据用的磁盘往往安装在本机上。网络磁盘则剥离计算资源和存储资源。将数据单独存储在一个具有更高可靠性的存储服务器中。这台存储服务器可以是一个NAS系统,更多的是SAN系统。这种模式中,即便是业务服务器宕机,也不会造成业务数据的失效。

无论在可靠性还是在空间利用率上,网络存储系统相对于单机存储系统都有很大的优势。服务器设计时,不可能因为追求磁盘系统可靠性而增加服务器成本。从这点上来说,单机磁盘系统的稳定性满足不了某些业务的要求(比如,数据库)。另一方面,根据对公司内部的服务器分析结果。在磁盘有效空间典型值为600GB服务器中,能有效利用(利用率大于80%)这个存储量的服务器只占不到5%。所以存在严重的磁盘空间浪费现象。

对于服务器存储,普遍采用根据业务服务器计算密集度、网络密集度、I/O密集度三个性能指数综合考虑,选择合适的策略。对于计算密集型和网络密集型业务(DHCP和DNS)采用本机存储,并定时备份配置文件和业务文件。对于网络密集型和I/O密集型,大数据量的业务(如ftp和流媒体直播)采用网络分离的ip-SAN系统。而对于三项直属都很高的极品业务(数据库,数据仓库)则采用fc-SAN系统。

IP-SAN和FC-SAN简单概念介绍一下,详细信息请网络搜索。IP-SAN是以TCP/IP协议工作的存储网络。典型应用有ISCSI和FCOE-SAN。优点是,服务器和客户机没有距离限制。缺点是速度较低,典型值为1Gbps。FC-SAN则是通过光纤网络,通过FC协议传输数据块的存储网络。典型应用有光纤存储网FCSAN。优点是,高速(现阶段典型值为8Gbps),但是有距离限制。另外还有一种极品存储网络,被称为下一代的存储网络。名为InfiniBand。详细信息参见维基百科:infiniband词条

理论描述

ISCSI系统分两种角色:ISCSI Initiator和ISCSI Target。前者为客户端,后者为服务器端。两者通过TCP的3260端口通信。下面是维基百科部分内容摘抄。

iSCSI(发音为 /аɪskʌzi/)又成为IP-SAN,是一种基于因特网及SCSI-3协议下的存储技术,由IETF提出,并于2003年2月11日成为正式的标准。与传统的SCSI技术比较起来,iSCSI技术有以下三个革命性的变化:

把原来只用于本机的SCSI协同透过TCP/IP网络传送,使连接距离可作无限的地域延伸;连接的服务器数量无限(原来的SCSI-3的上限是15);由于是服务器架构,因此也可以实现在线扩容以至动态部署。

iSCSI使用TCP/IP的port 860 和 3260 作为沟通的渠道。透过两部计算机之间利用iSCSI的协议来交换SCSI命令,让计算机可以透过高速的局域网集线来把SAN模拟成为本地的储存装置。

ISCSI使用 TCP/IP 协议(一般使用TCP端口860和3260)。 本质上,iSCSI 让两个主机通过 IP 网络相互协商然后交换 SCSI 命令。这样一来,iSCSI 就是用广域网仿真了一个常用的高性能本地存储总线,从而创建了一个存储局域网(SAN)。不像某些 SAN 协议,iSCSI 不需要专用的电缆;它可以在已有的交换和 IP 基础架构上运行。然而,如果不使用专用的网络或者子网( LAN 或者 VLAN ),iSCSI SAN 的部署性能可能会严重下降。于是,iSCSI 常常被认为是光纤通道(Fiber Channel)的一个低成本替代方法,而光纤通道是需要专用的基础架构的。但是,基于以太网的光纤通道(FCoE)则不需要专用的基础架构。

虽然 iSCSI 可以与任意类型的 SCSI 设备进行通信,系统管理员几乎总是使用它来连接服务器计算机 (例如,数据库服务器) 和磁盘卷上存储阵列。 使用iSCSI SAN 的目的通常有以下两个:

存储整合 公司希望将不同的存储资源从分散在网络上的服务器移动到统一的位置(常常是数据中心); 这可以让存储的分配变得更为有效。 SAN 环境中的服务器无需任何更改硬件或电缆连接就可以得到新分配的磁盘卷。

灾难恢复 公司希望把存储资源从一个数据中心镜像到另一个远程的数据中心上,后者在出现长时间停电的情况下可以用作热备份。 特别是,iSCSI SAN 使我们只需要用最小的配置更改就可以在 WAN 上面迁移整个磁盘阵列,实质上就是,把存储变成了“可路由的”,就像普通的网络通信一样。

操作步骤

本部分讲述CentOS 6 版本下的安装方法,实际情况请根据对应发行版本适当调整操作步骤。本部分同样只讲述最简单便捷的配置方法。不详细讲述每个参数的作用。关于这方面的内容,请阅读官方文档和man手册。

准备工作

安装软件

yum groupinstall ‘network storage server’ ‘iSCSI Storage Client’ -y

准备分享的卷组

1.1.2.3  使用LVM 物理卷分区创建LVM 卷组 ,并以如下安排创建LVM 逻辑卷:10G(ext4 , /),all the rest (ext4 , /home ),iscsi。ISCSI 分区命名方式为:

LogVol_iscsi0[0-9] 不格式化  10G 磁盘裸设备LinuxLogVol_iscsi1[0-4] 不格式化  20G 磁盘裸设备windowsLogVol_iscsi2[0-2] 不格式化  40G 磁盘裸设备 应用数据LogVol_iscsi31  ext4        33.xG 文件共享

配置ISCSI target

编辑配置文件:/etc/tgt/targets.conf 修改添加如下内容:

<target iqn.2012.com.honliv:storage.iscsi0>
#target是用户端登录的单位。
##客户端登录target,就获得了target下的所有磁盘的使用权。
backing-store /dev/vg_storage/LogVol_iscsi00
##lun号从0开始,依次递增。
backing-store /dev/vg_storage/LogVol_iscsi01
backing-store /dev/vg_storage/LogVol_iscsi02
#分享一个backing-store形式的磁盘。用来发布未格式化的分区,块文件等。
##还有一种direct-store形式,用来发布整个硬盘。
write-cache on
##开启写缓存。
vendor_id honliv Inc.
##设置厂商ID,用来标识一部分内容。
</target>

同样方法,发布如下两个target。

<target iqn.2012.com.honliv:storage.iscsi1>
backing-store /dev/vg_storage/LogVol_iscsi10
backing-store /dev/vg_storage/LogVol_iscsi11
backing-store /dev/vg_storage/LogVol_iscsi12
write-cache on
vendor_id honliv Inc.
</target>

<target iqn.2012.com.honliv:storage.iscsi2>
backing-store /dev/vg_storage/LogVol_iscsi20
backing-store /dev/vg_storage/LogVol_iscsi21
backing-store /dev/vg_storage/LogVol_iscsi22
write-cache on
vendor_id honliv Inc.
</target>

<target iqn.2012.com.honliv:storage.iscsi3>
backing-store /dev/vg_storage/LogVol_iscsi31
write-cache on
vendor_id honliv Inc.
</target>

修改防火墙配置文件,开启端口3260:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3260 -j accept
service iptables restart

启动tgtd服务:

service tgtd start
chkconfig tgtd on

验证配置,本机执行如下命令,应该有如下执行结果:

[root@storage ~]# iscsiadm --mode discovery -t sendtargets -p storage
10.1.100.220:3260,1 iqn.2012.com.honliv:storage.iscsi0
10.1.100.220:3260,1 iqn.2012.com.honliv:storage.iscsi1
10.1.100.220:3260,1 iqn.2012.com.honliv:storage.iscsi2
10.1.100.220:3260,1 iqn.2012.com.honliv:storage.iscsi3

在客户端安装iSCSI Storage Client软件包组后,同样执行上述命令验证配置。

结语

本文档根据作者经验,简单描述了建立一个storage服务器的过程。适合有一定Linux基础的用户阅读使用。

相关内容