【分析】Ceph文件系统修复机制cephfs-data-scan(3)
2017-08-06 01:38
531 查看
Ceph文件系统修复机制ceph-data-scan(3)
前述章节已经介绍过: ceph-data-scan是通过函数data_scan.main(args)解析并执行用户命令的。 data_scan.main(args)的参数检查和解析及其ceph-data-scan init的执行过程 本章节主要介绍cephfs-data-scan scan_extents --force-pool <data pool name>的实现过程作者:Younger Liu,本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。本文链接地址为:http://blog.csdn.net/younger_china/article/details/76737659
当用户输入命令如下命令# cephfs-data-scan scan_extents --force-pool <data pool name>当<data pool name>为文件系统数据池,必须指定--force-pool
1. 参数解析
当进入data_scan.main中时,首先会解析参数,当解析到--force-pool时,会设置全局变量force_pool=trueif (arg == "--force-pool") {
force_pool = true;
return true;
}
...
} else {
return false;
}
2. 初始化
然后会初始化fs、 driver,与rados建立通信联系3. 存储池的查找
通过存储池的名字获取存储池的IDdata_pool_id = rados.pool_lookup(data_pool_name.c_str());
if (data_pool_id < 0) {
std::cerr << "Data pool '" << data_pool_name << "' not found!" << std::endl;
return -ENOENT;
} else {
dout(4) << "data pool '" << data_pool_name
<< "' has ID " << data_pool_id << dendl;
}pool_lookup调用函数
int64_t librados::RadosClient::lookup_pool(const char *name)其流程如下:
其语义很简单:首先是获取osdmap,同步请求
从osdmap查找存储池的ID
如果前两步,无法查找,则更新osdmap,再一次查找
继续判断,如果不是文件系统的数据池,则直接返回
if (!fs->mds_map.is_data_pool(data_pool_id)) {
std::cerr << "Warning: pool '" << data_pool_name << "' is not a "
"CephFS data pool!" << std::endl;
if (!force_pool) {
std::cerr << "Use --force-pool to continue" << std::endl;
return -EINVAL;
}
}最后调用scan_extents
4 scan_extents分析
其流程如下:(有待于仔细斟酌和完善)获取对象分片列表的起始、终止焦点判断是否为旧版本osd,旧版本osd是不支持cephfs pgls filtering mode
依次遍历每一个object,对每一个object进行处理
作者:Younger Liu,本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。本文链接地址为:http://blog.csdn.net/younger_china/article/details/76737659
相关文章推荐
- 【分析】Ceph文件系统修复机制cephfs-data-scan(1)
- 【分析】Ceph文件系统修复机制cephfs-data-scan(2)
- windows的文件系统机制引发的PHP路径爆破问题分析
- 嵌入式Linux文件系统及其存储机制分析
- 嵌入式Linux文件系统及其存储机制分析
- 嵌入式Linux文件系统及其存储机制分析
- 嵌入式Linux文件系统及其存储机制分析 - farsight嵌入式学习专栏 - CSDNBlog
- 嵌入式Linux文件系统及其存储机制分析
- 嵌入式Linux文件系统及其存储机制分析
- 嵌入式Linux文件系统及其存储机制分析
- Ceph 文件系统源代码分析 - OS module (2)
- Windows MySQL(zip版本),启动不了,因为缺少data文件。(双系统修复三)
- 嵌入式Linux文件系统及其存储机制分析
- 嵌入式Linux文件系统及其存储机制分析
- 嵌入式Linux文件系统及其存储机制分析
- 【分析】一般文件系统的fsck机制
- 嵌入式Linux的文件系统及其存储机制分析
- 嵌入式Linux文件系统及其存储机制分析
- Android系统进程间通信Binder机制在应用程序框架层的Java接口源代码文件分析
- 嵌入式Linux的文件系统及其存储机制分析