OpenStack Cinder创建Volume详解与启动脚本分析

需积分: 50 19 下载量 87 浏览量 更新于2024-07-21 收藏 2.09MB DOC 举报
在OpenStack Icehouse版本中,Cinder是OpenStack的块存储服务,用于管理和提供持久化的块存储设备,如硬盘或虚拟卷。当我们需要创建一个新的volume(块存储设备)时,Cinder API服务扮演了关键角色。这个过程涉及到一系列步骤,从启动Cinder API服务到配置文件的检查、进程管理和日志记录。 首先,我们关注的是启动Cinder API服务。其启动脚本位于`/etc/init.d/openstack-cinder-api`,这个脚本被设计成一个sysv init风格的服务启动器。启动时,脚本会检查两个关键文件:`/usr/bin/cinder-api`(Cinder API的可执行文件)和`/etc/cinder/cinder.conf`(主要配置文件)。如果这些文件不存在或不可用,脚本将返回错误代码。 `/etc/rc.d/init.d/functionssuffix=api`部分定义了服务名后缀(例如,可能是`cinder-api`),并设置了一些环境变量。然后,脚本会启动进程,指定用户(通常是`cinder`)、PID文件路径(`/var/run/cinder/cinder-$suffix.pid`)以及日志文件位置(`/var/log/cinder/$suffix.log`)。它使用`daemon`命令以守护进程模式运行,并将日志重定向到/dev/null以减少输出,确保服务在后台运行。 当服务成功启动后,`start()`函数会检查启动状态并触碰锁文件`/var/lock/subsys/$prog`以表示服务已启动。如果启动过程中遇到问题,函数会返回相应的错误代码。 此外,提到的`ps -ef | grep cinder-api`命令可以用来查看当前系统中是否正在运行Cinder API服务。这在监控和管理服务状态时非常有用。 在脚本的导入部分,引入了`eventlet`模块,这是一个Python库,用于线程管理和并发编程,这在处理I/O密集型任务时可以提高性能。`oslo.config`模块则用于解析命令行选项和配置文件,确保Cinder服务能正确地读取和应用配置。 创建Cinder volume的过程涉及启动Cinder API服务、配置文件的正确加载、守护进程的启动以及服务状态的监控。这个过程对于保证OpenStack环境中块存储服务的稳定性和可用性至关重要。