对象存储
基于对象的存储设备标准
编辑
OSD版本1
编辑
在OSD标准的第一个版本中,[34] 对象是用一个64位的分区ID和一个64位的对象ID指定的。分区在OSD中被创建和删除,而对象在分区中被创建和删除。分区或对象没有固定的大小,它们被允许在设备的物理大小限制或分区的逻辑配额限制下增长。
一套可扩展的属性描述对象。有些属性是由OSD直接实现的,如一个对象的字节数和一个对象的修改时间。有一个特殊的策略标签属性,是安全机制的一部分。其他的属性则不被OSD所解释。这些是由使用OSD进行持久化存储的上级存储系统在对象上设置的。例如,属性可能被用来对对象进行分类,或者用来捕捉存储在不同OSD上的不同对象之间的关系。
列表命令返回一个分区中的对象的标识符列表,可以选择通过与属性值的匹配进行过滤。列表命令还可以返回列表对象的选定属性。
读和写的命令可以与获取和设置属性的命令结合起来,或者说是捎带上的。这种能力减少了高层存储系统穿越接口到OSD的次数,这可以提高整体效率。
OSD版本2
编辑
第二代SCSI命令集“基于对象的存储设备-2”(OSD-2)增加了对快照、对象集合的支持,并改进了错误处理。[35]
快照是将一个分区中的所有对象复制到一个新的分区中的时间点。OSD可以使用写时拷贝技术实现空间效率高的拷贝,这样两个分区就可以共享快照之间没有变化的对象,或者OSD可以将数据物理地拷贝到新的分区中。该标准定义了克隆和快照,前者是可写的,后者是只读的。
集合是一种特殊的对象,包含其他对象的标识符。有一些操作可以从集合中添加和删除,还有一些操作可以获取或设置集合中所有对象的属性。集合也被用于错误报告。如果一个对象因为介质缺陷(即磁盘上的一个坏点)或OSD实现中的软件错误而损坏,它的标识符会被放入一个特殊的错误集合中。使用OSD的上级存储系统可以查询这个集合并在必要时采取纠正措施。