IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> ceph-volume源码分析(一) -> 正文阅读

[Python知识库]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目录:相关模块测试函数

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-01-03 16:02:37  更:2022-01-03 16:04:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:30:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码