ceph-volume源码分析(一)

11 篇文章 1 订阅
11 篇文章 1 订阅

ceph-volume初识

   在接触ceph的过程中,用到了ceph-volume这个部署OSD的社区工具,就想着利用闲暇时间看下源码实现,一方面自己很久没有写过东西了,利用看源码的过程熟悉下python语言,同时学习下社区大佬的编程思路和风格。
   废话不多说,先上官方介绍文档地址:[官方链接地址](https://docs.ceph.com/en/latest/man/8/ceph-volume/)
   通过官方介绍文档我们可以看到ceph-volume是社区用来替代ceph-disk的OSD部署和检查工具,用于将逻辑卷部署为 OSD,尝试维护与ceph-disk类似的 API,包括准备、激活和创建 OSD 等。
   本文的思路是通过分析ceph-volume的中部分业务流程(如ceph-volume lvm list /dev/sdc、ceph-volume lvm zap /dev/sdc等)的代码实现,在了解其思路和实现方式的基础上提升自己阅读开源代码的能力。
   首先,我们先看下ceph-volume的源码组织结构,如下图所示:
   ├── api
   ├── __init__.py
   ├── lvm.py
├── configuration.py
├── decorators.py
├── devices
   ├── __init__.py
   ├── lvm
      ├── activate.py
      ├── batch.py
      ├── common.py
      ├── create.py
      ├── deactivate.py
      ├── __init__.py
      ├── listing.py
      ├── main.py
      ├── prepare.py
      ├── trigger.py
      └── zap.py
   ├── raw
      ├── activate.py
      ├── common.py
      ├── __init__.py
      ├── list.py
      ├── main.py
      ├── prepare.py
   └── simple
       ├── activate.py
       ├── __init__.py
       ├── main.py
       ├── scan.py
       └── trigger.py
├── exceptions.py
├── __init__.py
├── inventory
   ├── __init__.py
   ├── main.py
├── log.py
├── main.py
├── process.py
├── systemd
   ├── __init__.py
   ├── main.py
   └── systemctl.py
├── terminal.py
├── tests
   ├── conftest.py
   ├── devices
      ├── __init__.py
      ├── lvm
         ├── __init__.py
         ├── test_activate.py
         ├── test_batch.py
         ├── test_common.py
         ├── test_create.py
         ├── test_deactivate.py
         ├── test_listing.py
         ├── test_prepare.py
         ├── test_trigger.py
         └── test_zap.py
      ├── raw
         ├── __init__.py
         └── test_prepare.py
      └── test_zap.py
   ├── __init__.py
   ├── test_configuration.py
   ├── test_decorators.py
   ├── test_inventory.py
   ├── test_main.py
   ├── test_process.py
   └── test_terminal.py
└── util
    ├── arg_validators.py
    ├── constants.py
    ├── device.py
    ├── disk.py
    ├── encryption.py
    ├── __init__.py
    ├── prepare.py
    ├── system.py
    └── templates.py

configuration.py:加载及读取ceph配置文件的相关函数
decorators.py:实现了2个装饰器,主要是用于异常处理和权限判断的使用场景
devices目录:定义了处理各种类型OSD设备的实现,如lvm目录下定义了通过lvm子命令存储、重发现、查询与 OSD 关联设备的各种操作实现,以便它们可以激活使用
api模块下的lvm.py文件主要定义了lvm tag处理的相关操作
exceptions.py:自定义的异常类
inventory目录:定义了ceph-volume inventory子模块的实现,提供有关主机物理磁盘清单的信息并报告有关这些磁盘的元数据。在这些元数据中,可以找到特定磁盘的数据项(例如型号、大小、旋转或固态)以及特定于使用设备的 ceph 数据项,例如是否可用于 ceph 或是否存在逻辑卷。
log.py:ceph-volume日志处理相关实现
main.py:主程序,接收终端参数并调用相应子命令进行处理
process.py:进程相关处理实现,主要是对subprocess一些接口和返回值进行了封装
systemd目录:主要是关于将ceph-volume作为systemd服务实现的相关代码
terminal.py:主要是终端输出的一些处理,如格式化,上色等
util目录:一些公用函数
tests目录:相关模块测试函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值