块存储、对象存储和文件系统: 它们对容器而言意味着什么?

当管理员首次开始使用Docker容器时,通常会使其感到惊讶的是, 容器本身采用的是非永久性存储。当容器被移除时, 容器的存储也被移除了。

当然,如果没有办法实现永久存储,则容器应用程序的使用将会非常受限。幸运的是,有些方法在容器化的环境中可以实现持久存储。尽管容器本身的原生存储是非持久性的,但可以将容器连接到容器外部的存储区。此操作允许持久性数据的存储,因为当容器停止时,该外部存储不会被移除。

决定如何为容器实现持久存储的第一步是确定您将使用的存储系统的基础类型。在这方面, 通常有三种主要选项:文件系统存储、块存储和对象存储。这篇文章中,我将解释每种类型的存储之间的差异, 以及使用它们为容器环境设置存储时各会带来什么。

文件系统存储

文件系统存储是将数据存储为文件,这一存储形式已存在数十年了。每个文件都有一个文件名, 并且通常具有与其关联的属性。一些常用的文件系统包括NFS和NTFS。

当涉及到配置容器以持久存储数据时,文件系统存储是实现持久存储数据的最普遍的方法之一。最为人所知的文件系统储存示例(与容器相关)可能是基于主机的持久性。

基于主机的持久性背后的想法非常普遍。容器驻留在主机服务器上。这个主机服务器包含它自己的操作系统和它自己的文件系统。可以将容器配置为在主机服务器的文件存储的专用文件夹内存储持久数据。Docker容器通常使用联合文件系统将容器层组合成一个内聚的文件结构。基于主机的持久性绕过了需要持久存储的数据的联合文件系统,并借助主机上使用的同一文件系统存储数据。

普通主机持久性引起的主要问题是,它完全破坏了容器的可移植性。当使用主机持久性时,依赖项资源(持久存储)驻留在宿主服务器的原生文件系统的容器外。为了解决此问题, 已经创建了其他的主机持久性。例如,通过多主机持久性使用分布式文件系统,来复制跨多个主机服务器的持久性存储。

结论:文件系统存储可能是最笨拙的方法,因为文件系统在设计之初并没有把可移植性纳入考虑范围。然而,正如前文我所提到的,有一些方法可以实现容器友好型的文件存储系统,而这通常要通过跨多个服务器分布文件系统来实现。

块存储

块存储是容器的另一个存储选项。如前所述,文件系统存储将数据组织为文件和文件夹的层次结构。相反,块存储存储块中的数据块。块仅通过其地址识别。块没有文件名,也没有自己的元数据。只有当块与其他块组合形成完整的数据块时,它们才具有意义。

由于其性能,块存储通常用于数据库应用程序。块存储也通常用于提供快照功能,它允许将volume回滚到特定时间点,而无需还原备份。

对于容器,块存储有时以容器定义的存储的形式实现。容器定义的存储是一种软件定义的存储形式,但专门用于容器化环境中。此存储通常在专用存储容器内部实现。

Rancher Labs推出了自己的分布式块存储项目,名为Project Longhorn。Longhorn背后的基本思想相对简单。

存储系统可以包含多个块存储volumes,并且这些volumes中的每一个只能由单个主机加载。在这种情况下,Longhorn试图将块存储控制器划分为大量较小的块存储控制器,每个存储控制器都可以映射到不同的块存储volume。如果所有这些块存储volumes都驻留在物理磁盘的公共池中,那么Longhorn方法将允许编排引擎根据需要创建块存储volumes。例如,可以在创建容器的同时自动创建块存储volume。

结论:块存储比文件系统存储更灵活,这样更容易适应容器环境的块存储。唯一的挑战是确保块存储数据在由多台主机组成的环境中可用。这可以通过分布式存储来解决。

对象存储

对象存储与文件系统存储或块存储不同。它不是通过块地址或文件名引用数据,而是将数据存储为对象并由对象ID引用。对象存储的优点在于它具有很强的伸缩性,并且在将属性与对象相关联方面具有高度的灵活性。使用对象存储的缺点是它执行起来不如块储存。

由于对象存储主要是为实现可伸缩性而设计的,因此它是公共云提供商的热门选择。Docker容器可以链接到Amazon Web Services或Microsoft Azure上的对象存储,但这样做需要专门设计容器化应用程序以利用对象存储。而典型的应用程序可能被设计为通过文件系统或SCSI调用访问数据,对象存储需要基于HTTP的REST调用,例如Get或Put。因此,应该将对象存储保存在需要大规模可伸缩存储的应用程序或需跨地域的存储上。

结论:由于依赖于REST调用,对象存储可能更复杂。但对象存储提供的可伸缩性使它成为一个很好的选择, 因为在容器环境中,大规模可伸缩性常常是大家优先考虑的。

原文来源:Rancher Labs

时间: 2024-08-11 07:37:32

块存储、对象存储和文件系统: 它们对容器而言意味着什么?的相关文章

三种存储类型比较-文件、块、对象存储

块存储和文件存储是我们比较熟悉的两种主流的存储类型,而对象存储(Object-based Storage)是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备(Object-based Storage Device)简称OSD. 首先,我们介绍这两种传统的存储类型.通常来讲,所有磁盘阵列都是基于Block块的模式,而所有的NAS产品都是文件级存储. 1.块存储 以下列出的两种存储方式都是块存储类型: 1) DAS(Direct Attach STorage):是直接连接于主机服务器的一

对象存储(Object-based Storage)

1 前言 经常在网上看到对象存储文章,但一直没有一篇文章能让我明白对象存储是什么.最近得到一个机会,老板希望我们告诉他什么是对象存储,为了给老板做5页PPT笔者参阅了大量的文献并整理成文(以下文章仅供当参阅,并非权威之作,如果你觉得有不妥之处,欢迎指正).2 对象存储 2.1 Obeject-based Storage的概念(个人整理,并非权威) 是一种新的储架构,对象存储有别于Block与File级别的存储,他以一个弹性的可自定义的数据对象为基本的存储单元,基于数据对象的唯一ID索引,并形成虚

磁盘工作原理、文件系统及i节点、块存储、文件存储、对象存储、DAS、NAS、还有SAN

(一)磁盘工作原理 一般硬盘正面贴有产品标签,主要包括厂家信息和产品信息,如商标.型号.序列号.生产日期.容量.参数和主从设置方法等.这些信息是正确使用硬盘的基本依据,下面将逐步介绍它们的含义. 硬盘主要由盘体.控制电路板和接口部件等组成,如图1-1所示.盘体是一个密封的腔体.硬盘的内部结构通常是指盘体的内部结构:控制电路板上主要有 硬盘BIOS.硬盘缓存(即CACHE)和主控制芯片等单元,如图1-2所示:硬盘接口包括电源插座.数据接口和主.从跳线,如图1-3所示. 图1-1 硬盘的外观 图1-

对象存储、块存储、文件系统存储概念与区别

一.概念及区别 针对不同的应用场景,选择的分布式存储方案也会不同,因此有了对象存储.块存储.文件系统存储.这三者的主要区别在于它们的存储接口: 1.  对象存储: 也就是通常意义的键值存储,其接口就是简单的GET,PUT,DEL和其他扩展,如七牛.又拍,Swift,S3 2. 块存储: 这种接口通常以QEMU Driver或者Kernel Module的方式存在,这种接口需要实现Linux的Block Device的接口或者QEMU提供的Block Driver接口,如Sheepdog,AWS的

块存储、文件存储、对象存储

知乎上看到的 [块存储] 典型设备:磁盘阵列,硬盘 块存储主要是将裸磁盘空间整个映射给主机使用的,就是说例如磁盘阵列里面有5块硬盘(为方便说明,假设每个硬盘1G),然后可以通过划逻辑盘.做 Raid.或者LVM(逻辑卷)等种种方式逻辑划分出N个逻辑的硬盘.(假设划分完的逻辑盘也是5个,每个也是1G,但是这5个1G的逻辑盘已经于原来的 5个物理硬盘意义完全不同了.例如第一个逻辑硬盘A里面,可能第一个200M是来自物理硬盘1,第二个200M是来自物理硬盘2,所以逻辑硬盘A是由多个 物理硬盘逻辑虚构出

块存储、文件存储和对象存储

一.块存储 典型设备:磁盘阵列,硬盘 块存储主要是将裸磁盘空间整个映射给主机使用的,就是说例如磁盘阵列里面有5块硬盘(为方便说明,假设每个硬盘1G),然后可以通过划逻辑盘.做Raid.或者LVM(逻辑卷)等种种方式逻辑划分出N个逻辑的硬盘.(假设划分完的逻辑盘也是5个,每个也是1G,但是这5个1G的逻辑盘已经于原来的5个物理硬盘意义完全不同了.例如第一个逻辑硬盘A里面,可能第一个200M是来自物理硬盘1,第二个200M是来自物理硬盘2,所以逻辑硬盘A是由多个物理硬盘逻辑虚构出来的硬盘.) 接着块

块存储、文件存储、对象存储这三者的本质差别是什么

块存储:类似硬盘,需要挂载,可以分区,需要格式化,之后方可使用 文件存储:用自己的文件系统组织文件,只要支持协议并有许可,就可以使用,通常是通过网络: 对象存储:类似文件存储,但是有所区别.首先,不使用文件系统的层级方式组织文件,而是扁平化,通过id直接查找:然后是访问资源的方式,通常是用http和rest方式直接访问. 参考:https://www.zhihu.com/question/21536660 原文地址:https://www.cnblogs.com/ihibin/p/8759180

对象存储与块存储、文件存储等对比

看到 一篇文档, 讲 对象存储, 好奇,搜索文章,摘抄,学习记录 ! 背景: 传统存储在面对海量非结构化数据时,在存储.分享与容灾上面临很大的挑战,主要表现在以下几个方面:传统存储并非为非结构化内容设计或优化.成本过高.并非PB级的扩展.不支持永远在线.专有的一体机设备等等,非结构化数据以每年60%-80%的速率增长,从而可扩展性变成了最迫切的需求. 传统存储在面对海量非结构化数据时,在存储.分享与容灾上面临很大的挑战,主要表现在以下几个方面:传统存储并非为非结构化内容设计或优化.成本过高.并非

块存储、文件存储、对象存储意义及差异

关于块存储.文件存储.对象存储方面的知识在知乎上看到了个很好的解答:https://www.zhihu.com/question/21536660 通俗易懂,查了些资料做了详细的补充. 块存储 典型设备:磁盘阵列.硬盘 块存储主要是将裸磁盘空间整个映射给主机使用的. 就是说例如:磁盘阵列里面有5块硬盘,然后可以通过划逻辑盘.做Raid.或者LVM等方式逻辑划分出N个逻辑的硬盘.但是逻辑盘和物理盘是两个完全不同的概念.假设每个硬盘100G,共有5个硬盘,划分为逻辑盘也为5个,每个100G,但是这5