网络存储概述:

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

SANstorage area network,存储区域网络)

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

NAS(network p_w_upload 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。因此需要安装相应的软件包,安装如下:

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

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

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

1、准备存储设备

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

[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,以明文传输数据。

[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”。

[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对象的信息。如下:

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

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

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

[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。

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

1、发现并连接iscsi设备

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

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

-t sendtargets:表示发布的target。

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

[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是一整块物理硬盘,而且此硬盘中已经包含了分区表,文件系统时,客户机才可以直接使用。

[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”挂载参数,表示这是一个网络设备。

[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对象,并挂载指定的网络存储文件系统。