url|极光笔记丨搭建UMS私有云文件服务器( 二 )


RS最多能容忍m个数据块被删除。 数据恢复的过程如下:
(1)假设D1、D4、C2丢失,从编码矩阵中删掉丢失的数据块/编码块对应的行。(图2、3)
(2)由于B' 是可逆的,记B'的逆矩阵为 (B'^-1),则B' * (B'^-1) = I 单位矩阵。两边左乘B' 逆矩阵。 (图4、5)
(3)得到如下原始数据D的计算公式,如下图:
url|极光笔记丨搭建UMS私有云文件服务器
文章插图
(4)对D重新编码,可得到丢失的编码。
url|极光笔记丨搭建UMS私有云文件服务器
文章插图
4.4 以纠删码模式运行minIO
minIO会自动生成12块盘,命令如下:
4.5 存储形式
数据对象在minIO集群中进行存储时,先进行纠删分片,后打散存储在各硬盘上。具体为:minIO自动在集群内生成若干纠删组,每个纠删组包含一组硬盘,其数量通常为4至16块;对数据对象进行分片,默认策略是得到相同数量的数据分片和校验分片;而后通过哈希算法计算出该数据对象对应的纠删组,并将数据和校验分片存储至纠删组内的硬盘上。
url|极光笔记丨搭建UMS私有云文件服务器
文章插图
如上图所示,假设某minIO集群内纠删组包含4块硬盘,某数据对象名为MyObject,其隶属存储桶名为MyBucket,哈希计算得到对应的纠删组为Disk 1~4。那么在Disk 1~4的数据路径下,都会生成MyBucket/MyObject子路径,子路径中包含2个文件,分别为存储元数据信息的xl.json和MyObject对象在该盘上的第一个分片part.1。其中,xl表示minIO中数据对象的默认存储格式。
5.minIO golang SDK简单使用
以下上传文件的例子可以直接运行,文件会上传到minIO官方服务器
url|极光笔记丨搭建UMS私有云文件服务器
文章插图
url|极光笔记丨搭建UMS私有云文件服务器
文章插图
三、minIO在UMS系统中的实际应用1.应用系统架构
整个架构中,模块之间使用http协议通信,并且每个模块的作用如下:
(1)Web/API服务器的作用是提供UMS系统的认证和鉴权,即验证Web客户端或者开发者API请求接口的合法性;
url|极光笔记丨搭建UMS私有云文件服务器
文章插图
(2)文件管理服务器的作用是提供对外操作minIO服务器的接口,根据目前UMS系统的业务需求,只提供了获取上传文件presignedURL,设置过期时间, 设置对外访问策略,创建存储桶,生成下载文件URL的功能;那么什么是presignedURL呢?它是对象所有者使用自己的安全凭证来创建预签名的 URL,以授予有限时间内的上传或下载对象权限,从而与其他用户共享对象,注:即使是私有对象使用presignedURL也可以共享给他人,并且presignedURL最大有效期为7天。
其中文件管理服务器获取上传文件presignedURL的方法直接使用了minIO官方API,当然你也可以自己实现presignedURL方法,此外,由于下载presignedURL最大保留时间为7天,不符合UMS系统业务需求,所以,文件管理服务器自己实现了一个生成下载URL的方法,此链接的过期时间可任意设置,但前提要把存储桶的对外访问策略设置为public。由此,客户端就可以直接使用上传presignedURL上文件到minIO服务器,使用下载链接直接下载文件即可。
(3)minIO集群作用是存储实体文件,该集群采用去中心化无共享架构,各节点间为对等关系,连接至任一节点均可实现对集群的访问,minIO集群前端增加了Nginx实现反向代理;minIO节点之间的通信使用的都是rpc。此外,管理minIO服务器除了上面提到的SDK以外,官方还提供了命令行和web页面的形式,内容分别如下:
url|极光笔记丨搭建UMS私有云文件服务器