iSCSI网络存储服务
一网络存储概述
・直接附加存储
通常我们所熟悉的存储设别就是硬盘,其通过与计算机主板的I/O接口(如IDE、SCSI)相连接,由本机操作系统负责读写及管理,这就是最传统的数据存储技术,称为DAS(Direct Attached Storage,直接附加存储)
・网络存储
随着企业中数据信息的不断增长,尤其当成百上千TB的数据需要备份、恢复,以及面临着扩容、灾难恢复等需求时,DAS方式使得数据的管理与维护日益困难。正因为如此,网络存储技术应运而生,其最常见的就是NAS和SAN
SAN(Storage Area Network,存储区域网络)
SAN是通过光纤交换机、光纤路由器等设备将磁盘阵列、磁带机或独立的ISCSI设备与服务器连接,构成一个高速存储子网,存储的数据以数据块的形式通过ISCSI协议进行传输,从而优于普通的IP包传输;结构如图所示
NAS(network attachment storage,网络附加存储)
NAS存储设备相当于一台独立的服务器,设备本身带有操作系统,也拥有网络接口,因此不依赖于其他服务器,在NAS设备中为客户机分配存储空间时,通常采用共享文件夹的方式进行发布,存储的数据以文件的形式进行传输,采用CIFS或者NFS等协议;结构如图所示
除了购买硬件NAS设备外,通过为PC服务器安装FreeNAS系统平台也可以作为高校的NAS存储设备使用;FreeNAS是一个专为NAS、iSCSI存储定制的精简版UNIX系统,基于FreeBSD系统开发而成,其官网http://www.freenas.org(与此类似的存储平台还有OpenFiler)
二构建iSCSI服务器
・iSCSI概述
iSCSI(iscsi= internet Small Computer System Interface )
是由IEETF开发的网络存储标准,目的是为了用IP协议将存储设备连接在一起。通过在IP网上传送SCSI命令和数据,ISCSI推动了数据在网际之间的传递,同时也促进了数据的远距离管理
ISCSI技术的核心
是在TCP/IP网络上传输SCSI协议,是指用TCP/IP报文、和ISCSI报文封装SCSI报文,使得SCSI命令和数据可以在普通以太网络上进行传输
iSCSI协议
定义了在 TCP/IP 网络发送、接收 block(数据块)级的存储数据的规则和方 法。发送端将SCSI命令和数据封装到 TCP/IP 包中再通过网络转发,接收端收到 TCP/IP 包之后,将其还原为SCSI命令和数据并执行,完成之后将返回的SCSI命令和数据再封装到 TCP/IP包中再传送回发送端。而整个过程在用户看来,使用远端的存储设备就像访问本地的 SCSI设备一样简单
iSCSI的工作方式
服务(设备)端 target
客户(应用)端 initiator
・在RHEL6中搭建ISCSI存储服务器
ISCSI服务器通常也称为Target端,负责定义存储对象、分配逻辑空间LUN(Logical Unit,逻辑单元)(实验环境时,开虚拟机前最好添加四块以上硬盘)
1准备存储设备
存储设备指将要分配给某一个客户机使用的设备文件,在RHEL6系统中,硬盘、分区、逻辑卷、软RAID等都可以用作ISCSI服务的存储设备,为了延续磁盘空间的可扩展性,建议以一个逻辑卷为单位分配给客户机使用,对于个别有特殊要求的客户机,也可以将一个软RAID
LVM逻辑卷存储设备
将新添加的一块磁盘创建为物理卷,创建卷组,在卷组中创建一个容量为10G的逻辑卷
软RAID磁盘阵列
在Linux系统中做RAID,磁盘阵列的设备可以是一块磁盘中的三个以上的分区,也可以是三块或以上的磁盘;使用mdadm管理工具(默认已安装)来创建软RAID设备,这里使用三块硬盘,每块20G,创建一个RAID5阵列
[root@svr ~]# mdadm --create --auto=yes /dev/md0 --level=5 --raid-devices=4 --spare-devices=1 /dev/sd[b-f] 或简写为
执行完以上命令后会在后台进行创建,执行以下命令可查看详细信息和创建进度
其中
--create //表示要创建raid
--auto=yes /dev/md0 //新建立的软件磁盘阵列设备为md0,md序号可以为0-9
--level=5 //磁盘阵列的等级,这里表示创建是的raid5
--raid-devices //添加作为磁盘阵列用的磁盘的块数
--spare-devices //添加作为预备(spare)磁盘的块数
/dev/sd[b-d] //磁盘阵列所使用的设备,还可写成/dev/sdb /dev/sdc /dev/sdd
如果磁盘容量比较大,可以直接查看/proc/mdstat文件来了解RAID创建和运行情况
如果要本机使用,可以格式化并挂载(建议设置开机自启动和自动挂载)
创建/etc/mdadm.conf这个配置文件,即可开机自启动
修改/etc/fstab文件,设置开机自动挂载
软RAID的扩展知识
1扩容raid磁盘阵列
显示磁盘阵列的组成情况,4个块设备组成,:
# cat /proc/mdstat
把/dev/sdg增加进阵列/dev/md0:
# mdadm --add /dev/md0 /dev/sdg
把raid5阵列/dev/md0修改为5个块设备:
# mdadm --grow /dev/md0 -n5
再显示一下磁盘阵列的组成情况,现在/dev/md1是6个块设备组成,完成扩容,还需要7.7分钟。
# cat /proc/mdstat
等待扩容完成.....
执行下列命令:
验证:
2模拟RAID5中一块磁盘损坏,检验spare磁盘的功能(raid5中允许一块磁盘损坏,我们所设置的那1块spare磁盘会立即替代损坏的磁盘,进行RAID的重建,保障数据的安全):
[root@svr ~]# mdadm --manage /dev/md0 --fail /dev/sdd
//使用此命令设置磁盘sdd成为出错的状态
来查看一下:mdadm --detail /dev/md0
可以查看cat /proc/mdstat文件查看RAID5的重建过程
再来看一下重建完后的结果
/mnt/raid5还可以正常使用
3将出错的磁盘删除并加入新的磁盘:
先删除损坏的磁盘sdd:
[root@svr raid5]# mdadm --manage /dev/md0 --remove /dev/sdd //将损坏的磁盘sdd从RAID中删除
再添加一块新的磁盘作为spare磁盘:
[root@svr raid5]# mdadm --manage /dev/md0 --add /dev/sdg //添加新的磁盘sdg
OK,再来查看一下:
执行以下命令
mdadm --detail /dev/md0查看结果
4关闭软件RAID的方法:
当你不再需要已经设置的RAID的时候,可以用以下方法关闭RAID:
1)卸载/dev/md0,并且删除或注释掉/etc/fstab文件中的配置:
[root@svr ~]# umount /dev/md0
[root@svr ~]# vi /etc/fstab
#/dev/md0 /mnt/raid5 ext4 defaults 0 0
2)注释掉或删除/etc/mdadm.conf中的设置:
[root@svr ~]# vi /etc/mdadm.conf
#ARRAY /dev/md0 UUID=d58ed27d:00ce5cf5:b26ed1e9:879d0805
3)停止raid设备
# mdadm --stop /dev/md0
4)删除raid中的所有磁盘
这时候raid中的磁盘就删除了,重启后也不会产生md127了.
RAID0和RAID1实同于RAID5
RAID0:并行读写数据
RAID1:镜像磁盘阵列
2安装scsi-target-utils软件包
在RHEL6服务器中需要安装scsi-target-utils软件包,对应的系统服务为tgtd,命令行管理工具为tgtadm;有相关依赖包,建议使用yum安装
3创建iSCSI对象(Target)
即将准备好的存储设备(逻辑卷和RAID5)添加到iSCSI中,为客户端准备存储空间(LUN);有两种方法:一种是使用命令的添加方式(略);一种是直接修改配置文件;
iscsi target配置文件是/etc/tgt/targets.conf(在文件尾部添加如下内容)
Target的命名在同一子网内应该是唯一的,标准命名方式为:
iqn.yyyy-mm.<reversed domain name>[:identifier]
其中:
iqn:表示"iSCSI Qualified Name",简称iqn。
yyyy-mm:表示年份-月份。这里是2011-08。
reversed domain name:表示倒过来的域名,这里是com.example。
identifier:表示识别代码,这里是disk
backing-store用于指定存储设备,一般指非实际的物理磁盘,如LVM卷、某个分区、raid磁盘阵列。
initiator-address 地址 用于将target指派给指定的客户机使用,为了安全,可自定义设置
4重启服务并将服务设置为开机自启动,然后设置防火墙开启3260号端口通信
记得保存防火墙规则
5验证target信息
至此,iscsi target存储服务器配置完成,客户端使用iSCSI Initiator就可以连接iscsi target服务器了
二客户端使用iSCSI存储设备
・Linux客户端使用iSCSI存储设备
1客户端安装iscsi-initiator-utils和lsscsi软件包
这个没有依赖关系,可以用rpm安装
其中iscsi-initiator-utils是连接服务器的客户端软件,lsscsi是查看iSCSI设备信息的工具包
2发现并连接iSCSI设备
发现设备,若是默认端口3260可以省略不写
发现两个设备(为了安全考虑,可以在服务器上设置ACL访问控制策略,以免被别人发现)
连接设备
--login可以简写为-l;--out表示断开连接,简写-u
3查看网络存储设备
4使用磁盘
接下来使用磁盘就跟使用本地磁盘几乎一样(fdisk、mkfs、mount操作,与普通设备无异);进行分区格式化,挂载设置开机自启动等;若iSCSI设备已包含文件系统,则无需再格式化
・windows客户端使用iSCSI存储设备
Windows Server2008 自带iSCSI客户端程序
1确保客户机与服务器的通信
2打开管理工具-iSCSI发起程序
3输入服务器地址,直接点击快速连接
4连接成功后单击完成,可以关闭连接面板了
5右键计算机选择管理-存储-磁盘管理,可以看到新加的磁盘1
6右击磁盘1选择联机,再右击选择初始化磁盘,直接点击确定
7现在的操作和普通磁盘一样了,可以新建简单卷等