存储系统发展史

235 阅读4分钟

一、文件系统诞生

操作系统诞生的时候,用户的数据写在盘上产生了两个问题:

1、磁盘是个连续的线性地址空间,lba0一直到lban,但是人类该怎么用?我们的数据以文件形式存在,每个文件都能连续的写在磁盘上么?想象一下,如果文件是连续的顺序的写在盘上,那么将来删除文件就会在磁盘的地址空间上留下“洞”,那么一段时间后磁盘的空间里到处都是“洞”,你可能发现你找不到一个合适大小的“洞“来存放你的文件数据。所以需要个系统软件来解决“地址空间”映射问题。每个文件的内容看起来都是连续的,在磁盘上是连续的么?答案很显然是否定的,是散布在磁盘线形空间中的各个位置上的。因此需要一个软件来让物理上不连续的文件内容在逻辑上让用户看起来是连续的,根据任意一个文件偏移迅速找到这部分数据在磁盘上的物理位置。

2、文件越来越多,每个文件都散磁盘在不同的位置上,那么如何找到我想要的文件呢?得有个组织结构,比如目录,子目录,文件名,路径组织索引,根据路径我们能够找到想访问的文件,这就是“名字空间”。

要解决以上的两个问题,诞生了文件系统。文件系统是操作系统中的最重要的组成部分,也是最复杂的部分之一。文件系统是存储系统的基础和核心。例如微软的Fat32,NTFS;Unix的UFS,Linux的ext2/3/4,xfs等。当然广义的文件系统是只要能解决名字空间和地址空间的数据存取的系统,就算文件系统,哪怕它有可能不提供POSIX语义。

二、多盘存储系统

最初的文件系统都是本地文件系统,也就控制是电脑上单个硬盘的。慢慢的数据越来越大,用户的数据越来越多,单个硬盘放不下了,大家希望承载数据的一个文件系统能够跨磁盘;并且数据越来越重要,用户希望单个磁盘损坏别影响数据。所以存储系统进化了,进化出了基于RAID的存储系统,但是这时候,还是在本地计算机上用多块磁盘组织一个高可靠的线性连续的地址空间,在这个空间上再构建文件的名字空间和文件级别逻辑连续的地址空间。这一时期诞生了各种各样的硬件和软件RAID产品。硬件有Adaptec RAID ,MegaRAID等,软件有Veritas的VXVM,Sun的SVM等。

三、外部存储系统

合久必分,存储系统越来越复杂,复杂算法导致计算量越来越大,当然容量要求也越来越大,计算机本身的算力因为存储消耗与日俱增,内置的硬盘已经无法满足容量需求了。催生了外部存储。计算设备和存储设备分离,计算主机通过“网络”链接一个外设,这个外设就是外部存储系统。计算主机通过特定的协议跟外设里面的存储进行通信,进而存取数据。外部存储其实本身也是一个完整的“计算机”,但这个计算机专门负责处理数据存取,负责数据的高可靠和高可用,以及地址空间和名字空间。外部存储的核心依旧是“文件系统”,是软件。这诞生一堆存储公司包括著名的EMC,Netapp等。

四、分布式存储系统

数据量还在持续增加,单个外部存储已经无法满足用户容量和性能的要求了,产生了新问题?人们不希望同时操作多个外部存储,而希望多个外部存储能够进一步逻辑上合并成一个“大存储”,用户操作多套存储设备就跟操作一套系统一样,容量是多套存储之和,性能是多套存储系统的叠加,这就诞生了“分布式存储”。文件系统再次进化出了“分布式文件系统”。例如Panasas,isilon,Lustre等。

存储系统的演化历史除了依赖存储介质的进步(磁带,磁盘,闪存到SCM),主要是依赖文件系统软件的不断进化,要求越来越高,功能越来越复杂,容量越来越大,性能越来越强。

欢迎关注我的公众号:新爷话数据。与我一起来讨论数据的那些事~