NAS(Network Attached Storage,网络附属存储)一种特殊的数据存储服务器,包括一些必要的器件(如 RAID、CD/DVD 驱动器、磁带驱动器或可移动的存储介质)和内嵌的操作系统,将分布、独立的数据整合并集中管理,可跨平台进行文件共享。
按字面理解,NAS 就是一个“网络存储器”。以数据为中心,将存储设备与服务器彻底分离,从而释放带宽、提高性能、降低成本。其成本远远低于使用服务器存储,效率远高于后者。通常,在一个局域网中,NAS 有自己的IP地址,无需应用服务器的干预,允许用户在网络上存取数据,此时,NAS 集中管理所有数据,减轻应用或企业服务器的负载。
图 1 NAS 网络图标
NAS 支持多种协议(如NFS、CIFS、FTP、HTTP等),而且能够支持各种操作系统。通过任何一台工作站,采用浏览器就可以对 NAS 进行直观、方便的管理。
这是京东的威联通 NAS 设备。左图是正面,右图是背面。从正面可以看到,它有四个硬盘位;从后面看,有 USB 接口和 RJ45 网口。你可以想象得到,你既可以连接到电脑,也可以让它加入网络,成为一个网络设备,从IE访问。
NAS 是功能单一的精简型电脑,因此在架构上不像个人电脑那么复杂,像键盘、鼠标、荧幕、音效卡、喇叭、扩充漕、各式连接口等都不需要;在外观上就像家电产品,只需电源与简单的控制钮。NAS 在架构上与个人电脑相似,但因功能单纯,可移除许多不必要的连接器、控制晶片、电子回路,如键盘、鼠标、USB、VGA 等。
图 3
图 4
图 5
这也是早先为什么淘宝说,NAS 的协议传输延迟很重要的原因。
SAN(Storage Area Network,存储区域网络)是一种连接外接存储设备和服务器的架构。人们采用包括光纤通道(Fibre Channel,FC)技术、磁盘阵列、磁带柜、光盘柜(en)的各种技术进行实现。该架构的特点是,连接到服务器的存储设备,将被操作系统视为直接连接的存储设备。
与 SAN 相比较,NAS(Network Attached Storage,网络储存设备)使用的是基于文件的通信协议,例如NFS或SMB/CIFS通信协议就被明确的定义为远程存储设备,计算机请求访问的是抽象文件的一段内容,而非对磁盘进行的块设备操作。
光纤通道(Fibre Channel,FC)最初不是为硬盘设计开发的接口技术,而是网络,后随着存储系统对速度的需求,才逐渐应用到硬盘系统中。它跟SCSI、IDE有很大不同,但很像以太网的转换开头。FC提高了多硬盘存储系统的速度和灵活性,大大提高多硬盘系统的通信速度。FC通常用于连接一个SCSI RAID(或其它一些比较常用的RAID类型),以满足服务器对高数据传输率的要求。其主要特性:热插拔性、高速带宽、远程连接、连接设备数量大等。
iSCSI(Internet Small Computer System Interface,Internet 小型计算机系统接口)又称 IP-SAN,被看作影响 SAN 命运的一件大事。这些本质区别是从网络架构来说的,对于关注 NAS 与 SAN 性能的用户来说,两者的本质差别还存在于文件读写实现上。
iSCSI 可以在已有的交换和 IP 基础架构上运行,因此,iSCSI 常常被认为是 FC 的一个低成本替代方法,而光纤通道是需要专用的基础架构的。但是,基于以太网的光纤通道(FCoE)则不需要专用的基础架构。
本质上,iSCSI 让两个主机通过 IP 网络相互协商然后交换 SCSI 命令。这样一来,iSCSI 就是用广域网仿真了一个常用的高性能本地存储总线,从而创建了一个存储局域网(SAN)。
NAS 是基于操作系统的“文件级”读写操作,访问请求是根据“文件句柄+偏移量”得出。句柄是比进程还小的单元,通常用作进程之间通信、资源定位等。SAN 中计算机和存储间的接口是底层的块协议,它按照协议头的“块地址+偏移地址”来定位。从这点说,SAN 天生具有存储异构整合的存储虚拟化功能。
下面介绍一下 NAS 文件共享的灵魂——NFS 和 CIFS。
虽然 NFS 是在 Unix/Linux 系统中最流行的网络文件系统,但它不是唯一。Windows 系统中的Server Message Block(Server Message Block,SMB,服务器消息区块,也称为 CIFS)。如同 Linux 支持 SMB一样,Windows 也支持 NFS。
最新的分布式文件系统之一Ceph,Linux也支持。Ceph是为容错的分布式文件系统,它具有 UNIX兼容的 Portable Operating System Interface(POSⅨ)。其他例子包括 OpenAFS,是 Andrew 分布式文件系统的开源版(来自 Carnegie Mellon 和 IBM),GlusterFS,关注于可扩展存储的通用分布式文件系统,以及 Lustre,关注于集群计算的大规模并行分布式文件系统。所有都是用于分布式存储的开源软件解决方案。