Linux集群计算在高性能计算领域(高能物理,地球,大气,地质,石油,遥感等等),海量信息服务领域(google)的应用越来越普遍。
Linux集群中,不仅需要高性能处理器,网络,还需要高聚合的I/O带宽。而I/O子系统的发展现状决定了存储系统已经成为亟待解决的问题。
Linux集群计算对存储系统提出了高聚合带宽,高可用,高可靠,可扩展,可管理等诸方面的要求。
DAS(direct attached storage):存储设备直接附连在系统主机的I/O总线上。从应用的角度看到的是裸设备,比如(/dev/hdc)。主机不能共享不同主机之间的存储设备。
SAN(storage area network):将存储设备从主机系统中分离出来,利用主机之外的一个专用存储网络与存储设备相连。这样,存储设备独立于主机系统,并且多个主机通过存储区域网络可以共享存储设备。应用看到的仍然是设备,比如(/dev/nbd0)。
NAS(network attached storage):有一个元数据服务器,客户端通过标准的NFS或CIFS协议与元数据服务器通信,而元数据服务器连着存储设备。客户端可以是不同平台。这样就实现了跨平台的数据共享,并且不是直接读写设备,提高了安全性。标准的NFS可以看作是NAS。
SAN+NAS:融合了SAN和NAS的优点,将数据和元数据分离。存储设备通过SAN与各个应用节点直接连接,对于数据的读写直接通过应用节点完成,不再通过元数据服务器,打破元数据服务器的瓶颈,大大提高聚合带宽。元数据的访问仍然通过元数据服务器来完成。
NFS:network file system。由SUN在80年代提出。主要用来实现在网络上不同主机之间的文件共享。成为事实上的网络文件系统标准。IETF目前为其制定了三个版本。
RFC1094(March,1989)-NFSv2
RFC1813(June,1995) -NFSv3
RFC3530(April,2003)-NFSv4
其物理架构如下:
RPC
示意如下图
一个远程过程由三元组(program number, version number, procedure number)唯一确定。其中,program number确定了一组相关的远程过程,这些过程的集合称之为一个program。program可以有多个版本,版本之间由version number来区分。每个过程有一个唯一的procedure number.
XDR(external data representation),解决数据在网络上传输的字节序等问题。
下面重点进行NFS结构分析:
NFS由下面四个独立的协议构成:
nfs:负责文件创建,查找,读写,权限,状态等。
mountd:负责mount
nsm:网络状态监控
nlm:网络锁管理