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:用于卷使用情况统计。
上一篇: shell命令while循环中使用sleep命令代码示例
下一篇: 这么姐弟俩好幽默