架构师在做架构设计时一定绕不开存储的设计,本文我们一起来了解一下存储的相关知识。主要内容包括存储使用方式、常见协议、链接方式以及分布式存储架构中的典型架构案例。
存储分类
存储架构
从架构角度分类存储一般可以分为:集中式存储和分布式存储。
「集中式存储」的主要特点是能把所有数据保存在一个地方,各地办公室的远程终端通过电缆同中央计算机(主机)相联,保证了每个终端使用的都是同一信息。
集中式存储一般是商业的且比较昂贵。
「分布式存储」,是将数据分散存储在多台独立的设备上,采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。
分布式存储一般结合管理软件自建。
存储使用方式
从使用者的角度对存储进行分类可以分为三类:块存储,文件存储,对象存储。
使用方式分类
「块存储:」 一般体现形式是卷或者硬盘,主要操作对象是磁盘,将裸磁盘空间整个映射给主机使用。在此种方式下操作系统需要对挂载的裸硬盘进行分区、格式化后,才能使用。块存储无法进行文件共享。
「文件存储:」 一般体现形式是目录和文件,数据以文件的方式存储和访问,按照目录结构进行组织。此种方式也需要挂载,挂载后为一个目录,可直接存取其中的文件;不需要格式化。
「对象存储:」 主要操作对象是对象Object,本质上是键值对存储系统,不需要挂载,直接通过应用接口访问。
存储协议
从协议角度分类存储可以分为NFS、CIFS、ISCSI协议。
「NFS (Network File System,网络文件系统)」 是当前主流异构平台共享文件系统之一,主要应用于Unix环境下。通过使用NFS,用户和程序可以象访问本地文件一样访问远端系统上的文件,使得每个计算机的节点能够像使用本地资源一样方便地使用网上资源。换言之,NFS 可用于不同类型计算机、操作系统、网络架构和传输协议运行环境中的网络文件远程访问和共享。「针对共享文件存储。」
「CIFS(Common Internet File System,公共互联网文件系统)」 主要应用在NT/Windows环境下,其工作原理是让CIFS协议运行于TCP/IP通信协议之上,让Unix计算机可以在网络邻居上被Windows计算机看到。「针对共享文件存储。」
「ISCSI (Internet SCSI/SCSI over IP)」 :主要应用在Windows环境下,适用于TCP/IP通讯协议,是通过TCP/IP网络传输文件时的文件组织格式和数据传输方式。「针对数据块存储。」
存储链接方式
从存储链接角度分类存储可以分为DAS、NAS、SAN三类。
「DAS(Direct Attached Storage):」
直接附加存储方式与我们普通的PC存储架构一样,外部存储设备都是直接挂接在服务器内部总线上,数据存储设备是整个服务器结构的一部分,任何客户端想要访问存储设备上的资源就必须要通过服务器。
DAS架构
「NAS(Network Attached Storage):」
在NAS存储结构中,存储系统不再通过I/O总线附属于某个特定的服务期或客户机,而是直接通过网络接口直接与网络相连,用户通过网络访问。NAS实际上是带有一个“瘦服务器”的存储设备,作用类似于一个专用的文件服务器,而不是传统通用服务器,去掉了大多数功能,仅仅提供文件系统功能,用于存储服务。
NAS架构
「SAN(Storage Area Network):」
SAN是一种以网络为中心的存储结构,不同于普通以太网,SAN是位于服务器的后端,为连接服务器、磁盘阵列、带库等存储设备而建立的高性能「专用网络(光纤通道)」。
SAN 架构
主流存储厂商及产品
商业存储厂商有:EMC、NetApp、DELL、Huawei、曙光等
开源的存储产品有:
- FastDFS(对象)
- Swift(对象)
- HDFS(对象)
- Lustre(块)
- GlusterFS(文件)
- Ceph(块、文件、对象)
分布式存储架构
集中式存储一般使用商业软件且由厂家负责安装配置,我们这里主要讲一下分布式存储架构。
按照元数据的管理方式,存储架构可分为对称式和非对称式两种架构模式。
在对称式架构中每个节点的角色均等,共同管理和维护元数据,节点间通过高速网络进行信息同步和互斥锁等操作。(每台节点安装的组件一样)
而非对称式集群文件系统中,有专门的一个或者多个节点负责管理元数据,其他节点需要频繁与元数据节点通信以获取最新的元数据比如目录列表、文件属性等等。(元数据节点与存储节点分离)
接下来我们看看两种不同架构模式下的代表产品:FastDFS 和 swift。
FastDFS典型架构
FastDFS架构
FastDFS采用的是非对称架构,分为Tracker server和Storage server。
Tracker server作为中心结点,管理集群拓扑结构,其主要作用是负载均衡和调度。
Storage server 以卷为单位组织,一个卷内包含多台storage机器,每个卷中的服务器是镜像关系,数据互为备份,存储空间以卷内容量最小的storage为准,所以建议group内的多个storage尽量配置相同,以免造成存储空间的浪费。
Swift典型架构
swift架构
Swift采用的是完全对称、面向资源的分布式系统架构设计,所有组件都可扩展。
Swift将整个存储分为三个层次:Account、Container 和 Object。
小结
本文给大家介绍了存储的相关知识,存储这一块的内容比较枯燥大家了解即可,重点需要关注分布式存储架构。