Open cocalele opened 12 months ago
PFS2默认启动在host上,大部分场景可能是在启动PFS2之后,添加/删除共享盘的FS,而非启动PFS2时就已经存在共享盘,因此可能需要支持的流程:
a. 向PFS2进程挂载 share disk;
b. 初始化share disk元数据;
c . 删除share disk;
meta 区域的 backup 是有必要的;否则无法解决下刷 freelist/trimlist/MTL过程中,异常掉电的问题
PFS2默认启动在host上,大部分场景可能是在启动PFS2之后,添加/删除共享盘的FS,而非启动PFS2时就已经存在共享盘,因此可能需要支持的流程:
a. 向PFS2进程挂载 share disk;
b. 初始化share disk元数据;
c . 删除share disk;
也就是说,盘是动态添加上去的,而不是通过pfs配置文件预先加进去的。还可以更进一步,在pfs2部署的时候,完全去掉store服务。只提供动态加盘的命令 mkfs.pfs2
, 这个命令初始化元数据,并把加入到zookeeper。
形式上更像本地文件系统的使用习惯,只是背后依赖了pureflash的集群管理机制。
去掉store节点后,原来store里面的IO下发功能需要移到client实现。
meta data需要owner来负责维护,owner由store节点担任。因此store节点还不能完全移除
meta data需要owner来负责维护,owner由store节点担任。因此store节点还不能完全移除
非owner store进程,似乎没有具体的工作了
元数据规格计算: 1)lmt key_size: 32 byte, lmt entry_size: 48byte。 假设一个key对应一个entry,两者相加80byte; 2)假设使用4M的object size; 3)假设最大规则支持100T的共享盘
FreeList需要预留:(100T/4M) 4 byte = 100M TrimList需要预留:(100T/4M) 4 byte = 100M LMT需要预留:(100T/4M) * 80byte = 2000M
Metadata layout:
磁盘的元数据区 大小可以通过
meta_size
在配置文件中配置。缺省40GB支持PFS2需要进行下面的修改:
0x00030000
当存储节点启动时要检查磁盘是否为新盘,对新盘需要进行创建元数据操作。由于共享盘挂在多个存储节点上,为避免多个节点同时对盘进行初始化,初始化前每个节点要获取global meta lock。 流程如下: 1. 判断盘是否为新盘,如果是: a. 获取global meta lock b. 再次判断盘是否为新盘,如果已经被其他节点初始化了,则结束初始化 c. 初始化global meta d. 释放global meta lock