Linux开源存储全栈详解:从Ceph到容器存储
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.4 网络存储技术

随着网络技术的飞速发展,各类海量数据快速占据了系统的存储空间。单一的存储系统已经无法面对新的形势,网络存储技术开始成为存储技术的主流。

目前网络存储技术主要有DAS(Direct Attached Storage)、NAS、SAN、iSCSI (Internet SCSI)。DAS、NAS、SAN与iSCSI的区别如图2-9所示。

图2-9 DAS、NAS、SAN与iSCSI的区别

1)DAS

DAS是指通过SCSI接口或光纤通道将存储设备直接连接到一台服务器上。当服务器在地理上比较分散很难通过远程进行互联时,DAS是比较好的解决方案。对DAS来说,存储只能通过与之连接的主机进行访问,数据不能与其他主机共享。同时, DAS会占用CPU、I/O等服务器的操作系统资源,并且数据量越大,占用系统资源越严重。

2)NAS

NAS是指通过某一网络协议把多个存储设备和一群计算机相连接。NAS通过网络交换机连接存储系统和服务器,用户通过TCP/IP访问专门用于数据存储的私有网络,采用网络文件系统、HTTP、CIFS等标准的文件共享来实现文件级的数据共享。NAS为那些需要共享大量文件数据的企业提供了一个高效的、高可靠的、高性价比的解决方案。NAS的局限性在于,它会受到网络带宽和网络拥堵的影响。

3)SAN

SAN是一种独立于TCP/IP网络之外的专用存储网络,目前一般提供2~4Gb/s的传输速率。由于其基础是一个专用网络,SAN的扩展性很强,不管是在一个SAN系统中增加一定的存储空间,还是增加几台服务器都非常方便。SAN的维护成本高昂,需要投入很多硬件成本,如FC交换机。

4)iSCSI

为了降低使用SAN的成本,可以利用普通的数据网络来传输SCSI数据,实现和SAN相似的功能,同时系统的灵活性也得到了提高。iSCSI就是这样一种技术,它利用普通的TCP/IP网络来传输SCSI数据块。

SCSI最初是一种专门为小型计算机系统设计的I/O技术,SCSI系统架构如图2-10所示。

图2-10 SCSI系统架构

可以看到主机通过SCSI控制器与SCSI设备相连,通常把发起SCSI数据存储的一端叫作Initiator,而把存储数据的SCSI设备叫作Target。主机通过控制器与Target相连,而Target也可以通过SCSI总线与其他的SCSI设备相连,在SCSI总线的末端一般都会连接一个终结器,用来减少相互影响的信号,维持SCSI链上的电压恒定。

SCSI总线分为宽带和窄带两种,宽带有16个接口,除了1个用来连接Initiator,最多还可以连接15个Target;而窄带有8个接口,最多可以连接7个Target。

系统中的每个SCSI设备都必须有唯一的SCSI ID(即Target ID)来表示设备的地址,每个Target上可以连接多个逻辑单元(一个逻辑单元对应一个SCSI设备),不同的逻辑单元用逻辑单元号(Logical Unit Number,LUN)来区别,每个SCSI ID上最多有32个LUN(宽带的),一个LUN对应一个逻辑设备(SCSI设备)。

SCSI通信模式如图2-11所示。

图2-11 SCSI通信模式

iSCSI是IETF制定的一项标准,用于将SCSI数据块映射为以太网数据包。iSCSI将存储行业广泛应用的SCSI接口技术与IP技术相结合,简单来说,iSCSI就是在IP网络上运行SCSI协议的一种网络存储技术。一般来讲,就是在TCP/IP上传输SCSI命令,实现SCSI和TCP/IP的连接。

在iSCSI技术出现之后,SAN也出现了两种不同的实现方式,即光纤存储网络(FC SAN)和IP存储网络(IP SAN),我们通常所说的SAN指的就是FC SAN。相对FC SAN来说,IP SAN的成本要低很多,而且随着千兆网甚至万兆网的发展,iSCSI的速度相对SAN来说并没有太大的劣势。

iSCSI层次结构如图2-12所示。

图2-12 iSCSI层次结构

根据应用发出的请求,SCSI层会建立SCSI CDB(命令描述块)并传给iSCSI层,iSCSI层对SCSI CDB进行封装,以便其能够在TCP/IP网络上进行传输,完成SCSI到TCP/IP的协议映射。

iSCSI Initiator计算机上的软件或硬件设备,负责与iSCSI存储设备进行通信。

· 软件Initiator:Initiator软件可以将以太网卡虚拟成iSCSI卡,从而实现主机和iSCSI存储设备之间的iSCSI协议和TCP/IP传输。这种方式除以太网卡和以太网交换机以外,并不需要其他的设备,因此成本最低。但是iSCSI报文和TCP/IP报文转换需要消耗服务器的CPU资源,因此只适用于低I/O和低带宽性能要求的应用环境。

· 硬件Initiator:使用iSCSI HBA(Host Bus Adapter),即iSCSI Initiator硬件。这种方式需要在iSCSI服务器上安装iSCSI HBA卡,来实现iSCSI服务器与交换机之间、iSCSI服务器与存储设备之间的高效数据传输。与软件Initiator相比,安装硬件iSCSI HBA卡的方式不需要消耗服务器的CPU资源,可以提供更快的数据传输速度和更高的存储性能,但是iSCSI HBA卡价格昂贵,需要用户在性能和成本之间进行权衡。

· TOE网卡+Initiator软件:支持TOE(TCP Offload Engine)功能的智能以太网卡可以将网络数据流量的处理工作全部转到网卡上的集成硬件中完成,以降低服务器CPU资源的消耗。此时虽然SCSI指令的运行仍然会占用一定的CPU负载,但价格相对硬件的Initiator来说要便宜一些。

iSCSI Target是可以用于存储数据的iSCSI磁盘阵列或具有iSCSI功能的设备,大多数操作系统都可以利用一些软件将系统转换为一个iSCSI Target,如Linux的LIO (Linux-IO Target)。