2.4.?OSD - 对象存储设备

2.4.1. 处理阶段(Processing Stage)
2.4.2. 分片(Stripe)
2.4.3. 只读复制

对象存储设备(OSD)负责从/向磁盘读取和写入对象(文件数据)。此外,它还实现了文件副本(对客户端透明)。在本节中,澳门游戏平台注册网站首先描述OSD的各个处理阶段(Processing Stage)和组件。然后,讲述各个OSD节点在文件分片和只读复制情况下的交互。

2.4.1.?处理阶段(Processing Stage)

下面列出几个主要的Stage:

  • PreprocStage

    分析传入的RPC请求并调用和请求相匹配的操作(Operation)。它还根据Operation解析请求参数(RPC消息)。此外,它还解析并验证签名功能,并确保客户端有权执行此操作。为了提高性能,PreprocStage保留了验证功能和XLocation列表的缓存。

    PreprocStage还保存一个已打开文件列表,每当访问文件(即文件的对象)时,这个列表中的信息都会被更新。此列表也会基于上次访问时间进行定期检查(大约每隔一分钟),检查时将关闭超时的文件。这个关闭事件将被转发到另外的Stage上,以便这些Stage清理自己的缓存。由于已经被删除数据但是仍然处于open状态的文件依然可以通过POSIX请求进行读取或写入,因此close事件也用于最终移除已删除数据的文件。

  • StorageStage and StorageThread

    StorageStage将请求转发到StorageThreads池中,再基于fileID的hash值分配到不同的线程,以确保单个文件的所有请求都由同一个线程处理,以避免跨线程共享文件元数据。

    StorageThread实现真正的文件I / O以访问磁盘上的对象。它使用StorageLayout将对象按顺序转发至底层文件系统的文件和目录中。

  • DeletionStage

    此阶段用以移除磁盘上已删除数据的文件。这个阶段将在收到unlink请求后或文件关闭时被调用(请参阅PreprocStage)。

  • ReplicationStage

    从远程OSD获取文件副本数据。

  • CleanupThread

    这不是常规阶段,而是扫描垃圾文件的后台任务。如果在MRC上删除了某个文件的元数据,但客户端又没有在OSD中删除文件的真实数据,澳门游戏平台注册网站就会得到所谓的僵尸文件。要删除它们,OSD必须不时扫描其文件系统并检查MRC上的文件元数据。具体执行这些清理操作的频率和时间取决于系统的使用模式(例如,客户端在操作期间经常断开连接)。

2.4.2.?分片(Stripe)

UXFS允许将文件在多个OSD上进行分片(Stripe)。UXFS目前支持RAID0分片模式,它将文件分成一组固定大小的分片,然后通过一组存储服务器以轮询调度(Round-Robin)的方式分发给它们。下图为文件分片示意图:

因为不同的分片可以并行访问,因此整个文件可以由多个服务器通过网络进行读写,显著地增加了文件的读与写的速度。下面分别是分片数与读取速度、写入速度的关系:

2.4.3.?只读复制

只读复制允许用户以非常低的开销对不可变的文件进行复制。用户可以将文件设置为只读,之后它将不允许再被修改。这允许用户在其他OSD上添加这个文件的副本,这些副本可以是“完整的”或“惰性的”复制品。 对于“完整的”副本,OSD将自动获取该文件包含的所有对象。对于“惰性的”副本,OSD仅在客户端尝试读取它们时才提取对象。

XML 地图 | Sitemap 地图