V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
0x19921213
V2EX  ›  程序员

对象存储(Object Storage),块存储(Block Storage),文件存储(File Storage) 到底什么区别

  •  1
     
  •   0x19921213 · 2023-11-06 14:58:53 +08:00 · 2916 次点击
    这是一个创建于 386 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,这三个概念到底有什么不同

    9 条回复    2024-03-12 17:59:13 +08:00
    xausky
        1
    xausky  
       2023-11-06 15:04:09 +08:00   ❤️ 10
    对象存储是给你个 S3 标准的 rest api 存取文件包括权限控制
    块存储是服务器上给你多挂载一个磁盘,可能是本地磁盘也可能是网络磁盘
    文件存储是给你个 NFS 或者 SMB 协议的存储空间,一般是内网,可以挂载到服务器上
    ospider
        2
    ospider  
       2023-11-06 15:08:59 +08:00   ❤️ 1
    楼上说得很好了,补充一下:

    1. 对象存储的事实协议是 S3 ,基本没别的选择。文件是不可以修改的,但是可以覆盖,还可以保存不同版本。
    2. 块存储用于挂载,所以也是可以重复写入的。

    具体可以看这篇博客: https://www.ibm.com/blog/object-vs-file-vs-block-storage/
    daimaosix
        3
    daimaosix  
       2023-11-06 16:07:06 +08:00 via Android
    前两楼说的很好,无异议,结贴
    GopherDaily
        4
    GopherDaily  
       2023-11-06 17:26:54 +08:00
    对象存储是针对对象的,这个对象可大可小,支持一些 well-knonw 的格式,比如 jpg/png/json 之类的;
    文件存储针对文件,一般兼容/复用文件存储的一大堆 API
    块在 Linux 系统是比文件更小的一个单位,也有一堆已有的 API
    pollux
        5
    pollux  
       2023-11-06 17:40:59 +08:00   ❤️ 1
    补充个简洁的,通俗易懂的回答:
    1. 对象存储需要用到特定协议的 api ,如调用兼容 s3 接口来增删改查
    2. 块存储是类似给你一块硬盘,可以本地也可以网络,最主要是自由分区和格式化,如 rbd,iscsi 远程 mount 读写
    3. 文件存储是直接被操作系统识别的存储空间,如文件夹,可以直接复制粘贴和剪切和删除,遵循 posix 标准
    JensenQian
        6
    JensenQian  
       2023-11-06 21:10:34 +08:00 via Android
    对象存储,一般都是云上的比较多,大公司
    块存储见到卖 vps 的比较多,挂小鸡上
    差不多
    homolabby
        7
    homolabby  
       2023-11-06 21:36:53 +08:00 via Android
    补充一点,对象存储理论兼容 REST API ,没有传统文件系统的目录项,所以能够做到很好的扩容性
    mightybruce
        8
    mightybruce  
       2023-11-06 22:49:52 +08:00
    对象存储 (Object Storage): 对象存储将数据视为对象,每个对象包括数据、元数据和全局标识符。对象以平面方式存储,而不是在文件夹和目录层次结构中。这使得对象存储在处理无结构数据(例如音频、视频、图像和日志文件)并进行大规模存储时非常有效。常用的对象存储服务包括 Amazon S3 和 Google Cloud Storage 、阿里 OSS 。

    块存储 (Block Storage): 块存储将数据分割成块( blocks ),每个块都有唯一的标识符,而不关心储存在该块中的数据信息。这种存储方式适用于对性能需求高的应用,如数据库或高性能计算,因为它们允许用户随机访问数据。典型的块存储服务有 Amazon EBS 和 Google Persistent Disk 。

    文件存储 (File Storage): 文件存储使用一个组织好的文件系统,并且可以通过标准的文件路径进行访问。这是一种层次化的存储方式,并且很适合于存储需要维持文件元数据(例如,创建时间、修改时间、所有者)的情况,例如文档和其他属于结构化数据的文件。一个普通的文件存储服务是 Amazon EFS 。
    文件存储通过文件级别的目录结构组织数据,更符合 POSIX 文件访问方法。

    具体对比

    特性 对象存储 块存储 文件存储
    数据存储方式 对象 块 文件
    组织结构 扁平 层次 层次
    适用场景 非结构化数据 结构化数据 结构化或非结构化数据
    性能 低 高 中
    成本 低 高 中
    可扩展性 高 高 中
    安全性 高 中 中
    hzj629206717
        9
    hzj629206717  
       259 天前
    我的理解:

    1. 块存储,可以理解为硬盘设备,通过 iSCSI, RBD(Ceph)协议挂载到主机。主机可对其创建文件系统。一个块存储只能挂载到一个主机。比如说云主机需要额外硬盘空间,平台从存储池分配一个块存储空间。只负责数据读写,性能较高,支持随机读写。有的软件支持直接操作块存储设备而不需要系统提供的 POSIX 文件系统。

    2. 文件存储,可以挂载到 OS 文件系统上支持 POSIX 接口访问。家庭场景常用网络文件系统 NFS/SMB 。一个网络文件存储可以挂载到多个主机。还有众多分布式文件系统。适合人机交互场景和一般软件。很显然文件存储系统最终还是基于块存储设备。关于随机读写,在本地块设备上创建的文件系统,或 NFS/SMB 这种是支持随机读写的(比如 Seek 操作),其它网络文件系统视情况不一定支持随机读写,有的则是先完整拉取文件到本地缓存,修改完成后,再全量同步到远端。

    3. 对象存储,满足互联网应用对海量非结构化数据存储需求,可以简单认为就是分布式 KV+Meta+Index ,通过事实标准 S3 HTTP API 访问。不支持修改数据,只能覆盖。很显然对象存储最终也是基于文件存储和块存储实现的某种分布式架构。开源产品:Ceph 和 Minio 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3537 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 04:43 · PVG 12:43 · LAX 20:43 · JFK 23:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.