Sev*_*ver 27 storage object persistent-object-store
有人可以解释对象存储和文件存储之间有什么区别吗?
我在维基上阅读了关于对象存储的内容,我也阅读了http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf,我也阅读了amazons docs(S3),openstack swift等等.但是有人能举个例子来更好地理解吗?
所有不同之处仅在于"对象存储"对象我们添加了更多元数据?
例如,如何使用某种编程语言(例如python)存储像对象一样的图像?
谢谢.
小智 15
IMO,对象存储与规模无关,因为有人可以构建一个能够存储大量文件的FS,即使在一个目录中也是如此.
它也与访问方法无关.在许多众所周知的NAS系统中已经可以访问对文件系统中的数据的HTTP访问.
OID存储/访问是一种处理数据的方式,无需为命名而烦恼.它也可以在文件上完成.我相信有一个NFS协议扩展允许这样做.
我会集合这一点:对象存储是一种(新的/不同的)"以对象为中心"的思考数据,访问和管理的方式.
想想这些要点:
今天的快照是什么?它们是卷的时间点副本.拍摄快照时,卷中的所有文件也会被捕捉.是否所有人都喜欢或不喜欢它们.对于完整的卷快照,可以使用大量空间(浪费?),而只需要捕捉几个文件.
在对象存储系统中,您很少会看到卷的快照,对象将被快照,可能是自动的.这是对象版本控制.不需要对所有对象进行版本控制,每个对象都可以判断它是否已经过版本控制.
如何保护文件/卷免受灾难影响?通常,在灾难恢复(DR)设置中,将设置整个卷/卷集以复制到DR站点.同样,这并不打算是否要复制单个文件.灾害保护的单位是数量.文件很小.
在对象存储系统中,DR不是以卷为中心的.对象元数据可以决定应该存在多少副本以及位置(地理位置/故障域).
与其他功能类似:
分层 - 基于其元数据放置在存储层/类中的对象,与其他不相关的对象无关.
生活 - 对象在各层之间移动,单独更改副本数等,而不是作为一组.
身份验证 - 如果需要,可以从不同的身份验证域进行身份验证.
正如您所看到的,思维的变化是在对象存储中,一切都与对象有关.
与传统的思维方式相比较,管理和访问较大的容器(如卷(包含文件))不是对象存储.
上述特征及其以对象为中心的特性非常符合非结构化数据的要求,因此也符合其兴趣.
如果存储系统在其思想中是以对象(或文件)为中心而不是以体积为中心(无论访问协议或规模如何),则它是对象存储系统.
小智 13
文件存储和对象存储之间存在一些非常根本的区别.
文件存储本身就是一个包含目录,子目录和文件的文件系统层次结构.当文件数量不是很大时,它很棒并且工作得很漂亮.当您确切知道文件的存储位置时,它也可以正常工作.
另一方面,对象存储通常通过自身呈现.RESTful API.没有文件系统的概念.相反,应用程序会将对象(文件+附加元数据)保存到对象库.PUT API和对象存储器会将对象保存在系统中的某个位置.对象存储平台将为应用程序提供应用程序将存储在应用程序数据库中的该对象的唯一密钥(类似于代客票证).如果应用程序想要获取该对象,则他们需要做的就是将该键作为GET API的一部分提供,并且该对象将由对象存储器提取.
希望现在已经清楚了.
小智 8
披露 - 我为开发和销售大型文件系统和对象存储平台的供应商(NetApp)工作,我会尽量保持这个实现中立,但我的认知偏差可能会无意识地影响我的答案.
从访问,可编程性和实现的角度来看,存在许多差异,但是考虑到这可能主要是由程序员而不是基础设施或存储人员阅读,我将在这里关注这方面.
与外部/编程观点的主要区别在于,对象库中的对象是作为完整单元创建,删除或更新的,您无法将数据附加到对象而无法更新部分对象"就地",但您可以在保持相同对象ID的同时替换它.创建,读取,更新和删除对象通常是通过相对简单的API完成的,这些API几乎总是基于REST或基于REST,并鼓励商店是可编程资源或可能作为多租户远程服务的思维模式.虽然我所知道的大多数对象存储都支持对象内的字节范围读取,但一般来说,对象存储最初设计为可以处理整个对象.对象存储API的良好示例是Amazon S3(对象存储访问的默认标准),OpenStack Swift和Azure Blob Service REST API使用的API.描述这些API背后的后端实现本身就是一本书.
另一方面,文件系统中的文件具有可应用于它们的更广泛的功能集,包括附加数据和更新数据.编程模型比对象存储更复杂,现在几乎总是通过"POSIX"样式的接口以编程方式访问,并且通常尝试最有效地使用CPU和内存,并鼓励文件系统是私有本地资源的思维模式. .NFS和SMB确实允许文件系统作为多租户资源提供,但是这些通常被程序员怀疑,因为他们有时会对"本地"文件系统的反应有细微的差别,尽管他们完全支持POSIX语义.要更新本地文件系统中的文件,您可能会使用API,例如https://www.classes.cs.uchicago.edu/archive/2017/winter/51081-1/LabFAQ/lab2/fileio.html或https:/ /msdn.microsoft.com/en-us/library/mt794711(v=vs.85).aspx.谈论文件系统实现的相对优点,例如NTFS vs BTRFS vs XFS vs WAFL vs ZFS有可能导致宗教战争很少值得任何时间,但如果你给我买啤酒我会很高兴与你分享我的意见.
从用例的角度来看,如果您想保留大量照片,视频或二进制构建文物,那么对象存储通常是一个不错的选择.另一方面,如果您希望将数据持久存储在二叉树中并在存储介质上更新该数据,那么对象存储将无法工作,并且您可以更好地使用文件系统(您也可以使用原始块设备,但自从90年代初以来我没见过任何人这样做
另一个很大的区别是文件系统设计为高度一致,并且通常在低到中等延迟(50微秒 - 50毫秒)网络上访问,而对象存储通常最终是一致的,并且分布在低共享的无共享基础设施上带宽高延迟广域网及其到第一个字节的时间有时可以以整秒的倍数来衡量.从对象存储执行大量小型(4K - 16K)随机读取可能会导致挫折和性能问题.
对象存储与文件系统的另一个主要好处是,您可以合理地确定放在对象存储中的任何内容都将保留在那里,直到您再次请求它并且只要您继续支付它就永远不会用完空间每月收费.这些资源通常是大规模运行的,内置复制,版本控制,自动恢复等等,并且Hurricane Harvey风格的灾难将使数据消失(即使这样,您也可以轻松选择在另一个位置制作另一个副本).使用文件系统,尤其是您希望自己或本地操作人员管理的文件系统,您必须希望所有内容都得到备份,并且不会意外填满,并且当您无法再更新数据时导致所有内容都消失.
我已经尝试过了,但是为了增加混乱,"filesystem"和"object store"这两个词应用于与我上面使用的描述完全不同的东西,例如NFS,网络文件系统实际上并不是文件系统,它是通过远程过程调用实现posix存储API的一种方式,VMware的VSAN将其数据存储在它们称为"对象存储"的东西中,允许高速就地更新虚拟机映像.
小智 6
简单的答案是,对象访问存储系统或服务利用 API 和其他对象访问方法来存储、检索和查找数据,而不是传统文件或 NAS。例如,对于文件或 NAS,您可以使用 NFS(网络文件系统)或 CIFS(例如 Windows 文件共享)(又名 SMB 又名 SAMBA)访问存储,其中文件具有由文件系统确定的名称/句柄以及关联的元数据。
元数据包括有关创建、访问、修改和其他日期、权限、安全性、应用程序或文件类型或其他属性的信息。文件的大小以及每个文件系统的文件数量受到文件系统的限制。同样,文件系统在空间容量和文件系统中的文件数量方面也受到其总大小或聚合大小的限制。
对象访问的不同之处在于,虽然文件或 NAS 前端或网关或插件可用于许多解决方案或服务,但主要访问是通过 API,其中对象可以是任意大小(最大为对象系统的最大值)具有可变大小的元数据(取决于对象系统/服务实现)。对于大多数对象存储系统/服务,您可以指定几 KB 或 GB 的用户定义元数据。您会使用 GB 元数据做什么?除了正常信息之外,还可以添加更多策略、管理、其他副本所在位置、视频、音频的缩略图或小预览等数据。
对象访问 API 或接口的一些示例包括 Amazon Web Services (AWS) 简单存储服务 (S3) 或其他基于 HTTP 和 REST 的服务、SNIA CDMI。不同的解决方案还将支持 IOS(例如 iphone/ipad)访问、SOAP、Torrent、WebDav、JSON、XAM 以及 NFS/CIFS 等。此外,许多对象存储系统或服务都支持 Python 等的编程绑定。API 本质上允许您打开一个流,然后获取或放置、列出 API/系统支持的其他功能,以确定您将如何使用它。
例如,我使用 Rackspace Cloud 文件和 Amazon S3(除了 EBS 和 Glacier)来备份、存储和归档数据。我可以通过网络浏览器或工具访问存储的对象,包括 Jungle disk (JD),我用它来备份和同步文件。JD 负责对象管理,并将数据转移到 Rackspace 和 Amazon。如果我愿意,我还可以使用 API 进行一些编程,然后直接访问提供我的安全凭证的网站,以对我存储的对象执行操作。
这是我去年在荷兰举办的一次会议上的对象和云存储入门知识的链接,其中有一些对象和访问的简单示例。 http://storageio.com/DownloadItems/Nijkerk_Nov2012/SIO_IndustryTrends_CloudObjectStorage.pdf
使用编程绑定,您可以在程序中定义数据结构或对象,然后使用 API 或调用来存储、检索、数据列表、元数据访问等。如果有特定的对象存储系统、软件或服务如果您正在寻求合作或需要了解如何编程,请访问他们的网站,您应该找到他们的 SDK 或 API 信息以及示例。对于对象,一旦您在服务或产品/系统上创建了初始存储桶或容器,您就可以随时创建并存储其他对象。
以下是 AWS S3 API/编程示例的链接: http://docs.aws.amazon.com/AmazonS3/latest/API/IntroductionAPI.html
理论上,人们谈论的对象存储系统具有无限数量的对象或对象大小,实际上,大多数系统、解决方案、软件或服务都受到它们已测试或当前支持的内容的限制,这些对象可能是数十亿个对象, 5GByte 或更大的对象大小。请注意特定服务或产品的限制,即实际测试、支持的内容与架构上可能的内容或在 webex 或 powerpoint 上实施的内容。
同样,它的服务和产品/服务/软件取决于对象的数量、对象的大小、元数据的大小以及可以通过 API 移入/移出的数据量。然而,通常可以安全地假设对象存储比文件系统(不使用全局名称空间、联合、文件虚拟化或其他技术)具有更高的可扩展性(取决于实现)。
另外,在我的书《云和虚拟数据存储网络》(CRC Press)(英特尔推荐读物)中,您将找到有关云和对象存储的更多信息。
我很快就会向 www.objectstorage.us 添加更多相关材料。
干杯 GS
对象存储 = 块存储 + 丰富的元数据 - 文件层次结构
块存储使用文件系统来指向存储内容的位置。对象存储使用标识符来指向内容及其上下文。这是我对阅读内容寻址与位置寻址的理解
块存储需要文件系统和结构,因此文件系统越大,开销越大。对象存储有很多关于文件的上下文,不需要文件层次结构。戴尔论文第7页的解释清楚地表明了这一点。令我困扰的是,硬盘本身的规模没有得到解释。我发现硬盘本身总是使用块存储机制(尽管这似乎正在改变)(尽管这似乎正在改变)
可以在这里找到一些其他见解
| 归档时间: |
|
| 查看次数: |
31248 次 |
| 最近记录: |