对象存储的原理分析
对象存储最常用的方案,就是多台服务器内置大容量硬盘,再装上对象存储软件,然后搞几台服务器作为管理节点,安装上对象存储管理软件。管理节点可以管理其他服务器对外提供读写访问功能。
之所以出现对象存储,是为了克服块存储与文件存储各自的缺点。简单来说块存储读写快,不利于共享,文件存储读写慢,利于共享。能否搞一个读写快,利于共享的出来呢?于是有了对象存储。
对象存储的原理
首先,一个文件包含了属性(术语叫metadata,元数据,例如该文件的大小、修改时间、存储路径等)以及内容(以下简称数据)
以往像FAT32这种文件系统,是直接将一份文件的数据与metadata一起存储的,存储过程先将文件按照文件系统的最小块大小来打散(如4M的文件,假设文件系统要求一个块4K,那么就将文件打散成1000个小块),再写进硬盘里面,过程中没有区分数据/metadata的。而每个块最后会告知你下一个要读取的块的地址,然后一直这样顺序地按图索骥,最后完成整份文件的所有块的读取。
这种情况下读写速度很慢,因为就算你呦100个机械手臂在读写,但是由于你只有读取到第一块,才能知道下一个在哪里,其实相当于只能有一个机械手臂在实际工作。
对象存储将元数据独立出来,控制节点叫元数据服务器(服务器+对象存储管理软件),里面主要负责存储对象的属性(主要是对象的数据被打散存放到了那几台分布式服务器中的信息),而其他负责存储数据的分布式服务器叫做OSD,主要负责存储文件的数据部分。当用户访问对象,会先访问元数据服务器,元数据服务器只负责反馈对象存储在那些OSD,假设反馈文件A存储在B、C、D三台OSD,那么用户就会再次直接访问3台OSD服务器去读取数据。
这时候由于是3台OSD同时对外传输数据,所以传输的速度就加快了。当OSD服务器数量越多,这种读写速度的提升就越大,通过这种方式,实现了读写快的目的。
另一方面,对象存储软件是有专门的文件系统的,所以OSD对象又相当于文件服务器,那么就不存在文件共享方面的困难了,也就解决了文件共享方面的问题。
所以对象存储的出现,很好地结合了块存储与文件存储的优点。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2017-06-08 Yii2数据库操作再总结
2017-06-08 PHP 对象数组和一般的数组的相互转化
2017-06-08 SQL 模糊查询