使用nfsdirver进行开发
0.将开发包移入cinder-2013.1.zip 解压到开发目录/home/deve-cinder/workspace
1.将oslo移入cinder目录,glanceclient移入cinder开发目录cinder-2013.1
2.配置mysql
a)mysql-server python-mysqldb
b)允许远程访问 sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf
c)建立数据库cinder 以及赋予cinder用户权限
CREATE DATABASE cinder;
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%'IDENTIFIED BY 'asd';
3.软件包(python相关)
a)eventlet eventlet-0.13.0.tar.gz pip
关联包 greenlet-0.4.1.zip
安装过程出错:error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
安装sudo apt-get install python-dev即可
b)iso8601 iso8601-0.1.4.tar.gz pip
c)webob WebOb-1.2.3.tar.gz pip
d)paramiko paramiko-1.10.1.tar.gz pip
e)Paste Paste-1.7.5.1.tar.gz pip
f)paste-deploy PasteDeploy-1.5.0.tar.gz pip
g)routes Routes-1.13.tar.gz pip
h)sqlalchemy SQLAlchemy-0.7.8.tar.gz (https://pypi.python.org/pypi/SQLAlchemy/0.7.8 (python setup.py install))
采用pip安装 版本0.8.2大于resource.txt要求的<=0.7.9,因此下载包安装
i)stevedore stevedore-0.10.tar.gz pip
j)kombu kombu-2.5.12.tar.gz pip
k)setuptools-git setuptools-git-1.0.tar.gz pip
l)sqlalchemy_migrate 0.7.2 pip
m)lockfile lockfile-0.9.1.tar.gz pip
4.软件(apt-get)
a)rabbitmq-server
b) python-amqplib
c)nfs-common(nfsdriver使用,cinder-api/volume都使用)
5.同步数据库 ./cinder-manage db sync
创建数据库表
6.nfsdirver相关配置 http://blog.csdn.net/bellwhl/article/details/8772887
6.出现问题记录
a)启动api报错
Traceback (most recent call last):
File "cinder-api", line 26, in <module>
import eventlet
File "/home/cloud/workspace/cinder-2013.1/cinder/flags.py", line 41, in parse_args
version=version.version_string(),
File "/home/cloud/workspace/cinder-2013.1/cinder/openstack/common/version.py", line 71, in version_string
for part in self.release_string().split('.'):
File "/home/cloud/workspace/cinder-2013.1/cinder/openstack/common/version.py", line 63, in release_string
self.release = self._get_version_from_pkg_resources()
File "/home/cloud/workspace/cinder-2013.1/cinder/openstack/common/version.py", line 56, in _get_version_from_pkg_resources
return setup.get_version(self.package)
File "/home/cloud/workspace/cinder-2013.1/cinder/openstack/common/setup.py", line 358, in get_version
raise Exception("Versioning for this project requires either an sdist"
Exception: Versioning for this project requires either an sdist tarball, or access to an upstream git repository.
cloud@ubuntu22:~/workspace/cinder-2013.1/bin$ python cinder-api --config-file=/etc/cinder/cinder.conf --log-file=/var/log/cinder/cinder.log
> /home/cloud/workspace/cinder-2013.1/bin/cinder-api(26)<module>()
解决方法
将sys.path的设置移到import eventlet前
b)启动scheduler出错 DistributionNotFound: oslo.config>=1.1.0
去掉包关联检查
cinder-2013.1/tools/pip-requires文件记录了代码中需要检查的包的版本
由于自己开发,无须python-keystoneclient,python-glanceclient,python-swiftclient,oslo.config(直接移到开发包中)
setup.py定义了require的相关包,然后安装cinder后会产生cinder.egg-info文件夹,包含以下文件
dependency_links.txt
entry_points.txt
PKG-INFO
requires.txt(所需相关包)
SOURCES.txt
top_level.txt
cinder-scheduler启动时,通过extension,生成filter_manager,此过程便会对requires.txt进行相关包版本检查
修改requires.txt,移除python-keystoneclient,python-glanceclient,python-swiftclient,oslo.config(直接移到开发包中
c)启动cinder-volume报错
错误
Command: sudo cinder-rootwrap /etc/cinder/rootwrap.conf vgs --noheadings -o name
Exit code: 1
Stdout: ''
Stderr: 'sudo: cinder-rootwrap: command not found\n'
将/bin/cinder-rootwrap文件拷贝到/usr/bin下,并添加代码的路径sys.path.append("/home/deve-cinder/workspace/cinder-2013.1/")到该文件。
d)启动cinder-volume后,隔断时间报错
2013-07-19 15:15:45 WARNING [cinder.volume.drivers.nfs] Exception during mounting Unexpected error while running command.
Command: sudo cinder-rootwrap /etc/cinder/rootwrap.conf mount -t nfs 10.12.22.246:/home/deve-cinder/cinderpath /home/deve-cinder/nfspath/32122efc39a49c07c1fea05ba7bbd23e
Exit code: 32
Stdout: ''
Stderr: 'mount.nfs: Connection timed out\n'
nfsserver端没有将10.12.22.246:/home/deve-cinder/cinderpath 目录export出来
解决方法:
安装nfs-kernel-server 将目录export出来
/home/deve-cinder/cinderpath *(rw,sync,no_root_squash,no_subtree_check)