基于hayStack海量分布式文件存储系统-seaweedfs探究

  1. Volume Server -存储服务

       Volume Server是负责读写存储在系统中的文件,即haystack中的Store服务,它在存储小文件时(图片,小视频等),将小文件追加存储在一个大文件中(顺序写入),以便减少系统文件数量,这个大文件称为卷(volume), 运行时Volume数据结构中保存对卷文件的open fd。读取文件时,则根据文件在卷中的id,offset,size来定位在卷中的位置,并读取,<id,offset,size> 称为文件索引(index),下面将详细分析索引。

    一个Volume Server可以管理多个Linux 文件夹,每个文件夹中可以有多个volume。启动volume server时,可以通过dir参数来指定文件夹位置列表,max参数来限定每个文件夹中volume数量上限值。另外单个volume大小不超过32G,在启动Master Server时可通过volumeSizeLimitMB参数来指定单个volume大小。

    一个volume由一个Superblock和若干个needle组成,其中一个needel就是存储的一个文件。volume的结构如下图1.1 所示:

    Volume Server 主要功能包括:

  • 管理卷文件(volume),包括volume的创建,删除,读,写。如果读取文件时,发现文件不在本volume server中,则可以302到正确的volume server地址。该特性通过启动volume server时的read.redirect参数来开启,默认为true. 文件所在volume server地址通过向Master server查询得知

  • 管理volume对应的索引文件以及内存索引

  • 向Master 上报自己的volume信息


       image.png

图1.1 layout of volume



猜你喜欢

转载自blog.51cto.com/xwandrew/2122101