网络存储概述:
随着企业中数据信息的不断增长,尤其当成百上千TB的数据需要备份、恢复,以及面临着扩容、灾难恢复等需求时,DAS(直接附加存储,就是通过与计算机主板的I/O接口,如IDE、SCSI相连接由本机操作系统负责读写及管理)方式使得数据的管理与维护日益困难。正因为如此,网络存储技术应运而生,其最常见的就是NAS和SAN。
SAN(storage area network,存储区域网络)
SAN是通过光纤交换机、光纤路由器等设备将磁盘阵列、磁带机或独立的ISCSI设备与服务器连接,构成一个高速存储子网,存储的数据以数据块的形式通过ISCSI协议进行传输,从而优于普通的IP包传输。
NAS(network attachment storage,网络附加存储)
NAS存储设备相当于一台独立的服务器,设备本身带有操作系统,也拥有网络接口,因此不依赖于其他服务器,在NAS设备中为客户机分配存储空间时,通常采用共享文件夹的方式进行发布,存储的数据以文件的形式进行传输,采用CIFS或者NFS等协议。
iscsi(iscsi= internet Small Computer System Interface )
是由IEETF开发的网络存储标准,目的是为了用IP协议将存储设备连接在一起。通过在IP网上传送SCSI命令和数据,ISCSI推动了数据在网际之间的传递,同时也促进了数据的远距离管理。由于其出色的数据传输能力,ISCSI协议被认为是促进存储区域网(SAN)市场快速发展的关键因素之一。因为IP网络的广泛应用, ISCSI能够在LAN、WAN甚至internet上进行数据传送,使得数据的存储不再受地域的限制。
一、构建iscsi服务器
ISCSI服务器通常也称为Target端,负责定义存储对象、分配逻辑空间LUN(Logical 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,如需转载请自行联系原作者