云基础及其运维 3_第1页
云基础及其运维 3_第2页
云基础及其运维 3_第3页
云基础及其运维 3_第4页
云基础及其运维 3_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

私有云基础架构与运维项目10OpenStack云平台Cinder块存储服务随着云计算技术的快速发展,存储空间的需求也在不断增长。在这个背景下,OpenStack核心组件之一Cinder存储服务应运而生。它提供了一种可靠、高效和透明的存储服务,可以满足不断增长的数据存储需求。与传统的存储服务相比,Cinder存储服务具有许多独特的优势。它支持块存储、快照、远程复制等多种功能,具有可扩展性和灵活性,可以满足不同场景下的性能和成本需求。同时,使用Cinder存储服务也需要注意安全性、备份恢复等问题。未来,随着云计算技术的不断发展,Cinder存储服务也将继续发挥其重要作用,推动云存储技术的发展和创新。1.知识目标(1)理解块存储服务Cinder的概念及功能;(2)掌握块存储服务Cinder的组件架构;(3)熟练掌握块存储服务Cinder的基本工作流程和部署过程。2.技能目标(1)具备通过分析OpenStack云平台搭建需求,设计存储服务Cinder的能力;(2)具备安装与配置Cinder块存储服务的能力;(3)具备对Cinder块存储服务的管理和运维能力。3.素质目标(1)具有良好的科技文献信息检索和技术文档阅读的能力;(2)具有整合和综合运用知识分析问题和解决问题的能力;(3)具有较强的动手能力和解决问题的能力。学习目标学习导图目录任务10.1项目需求分析任务10.2认识Cinder块存储服务任务10.3控制节点部署Cinder服务任务10.4计算节点部署Cinder服务任务10.1项目需求分析随着物联网(IoT)、大数据和人工智能等技术的飞速发展,网络数据量呈爆炸性增长。社交媒体、物联网、视频流媒体等应用每天产生海量数据。例如,Facebook每天处理超过500TB的数据,YouTube每分钟上传500小时的视频。传统存储系统难以应对PB级甚至EB级数据。因此,需要大规模、可扩展的存储来处理海量数据。除此之外,应用场景的多样化、数据安全性提升,所有这些,使得用户对存储提出了更高的要求。传统的存储解决方案(如SAN、NAS)在扩展性、灵活性和成本方面存在局限性,无法满足日益增长的对存储系统的需求。随着云计算的普及,用户对存储的需求从传统的本地存储转向了云环境中的分布式存储。虚拟机(VM)和容器等计算资源需要独立的存储卷来支持其运行,因此,云计算环境需要一种高性能、高安全、灵活可靠、低延迟的存储服务,能够满足用户在云计算环境中对持久化存储的需求,并与OpenStack的其他服务协同工作,为用户提供完整的云平台解决方案。为了在使用Openstack云平台时满足不同用户的使用需求,OpenStack云平台提供了BlockStorageService块存储,即Cinder服务。Cinder前身是Nova中的Nova-volume服务,在Folsom版本发布时,从Nova中剥离作为一个独立的Openstack项目存在。与Nova利用主机本地存储为虚拟机提供的临时存储不同,Cinder则类似于Amazon的EBS(ElasticBlockStorage),为虚拟机提供持久化的块存储能力,实现虚拟机存储卷(Volume)的创建,挂载卸载、快照(Snapshot)等生命周期管理。Cinder服务通过提供灵活、可靠且与计算资源解耦的块存储解决方案,解决了云环境中数据持久化、动态扩展及存储资源高效管理的核心问题。其抽象化后端的设计和多租户支持,使OpenStack能够适应复杂的企业级存储需求,成为构建弹性、可扩展云基础设施的关键组件。项目需求分析任务10.2认识Cinder块存储服务10.2.1块存储服务的相关知识

Cinder块存储服务就是虚拟出一块磁盘,可以挂载到相应的虚拟机上,不受文件系统等因素的影响。对虚拟机来说,这个操作就像是新加了一块硬盘,可以完成对磁盘的任何操作,包括挂载,卸载,格式化,转换文件系统等操作,大多应用于虚拟机空间不足的情况下的空间扩容。10.2.1块存储服务的相关知识1.OpenStack中的存储形式

①临时存储(EphemeralStorage)如果只部署了Nova服务,则默认分配给虚拟机的磁盘是临时的,当虚拟机终止后,存储空间也会被释放。默认情况下,临时存储以文件形式放置在计算节点的本地磁盘上。

②持久性存储(PersistentStorage)持久化存储设备的生命周期独立于任何其他系统设备或资源,存储的数据一直可用,无论虚拟机是否运行。当虚拟机终止后,持久性存储上的数据仍然可用。目前OpenStack支持的三种类型的持久性存储:块存储、对象存储、文件系统存储。10.2.1块存储服务的相关知识2.OpenStack中的持久化存储

①块存储由Cinder提供的块存储,其操作对象是磁盘,直接挂载到主机,一般用于主机的直接存储空间和数据库应用,DAS和SAN都可以提供块存储。

②对象存储由Swift提供对象存储,其操作对象是对象(Object,一个对象名称就是一个域名地址,可以直接通过RESTAPI的方式访问对象)。

③文件系统由Manila提供文件存储(使用较少),其操作对象是文件和文件夹在存储系统上增加了文件系统,再通过NFS或CIFS协议进行访问。10.2.1块存储服务的相关知识3.存储类型对比临时存储、块存储、对象存储以及文件系统存储都有各自的特点、对应的服务及使用环境,通过表将其进行对比,可以更好的理解不同存储在云平台使用过程中的作用。10.2.2Cinder服务的基础架构在OpenStack中,块存储服务Cinder为Nova项目虚拟机实例提供了数据持久性的存储服务。此外,块存储还提供了Volumes管理的基础架构,同时还负责Volumes的快照和类型管理。从功能层面来看,Cinder以插件架构的形式为各种存储后端提供了统一API访问接口的抽象层实现,使得存储客户端可以通过统一的API访问不同的存储资源,而不用担心底层各式各样的存储驱动。Cinder提供的块存储通常以存储卷的形式挂载到虚拟机后才能使用,目前一个Volume同时只能挂载到一个虚拟机,但是不同的时刻可以挂载到不同的虚拟机,因此Cinder块存储与AWS的EBS不同,不能像EBS一样提供共享存储解决方案。除了挂载到虚拟机作为块存储使用外,用户还可以将系统镜像写入块存储并从有加载镜像的Volume启动系统。Cinder服务的基础架构中,除CinderClient外,其余均为Cinder服务的核心组件,包括CinderAPI、CinderScheduler、CinderVolume和CinderBackup。而CinderClient其实就是封装了Cinder提供REST接口的CLI工具。10.2.2Cinder服务的基础架构10.2.2Cinder服务的基础架构

CinderAPI:提供一个RESTfulAPI,允许用户和其他服务请求存储服务,接收API请求,调用CinderVolume组件。

CinderScheduler:负责收集Backend上报的容量、能力信息,根据设定的算法完成卷到指定CinderVolume的调度。通过调度算法选择最合适的存储节点创建volume。其核心部分就是Scheduler_Driver,作为SchedulerManager的driver,负责CinderVolume具体的调度处理,发送CinderRPC请求到选择的CinderVolume。在用户的请求没有指定具体的存储节点时,会使用CinderScheduler选择一个合适的节点,如果用户请求已经指定了具体的存储节点,则该节点上的CinderVolume会进行处理,并不需要CinderScheduler的参与。

CinderVolume:负责具体的volume请求处理,其数据可以被虚拟机访问。可以做多节点部署,使用不同的配置文件、接入不同的Backend设备,由各存储厂商插入driver代码与设备交互完成设备容量和能力信息收集、卷操作。每个存储节点都会运行一个CinderVolume服务,若干个这样的存储节点联合起来可以构成一个存储资源池。Cinder默认的后端驱动为LVM。

CinderBackup(卷备份模板):实现卷的数据备份到其他介质,可以与不同类型的持久性存储集成,例如LVM、NFS、Ceph等。10.2.3Cinder服务的工作流程

Cinder组件的主要功能就是对卷进行创建与管理,其各个组件分工合作,组件之间的通信通过消息队列传递。10.2.3Cinder服务的工作流程

CinderAPI接收到用户通过管理界面或命令行发起的卷创建请求后,完成必要处理后将其发送到消息队列中。

CinderScheduler从消息队列中获得请求和数据后,从若干存储节点选出一个能存放改卷的节点,并将消息发送到消息队列。

CinderVolume从消息队列中获取请求后,通过VolumeProvider调用具体的卷管理系统在存储设备上创建卷。CinderAPI在接受到创建卷的需求之前,会先收到创建卷类型的API请求,目的是为了筛选不同的后端存储,通过创建不同的自定义卷类型,创建卷时会自动筛选出合适的后端存储,API收到创建卷的请求后,会发送给CinderScheduler分配创建卷的任务,CinderScheduler根据CinderVolume上报的后端存储信息状态运行调度算法过滤并选择最优的HOST,然后会将操作请求发送给对应的CinderVolume,然后由CinderVolume请求阵列后端创建指定的卷具体提供存储的还是后端的存储设备。CinderVolume会定期收集后端存储阵列容量等信息,并会通知CinderScheduler来更新内存中的Backend信息。10.2.4逻辑卷管理LVM1.LVM简介

LVM是LogicalVolumeManager(逻辑卷管理)的简写,它由HeinzMauelshagen在Linux2.4内核上实现。LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。一般来说,物理磁盘或分区之间是分隔的,数据无法跨盘或分区,而各磁盘或分区的大小固定,重新调整比较麻烦。LVM可以将这些底层的物理磁盘或分区整合起来,抽象成容量资源池,以划分成逻辑卷的方式供上层使用,其最主要的功能即是可以在无需关机无需重新格式化的情况下弹性调整逻辑卷的大小。10.2.4逻辑卷管理LVM2.LVM基本术语

物理存储介质(Thephysicalmedia):这里指系统的存储设备:硬盘,如:/dev/hda1、/dev/sda等等,是存储系统最低层的存储单元。物理卷(PhysicalVolume,PV):物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。卷组(VolumeGroup,VG):是由物理卷合起来就组成了卷组。可以是一整块磁盘、可以是同一块硬盘的不同分区,也可以是不同硬盘上的不同分区,相当于把卷组想象成一块逻辑硬盘。

逻辑卷(LogicalVolume,LV):卷组是一块逻辑硬盘,硬盘必须分区之后才能使用,这个分区称作逻辑卷。逻辑卷可以被格式化和写入数据,可以把逻辑卷想象为分区。物理扩展(PhysicalExtend,PE):PE是用来保存数据的最小单元,数据实际上都是写入PE当中的。PE的大小是可以配置的,默认是4MB。10.2.4逻辑卷管理LVM3.LVM创建过程将物理磁盘被格式化为PV,PV是由PE组成的;由PV可以组成VG,多个PV中的PE都在VG中,生成一个PE池;一个LV可由多个PE组成,其中的PE课来自不同的物理硬盘;

LV通过格式化并挂载后即可直接使用。要对LV进行扩容时,只需从VG中增加该LV的PE数量,再这个过程中并不影响原始数据。对比于传统的磁盘管理系统,LVM在文件系统与硬盘中加了一层抽象层,从而使硬盘的管理更加灵活。任务10.3控制节点部署Cinder服务10.3.1创建数据库并授权在部署Cinder块存储服务之前,需要先创建数据库,用于存储Cinder块存储的元数据。本项目在MySQL数据库管理系统中创建一个名为“cinder”的数据库来存储块存储元数据。10.3.1创建数据库并授权1.创建Cinder数据库以root用户身份进入MariaDB数据库。命令如下所示。[root@controller~]#mysql-uroot-p0000002.创建Cinder数据库使用CREATE命令创建名为“cinder”的数据库。命令如下所示。MariaDB[(none)]>CREATEDATABASEcinder;3.给用户授权使用Cinder数据库将所有权限授予“cinder”用户,该用户可以从本地主机(localhost表示)和任何主机(%表示)连接,并使用密码“000000”进行身份验证。命令如下所示。MariaDB[(none)]>GRANTALLPRIVILEGESONcinder.*TO'cinder'@'localhost'IDENTIFIEDBY'000000';MariaDB[(none)]>GRANTALLPRIVILEGESONcinder.*TO'cinder'@'%'IDENTIFIEDBY'000000';说明:此时还可以查看Cinder数据库的情况、权限的授予情况,操作过程同Keystone服务,请参考项目5中5.3.1任务中4、5的操作。10.3.2部署Cinder服务1.安装Cinder软件包使用yum命令安装Cinder服务所需要的软件包“openstack-cinder”。命令如下所示。[root@controller~]#yuminstall-yopenstack-cinder在安装“openstack-cinder”软件包时,会自动在CentOSLinux中生成一个名为“cinder”的用户和同名用户组。可以通过命令查看Linux操作系统的用户和用户组信息。2.查看用户和用户组信息在/etc/passwd文件中查找含有“cinder”字符串的行,显示的内容是cinder用户的相关信息,包括用户名cinder,用户ID为168,所在组的ID为168等。[root@controller~]#cat/etc/passwd|grepcindercinder:x:168:168:OpenStackCinderDaemons:/var/lib/cinder:/sbin/nologin在/etc/group文件中查找含有“cinder”字符串的行,显示的内容是cinder用户组的信息。[root@controller~]#cat/etc/group|grepCindercinder:x:168:10.3.2部署Cinder服务3.修改Cinder配置文件(1)精简配置文件因/etc/cinder/cinder.conf配置文件中有几百行的内容,为了后续操作的便利,所以提前将文件中的注释和空行去掉。先对文件做备份操作,生成的新文件名为cinder.bak,依然保存在/etc/cinder目录中。命令如下所示。[root@controller~]#cp/etc/cinder/cinder.conf/etc/cinder/cinder.bak通过使用grep命令对备份文件cinder.bak采用反向查找空行(^$)和注释行(以“#“开头)的方式,实际是去掉了文件中的空行和注释行,将文件中生效的部分保留。通过“>”输出重定向符将内容输出到/etc/cinder/cinder.conf文件中,变成了精简版的配置文件。[root@controller~]#grep-Ev'^$|#'/etc/cinder/cinder.bak>/etc/cinder/cinder.conf10.3.2部署Cinder服务3.修改Cinder配置文件(2)编辑配置文件cinder.conf第1步,使用vi编辑器打开配置文件/etc/cinder/cinder.conf进行编辑。[root@controller~]#vi/etc/cinder/cinder.conf第2步,将[database]段落中“connection”属性添加“mysql+pymysql(数据库类型)://cinder(登录数据库用户名):000000(用户密码)@controller(数据库主机名)/cinder(数据库)”内容,实现与数据库连接。connection=mysql+pymysql://cinder:000000@controller/cinder10.3.2部署Cinder服务3.修改Cinder配置文件第3步,修改[DEFAULT]和[keystone_authtoken]段落下各属性的值,实现与Keystone交互。[DEFAULT]auth_strategy=keystone[keystone_authtoken]www_authenticate_uri=http://controller:5000auth_url=http://controller:5000memcached_servers=controller:11211auth_type=passwordusername=cinderpassword=000000project_name=serviceuser_domain_name=Defaultproject_domain_name=Default[paste_deploy]flavor=keystone#指定提供认证的服务器为keystone10.3.2部署Cinder服务3.修改Cinder配置文件以下是Keystone认证信息中每条语句的作用。

www_authenticate_uri输入Keystone服务的URI,即位置信息。对于外部用户Keystone服务定义了一个端口号为5000的auth_url,这里输入的是auth_url。

memcached_servers输入Memcached服务所在主机地址以及端口号。

auth_type输入Keystone认证所使用的类型,通常使用password类型。

username输入Cinder服务在Keystone中注册时的用户名。

password输入Cinder服务在Keystone中注册时所使用的密码,这里为000000,在实际OpenStack生产环境的部署过程中该密码值必须与后续添加Cinder用户时所使用的密码一致。

project_domain_name输入项目所在的域名。

user_domain_name输入用户所在的域名。

project_name输入Cinder服务所属的项目名,OpenStack所有的组件均使用service项目。10.3.2部署Cinder服务3.修改Cinder配置文件第4步,修改[oslo_concurrency] 段落下“lock_path”属性,设置其值为“/var/lib/cinder/tmp”,配置锁路径。[oslo_concurrency] #指定锁路径lock_path=/var/lib/nova/tmp这里的“/var/lib/cinder/tmp”是在安装软件包时由cinder用户创建的,因此cinder对它拥有所有权限,不要随意更改该路径。第5步,修改“[DEFAULT]”部分,实现与消息队列的连接。[DEFAULT]

auth_strategy=keystone

transport_url=rabbit://rabbitmq:000000@controller:5672my_ip=010.3.2部署Cinder服务3.修改Cinder配置文件(3)配置文件修改完成后文件内容分别如下所示:[root@controller~]#cat/etc/Cinder/Cinder-api.conf[DEFAULT]auth_strategy=keystone

transport_url=rabbit://rabbitmq:000000@controller:5672my_ip=0[backend][backend_defaults][barbican][brcd_fabric_example][cisco_fabric_example][coordination][cors][database]connection=mysql+pymysql://cinder:000000@controller/cinder[fc-zone-manager][healthcheck][key_manager][keystone_authtoken]www_authenticate_uri=http://controller:5000auth_url=http://controller:5000memcached_servers=controller:11211auth_type=password10.3.2部署Cinder服务3.修改Cinder配置文件project_domain_name=Defaultuser_domain_name=Defaultproject_name=serviceusername=cinderpassword=000000[nova][oslo_concurrency]lock_path=/var/lib/cinder/tmp[oslo_messaging_amqp][oslo_messaging_kafka][oslo_messaging_notifications][oslo_messaging_rabbit][oslo_middleware][oslo_policy][oslo_reports][oslo_versionedobjects][privsep][profiler][sample_castellan_source][sample_remote_file_source][service_user][ssl][vault]10.3.2部署Cinder服务4.修改Nova配置文件为了实现Cinder与Nova服务的交互,需要修改Nova的配置文件/etc/nova/nova.conf中[cinder]段落下“os_region_name”属性值设置为“RegionOne”。[root@controller~]#vi/etc/nova/nova.conf[cinder]os_region_name=RegionOne10.3.2部署Cinder服务5.初始化Cinder数据库

Cinder安装文件提供了数据库的基础表数据,此时还没有将数据导入“cinder”数据库中,需要手动将数据同步导入数据库中。命令如下所示。[root@controller~]#sucinder-s/bin/sh-c"cinder-managedbsync"“sucinder”:su命令用于用户切换。这里切换到“cinder”用户,该用户已经拥有对“cinder”数据库的管理权限。“-s/bin/sh”:-s为su命令的选项,指定用什么编译器(Shell)来执行命令,“/bin/sh”就是指定的编译器。“-c”:su命令的选项,在其后引号内的是具体执行的命令。

"cinder-managedbsync":实现了数据同步到数据库。当看到“Databaseissyncedsuccessfully.”显示内容,说明同步数据库操作成功。可以查看cinder数据库中表的同步情况,命令及结果如下所示。10.3.2部署Cinder服务5.初始化Cinder数据库[root@controller~]#mysql-uroot-p000000-e“useCinder;showtables;”+----------------------------+|Tables_in_cinder|+----------------------------+|attachment_specs||backup_metadata||backups||cgsnapshots||clusters||consistencygroups||driver_initiator_data||encryption||group_snapshots||group_type_projects||group_type_specs||group_types||group_volume_type_mapping||groups||image_volume_cache_entries||messages||migrate_version||quality_of_service_specs||quota_classes||quota_usages||quotas||reservations||services||snapshot_metadata||snapshots||transfers||volume_admin_metadata||volume_attachment||volume_glance_metadata||volume_metadata||volume_type_extra_specs||volume_type_projects||volume_types||volumes||workers|+----------------------------+35rowsinset(0.000sec)如果上述命令执行之后,没有任何输出信息,说明数据库同步没成功,需要检查前面的操作过程。10.3.3初始化Cinder组件部署完Cinder服务以后,需要给Cinder初始化用户、密码并分配用户角色、初始化服务和服务端点等,使Cinder组件可以启用。在OpenStack中,几乎所有的服务(包括Keystone服务)想要正常运行,需要向Keystone服务注册。每一个服务需要向Keystone服务注册用户信息、服务和端点信息。10.3.3初始化Cinder组件1.创建Cinder用户并分配角色(1)导入环境变量模拟登录。每一次重启或者重新开机之后,都需要执行一次admin-openrc.sh文件,将环境变量导入才不会影响后面的操作。命令如下所示。[root@controller~]#sourceadmin-openrc.sh(2)在OpenStack云计算平台中创建用户“cinder”,设置密码为“000000”。命令如下所示。[root@controller~]#openstackusercreate--domaindefault--password000000cinder+---------------------+----------------------------------+|Field|Value|+---------------------+----------------------------------+|domain_id|default||enabled|True||id|b7b85ad3cefe43419720bd2ee172db91||name|cinder||options|{}||password_expires_at|None|+---------------------+----------------------------------+10.3.3初始化Cinder组件1.创建Cinder用户并分配角色(3)给用户“cinder”在“service“项目中分配“admin”的角色,命令如下所示。[root@controller~]#openstackroleadd--projectservice--usercinderadmin注意:此命令执行之后没有任何输出信息。(4)用户、角色、项目都已经建好了,可以通过下面的命令查看Cinder的关联信息。[root@controller~]#openstackuserlist#用户信息[root@controller~]#openstackrolelist#角色信息[root@controller~]#openstackprojectlist#服务信息[root@controller~]#openstackroleassignmentlist#关联信息10.3.3初始化Cinder组件2.创建Cinder服务及服务端点创建服务和端点信息是为了确保用户能够顺利访问Cinder服务,并执行一系列与Cinder服务有关的操作。需要注意,Cinder与其他服务不同,Cinder的服务和端点是两个版本并存的,所以在进行Cinder服务和端点信息的注册操作时需要将两个版本的相关信息分别注册。10.3.3初始化Cinder组件2.创建Cinder服务及服务端点(1)创建服务创建名为“cinderv2”的服务。命令如下所示。[root@controller~]#openstackservicecreate--namecinderv2--description"OpenStackBlockStorage"volumev2+-------------+----------------------------------+|Field|Value|+-------------+----------------------------------+|description|OpenStackBlockStorage||enabled|True||id|fcd0477a64ed4182b5b4179836f45b22||name|cinderv2||type|volumev2|+-------------+----------------------------------+10.3.3初始化Cinder组件2.创建Cinder服务及服务端点创建名为“cinderv3”的服务。命令如下所示。[root@controller~]#openstackservicecreate--namecinderv3--description"OpenStackBlockStorage"volumev3+-------------+----------------------------------+|Field|Value|+-------------+----------------------------------+|description|OpenStackBlockStorage||enabled|True||id|33f21a8b0c50478aa82966b5f949a80e||name|cinderv3||type|volumev3|+-------------+----------------------------------+10.3.3初始化Cinder组件2.创建Cinder服务及服务端点(2)创建块存储服务端点为Cinder服务创建public、internal和admin三种类型的API端点,以便其他OpenStack组件和用户可以访问Cinder服务。Cinder服务的端口号是8776。10.3.3初始化Cinder组件2.创建Cinder服务及服务端点[root@controller~]#openstackendpointcreate--regionRegionOnevolumev2publichttp://controller:8776/v2/%\(project_id\)s+--------------+------------------------------------------+|Field|Value|+--------------+------------------------------------------+|enabled|True||id|d46319976314425f90b92b2b823db67b||interface|public||region|RegionOne||region_id|RegionOne||service_id|fcd0477a64ed4182b5b4179836f45b22||service_name|cinderv2||service_type|volumev2||url|http://controller:8776/v2/%(project_id)s|+--------------+------------------------------------------+[root@controller~]#openstackendpointcreate--regionRegionOnevolumev3publichttp://controller:8776/v3/%\(project_id\)s+--------------+------------------------------------------+|Field|Value|+--------------+------------------------------------------+|enabled|True||id|3b464dcaeb954aaf931e60d1b0786804||interface|public||region|RegionOne||region_id|RegionOne||service_id|33f21a8b0c50478aa82966b5f949a80e||service_name|cinderv3||service_type|volumev3||url|http://controller:8776/v3/%(project_id)s|+--------------+------------------------------------------+第1步,创建外部访问的服务端点,两个版本都需要创建。命令如下所示。10.3.3初始化Cinder组件2.创建Cinder服务及服务端点[root@controller~]#openstackendpointcreate--regionRegionOnevolumev2internalhttp://controller:8776/v2/%\(project_id\)s+--------------+------------------------------------------+|Field|Value|+--------------+------------------------------------------+|enabled|True||id|9c547d8edc6b4aedaead949b46ae46f4||interface|internal||region|RegionOne||region_id|RegionOne||service_id|fcd0477a64ed4182b5b4179836f45b22||service_name|cinderv2||service_type|volumev2||url|http://controller:8776/v2/%(project_id)s|+--------------+------------------------------------------+[root@controller~]#openstackendpointcreate--regionRegionOnevolumev3internalhttp://controller:8776/v3/%\(project_id\)s+--------------+------------------------------------------+|Field|Value|+--------------+------------------------------------------+|enabled|True||id|bdafc9f3ceff4a29ac01deef6315e565||interface|internal||region|RegionOne||region_id|RegionOne||service_id|33f21a8b0c50478aa82966b5f949a80e||service_name|cinderv3||service_type|volumev3||url|http://controller:8776/v3/%(project_id)s|+--------------+------------------------------------------+第2步,创建内部访问的服务端点,两个版本都需要创建。命令如下所示。10.3.3初始化Cinder组件2.创建Cinder服务及服务端点[root@controller~]#openstackendpointcreate--regionRegionOnevolumev2adminhttp://controller:8776/v2/%\(project_id\)s+--------------+------------------------------------------+|Field|Value|+--------------+------------------------------------------+|enabled|True||id|64eab2d212994adcb5b98fa358691550||interface|admin||region|RegionOne||region_id|RegionOne||service_id|fcd0477a64ed4182b5b4179836f45b22||service_name|cinderv2||service_type|volumev2||url|http://controller:8776/v2/%(project_id)s|+--------------+------------------------------------------+[root@controller~]#openstackendpointcreate--regionRegionOnevolumev3adminhttp://controller:8776/v3/%\(project_id\)s+--------------+------------------------------------------+|Field|Value|+--------------+------------------------------------------+|enabled|True||id|9b50b880eca44f28abd405e885fdd412||interface|admin||region|RegionOne||region_id|RegionOne||service_id|33f21a8b0c50478aa82966b5f949a80e||service_name|cinderv3||service_type|volumev3||url|http://controller:8776/v3/%(project_id)s|+--------------+------------------------------------------+第3步,创建管理员的访问端点,两个版本都需要创建。命令如下所示。10.3.3初始化Cinder组件3.启动Cinder服务首先,设置系统开机时openstack-cinder-api和openstack-cinder-scheduler服务自动启动。命令如下所示。[root@controller~]#systemctlenableopenstack-cinder-api.serviceopenstack-cinder-scheduler.service然后,为使前面设置内容生效,需要将nova-api重启,需要启动openstack-cinder-api和openstack-cinder-scheduler两个服务。命令如下所示。[root@controller~]#systemctlrestartopenstack-nova-api.service[root@controller~]#systemctlstartopenstack-cinder-api.serviceopenstack-cinder-scheduler.service10.3.4验证Cinder组件1.查看端口占用情况由于Cinder服务要占用8776端口,查看8776端口的状态就可以判断服务是否运行。[root@controller~]#netstat-tnlup|grep8776tcp00:8776:*LISTEN43710/python2可见8776端口正处于“LISTEN”监听状态,因此服务为正常开启。2.查看存储服务列表可以通过“openstackvolumeservicelist“命令查看存储服务的列表情况。[root@controller~]#openstackvolumeservicelist+------------------+-------------+------+---------+-------+-------------+|Binary|Host|Zone|Status|State|UpdatedAt|+------------------+-------------+------+---------+-------+-------------+|cinder-scheduler|controller|nova|enabled|up|2025-02-19T09:31:30.000000|+------------------+-------------+------+---------+-------+-------------+任务10.4计算节点部署Cinder服务10.4.1在计算节点搭建存储服务以下为块存储服务在计算节点的安装和配置。该服务使用LVM驱动程序提供此设备上的逻辑卷,并通过iSCSI传输将其提供给实例。10.4.1在计算节点搭建存储服务在计算节点未开机的情况进入虚拟机设置对话框,然后选择计算节点的设置。1.计算节点增加一块硬盘10.4.1在计算节点搭建存储服务添加一块硬盘。1.计算节点增加一块硬盘10.4.1在计算节点搭建存储服务选择虚拟磁盘类型为“SCSI”。1.计算节点增加一块硬盘10.4.1在计算节点搭建存储服务选择“创建新虚拟磁盘”。1.计算节点增加一块硬盘10.4.1在计算节点搭建存储服务设置添加的硬盘大小为20GB。1.计算节点增加一块硬盘10.4.1在计算节点搭建存储服务生成磁盘文件“compute.vmdk”。1.计算节点增加一块硬盘10.4.1在计算节点搭建存储服务1.计算节点增加一块硬盘添加硬盘之后再使用“lsblk”命令查看系统中的硬盘信息,发现系统中多了一块20G,名为sdb的硬盘。[root@compute~]#lsblkNAMEMAJ:MINRMSIZEROTYPEMOUNTPOINTnvme0n18:0060G0disk├─nvme0n1p18:101G0part/boot└─nvme0n1p28:2058G0part├─cl-root253:0050G0lvm/└─cl-swap253:108G0lvm[SWAP]nvme0n28:16020G0disk10.4.1在计算节点搭建存储服务2.创建卷组通过“pvcreate”命令将物理硬盘初始化为物理卷,以便LVM使用。因为物理卷直接建立在物理硬盘或者硬盘分区上,所以物理卷的设备文件使用系统中现有的硬盘设备文件的名称。[root@compute~]#pvcreate/dev/nvme0n2Physicalvolume"/dev/nvme0n2"successfullycreated.在建立好的物理卷后,使用vgcreate命令建立卷组。卷组设备文件使用/dev目录下与卷组同名的目录表示,该卷组中的所有逻辑设备文件都将建立在该目录下,卷组目录实在使用vgcreate命令建立卷组时建立的。卷组中可以包含多个物理卷,也可以只有一个物理卷。木项目中建立的卷组名为cinder-volumes。[root@compute~]#vgcreatecinder-volumes/dev/nvme0n2Volumegroup"cinder-volumes"successfullycreated10.4.1在计算节点搭建存储服务3.修改配置文件配置LVM卷组扫描的设备,在配置文件/etc/lvm/lvm.conf中“devices”部分,添加一个接受/dev/sdb磁盘并拒绝其他设备的过滤器。设置filter的属性值为["a/sdb/","r/.*/"],代码中“a”表示接受,“r”表示拒绝。命令如下所示。[root@compute~]#vi/etc/lvm/lvm.confdevices{filter=["a/sdb/","r/.*/"]10.4.1在计算节点搭建存储服务4.启动LVM元数据服务

LVM在做磁盘扫描时将查找所有相关物理卷,并读取卷组元数据,这个过程非常耗时,如果将卷组元数据一次性读入缓存,则不用每次都做这个耗时的扫描。Lvmetad就是LVM中用于处理元数据缓存的服务。命令如下所示。[root@compute~]#systemctlstartlvm2-lvmetad[root@compute~]#systemctlenablelvm2-lvmetad10.4.2在计算节点部署Cinder服务1.安装Cinder相关软件包[root@compute~]#yum-yinstalllvm2device-mapper-persistent-dataopenstack-cindertargetclipython3-keystone

targetcli主要用于配置iSCSI目标,使得Cinder能够通过iSCSI协议提供块存储服务。python3-keystone库提供了与Keystone服务进行交互的API和工具,使得Cinder能够验证用户的身份并授权其对存储资源的访问。2.查看用户组和用户信息使用cat命令分别查看存放用户信息的文件/etc/passwd和存放组信息的文件/etc/group,通过“|”与grep命令组合查找含有“cinder”关键字的信息。命令如下所示。[root@compute~]#cat/etc/passwd|grepcindercinder:x:165:165:OpenStackCinderDaemons:/var/lib/cinder:/sbin/nologin[root@compute~]#cat/etc/group|grepcindernobody:x:99:nova,cindercinder:x:165:cinder10.4.2在计算节点部署Cinder服务3.修改配置文件为配置文件/etc/cinder/cinder.conf做备份,通过将备份文件/etc/cinder/cinder.bak中的注释和空行去掉后的内容存到配置文件中,生成新的配置文件。命令如下所示。[root@compute~]#cp/etc/cinder/cinder.conf/etc/cinder/cinder.bak[root@compute~]#grep-Ev'^$|#'/etc/cinder/cinder.bak>/etc/cinder/cinder.conf打开配置文件/etc/cinder/cinder.conf,修改[database]部分,实现与数据库“cinder”的连接;修改[DEFAULT][keystone_authtoken]部分,实现与keystone的交互;修改[oslo_concurrency]部分,配置锁路径;修改[DEFAULT],实现与消息队列和Glance的连接;修改[DEFALUT],并增加[lvm]部分以设置LVM。内容如下所示。10.4.2在计算节点部署Cinder服务3.修改配置文件[root@compute~]#vi/etc/cinder/cinder.conf#修改[database]部分,实现与数据库“cinder”的连接[database]connection=mysql+pymysql://cinder:000000@controller/cinder#修改[DEFAULT][keystone_authtoken]部分,实现与keystone的交互[DEFAULT]auth_strategy=keystone[keystone_authtoken]www_authenticate

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论