欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Cinder源码目录结构

程序员文章站 2022-05-11 15:41:41
...
一 Cinder源码目录结构
[[email protected] cinder]# tree -L 2
.
├── api-ref
│   └── source
├── babel.cfg
├── cinder
│   ├── api
│   ├── backup
│   ├── brick
│   ├── cmd
│   ├── common
│   ├── compute
│   ├── config
│   ├── consistencygroup
│   ├── context.py
│   ├── coordination.py
│   ├── db
│   ├── exception.py
│   ├── flow_utils.py
│   ├── group
│   ├── hacking
│   ├── i18n.py
│   ├── i18n.pyc
│   ├── image
│   ├── __init__.py
│   ├── interface
│   ├── keymgr
│   ├── locale
│   ├── manager.py
│   ├── message
│   ├── objects
│   ├── opts.py
│   ├── policy.py
│   ├── policy.pyc
│   ├── quota.py
│   ├── quota.pyc
│   ├── quota_utils.py
│   ├── rpc.py
│   ├── rpc.pyc
│   ├── scheduler
│   ├── service.py
│   ├── service.pyc
│   ├── ssh_utils.py
│   ├── test.py
│   ├── tests
│   ├── transfer
│   ├── utils.py
│   ├── utils.pyc
│   ├── version.py
│   ├── version.pyc
│   ├── volume
│   ├── wsgi
│   └── zonemanager
├── cinder.egg-info
│   ├── dependency_links.txt
│   ├── entry_points.txt
│   ├── not-zip-safe
│   ├── pbr.json
│   ├── PKG-INFO
│   ├── requires.txt
│   ├── SOURCES.txt
│   └── top_level.txt
├── CONTRIBUTING.rst
├── etc
│   └── cinder
├── HACKING.rst
├── LICENSE
├── pylintrc
├── rally-jobs
│   ├── cinder-fake.yaml
│   ├── cinder.yaml
│   ├── extra
│   ├── plugins
│   └── README.rst
├── README.rst
├── releasenotes
│   ├── notes
│   ├── README.rst
│   └── source
├── requirements.txt
├── setup.cfg
├── setup.py
├── test-requirements.txt
├── tools
│   ├── check_exec.py
│   ├── colorizer.py
│   ├── config
│   ├── enable-pre-commit-hook.sh
│   ├── fast8.sh
│   ├── generate_driver_list.py
│   ├── hooks
│   ├── lintstack.py
│   ├── lintstack.sh
│   ├── test-setup.sh
│   └── with_venv.sh
└── tox.ini
bin:一些启动脚本、以及工具性脚本。比如cinder-api负责启动cinder-api服务,cinder-manager则是用于Cinder管理的命令行接口。
cinder:cinder核心代码。比如api、backup、scheduler、volume几个子目录分别是cinder-api、cinder-backup、cinder-scheduler、cinder-volume几个服务的具体实现。
cinder/common: 一些公共代码,比如说common/config.py定义了一些配置参数信息。
cinder/compute:导入Compute API,默认为cinder.computer.nova.API,定义了一些通过Nova客户端实现快照处理等操作的方法。
cinder/image:实现使用Glance作为后端镜像服务,有些操作通过Glance客户端调用Glance中的相应方法实现。
cinder/keymgr:秘钥管理。
Cinder/replication:管理卷的副本。卷的副本是一个对HA和容灾恢复相当关键的存储功能。
Cinder/transfer:处理卷所有权转换相关的请求,比如卷从一个租户转换到另一个租户。
Cinder/zonemanager:扩展了Cinder对FC的支持。
etc:配置文件模板,包括Paste配置文件等。
二 setup.cfg
依照惯例,理解具体的实现之前,我们需要仔细浏览setup.cfg文件。
[files]
packages =
    cinder
scripts =
    bin/cinder-all
    bin/cinder-api
    bin/cinder-backup
    bin/cinder-manage
    bin/cinder-rtstool
    bin/cinder-scheduler
    bin/cinder-volume
    bin/cinder-volume-usage-audit
类似于Swift,对于Cinder来说,setup.cfg文件值得关注的是scripts关键字所对应的内容,其中每一项都代表了一个被安装在系统里的可执行的脚本,它们同时也是Cinder各项工作的入口,完全可以作为我们理解Cinder具体实现的起点。
cinder-all:在一个进程里启动所有的Cinder服务。
cinder-rtstool:伴随LIO(Linux-IO Target,SCSI Target的开源实现)支持而增加的工具。
Cinder-volume-usage-audit:用于卷使用情况统计。

相关标签: cinder