cinder-volume与nova-compute的volume挂载详解

需积分: 0 0 下载量 170 浏览量 更新于2024-08-04 收藏 337KB DOCX 举报
"本文主要探讨了在OpenStack环境中,如何进行Volume的挂载操作,特别是cinder-volume和nova-compute在挂载过程中的角色和步骤。" 在OpenStack云平台中,Volume是提供持久化存储的一种服务,允许用户挂载到虚拟机实例(Instance)上,以扩展或备份数据。挂载Volume的过程分为两个主要部分:cinder-volume的初始化连接和nova-compute将Volume附加到Instance。 首先,当cinder-volume收到`initialize_connection`请求时,它会负责创建Iscsi Target并导出Volume。cinder-volume组件通过使用tgt(iSCSI目标管理器)来完成这个任务。在tgt的帮助下,它将对应的逻辑卷(LV)通过Iscsi Target暴露出去。这一步骤可以通过检查`/opt/stack/logs/c-vol.log`中的日志来验证,其中显示了LV已通过Target1成功导出。 接下来, nova-compute在计算节点上执行实际的挂载操作。作为iSCSI发起者(initiator),计算节点会连接到存储节点上的Iscsi Target,将Volume附加到Instance。这个过程中,nova-compute会使用`iscsiadm`工具进行一系列操作,包括new、update、login和rescan,来确保能访问到Target上的Volume。计算节点识别到Volume后,会将它作为一个磁盘文件,通过修改Instance的XML配置文件来映射Volume。例如,Volume可能会被映射为设备名vdb。 通过使用`virsh edit`命令,我们可以查看到Instance XML配置的更新,确认Volume已被添加为一个块设备。在实例关闭并重新启动后,通过`fdisk -l`命令,可以检查到Volume(设备名vdb)已成功附加到Instance上。同时,OpenStack的GUI界面也会同步更新,展示Volume的挂载状态。 最后,当查看存储节点的Iscsi Target状态(如通过`tgt-admin --show --mode target`命令),可以看到计算节点作为initiator已连接到Target1,这证明了挂载过程的完成。在挂载操作开始前,Target1可能并没有任何initiator连接,对比前后状态可以进一步确认挂载过程的成功。 这个过程是OpenStack云环境中的典型Volume挂载流程,涉及到cinder-volume和nova-compute的协作,以及iSCSI协议在存储和计算节点之间的通信。理解这一过程对于管理和优化OpenStack存储服务至关重要。