dataserver 源码分析(一) 格式化

一、磁盘格式化、挂载

现有TFS可以在一台服务器上启动多个DataServer进程。一般每个DataServer进程负责一个磁盘。 将数据盘格式化成EXT4文件系统,并挂载到/data/tfs1至/data/tfs(i),其中i为磁盘号。

 

二、存储区预分配

执行scripts下的stfs format n (n为挂载点的序号,具体用法见stfs的Usage)。例如stfs format 2,4-6 则会对/data/tfs2, /data/tfs4,/data/tfs5,/data/tfs6,进行预分配。运行完后会在生成/data/tfs2, /data/tfs4,/data/tfs5,/data/tfs6下预先创建主块,扩展块及相应的统计信息。

1、加载配置文件,获取配置项,构造超级块文件路径为/data/tfs(index)/fs_super

2、初始化超级块,超级块内部格式:|   reserve   |   SuperBlockInfo     |     {BlockINdex|...|BlockIndex }   |

     将配置项信息设置到SuperBlockInfo中,由于在磁盘上保存的block块分为主块和扩展块,SuperBlockInfo中的mmap_option.first_mmap_size设置为主块的大小(向上取pagesize整数倍),mmap_option.per_mmap_size为扩展块大小(同上),mmap_option.max_mmap_size为MAX_MMAP_SIZE(同上)。main_block_id_seq初始化设置为1,ext_block_id_seq设置为totol_main_block_count_ + 1,以防冲突。将 超级块文件全映射到内存,并将SuperBlockInfo的信息更新过去。至此,超级块格式化完成。

3、创建mount_point目录,以及下面的index目录

4、预分配主块。在mount_point目录下创建预定个数的主块(fallocate方法)。

至此,启动dataserver服务前的准备工作已完成。

你可能感兴趣的:(dataserver 源码分析(一) 格式化)