云计算-OpenStack 实战运维:从组件配置到故障排查(含 RAID、模板、存储管理,网络、存储、镜像、容器等)
介绍
在云计算技术快速发展的背景下,OpenStack 作为开源的云计算管理平台,凭借其灵活性、可扩展性和强大的组件生态,成为构建私有云、公有云和混合云的重要选择。无论是云主机的创建与管理、存储方案的配置(如 RAID 阵列、Swift 对象存储、Cinder 块存储),还是网络编排、权限控制、性能调优等,都是 OpenStack 运维与实践中的核心环节。
本文基于实际操作场景,汇总了 OpenStack 私有云平台的一系列关键实战操作,涵盖了从基础组件配置(如 Heat 模板编写、云主机与网络创建)到进阶功能实现(存储后端切换、参数调优),再到故障排查与日常管理(如快照处理、容器部署、权限控制)等多个维度。内容包含详细的命令步骤、配置示例及验证方法,旨在为 OpenStack 初学者提供入门指引,同时也为有经验的运维人员提供一份实用的操作参考手册,助力快速解决实际场景中的技术问题。
1.Raid磁盘阵列管理
在OpenStack私有云平台,创建一台云主机(镜像使用CentOS7.5,flavor可自定义),并创建一个40G大小的cinder块存储,将块存储连接到云主机,然后在云主机上对云硬盘进行操作。要求分出4个大小为5G的分区,使用这4个分区,创建名为/dev/md5、raid级别为5的磁盘阵列加一个热备盘(/dev/vdb4为热备盘)。
[root@controller ~]# openstack volume create --size 40 1 #1是卷名字 [root@controller ~]# openstack server add volume test 1 #tet云主机名字 [root@test ~]# mdadm -Cv /dev/md5 -l 5 -n 3 /dev/vdb1 /dev/vdb2 /dev/vdb3 -x 1 /dev/vdb4 [root@test ~]# mdadm -D /dev/md5 #mdadm -D:功能 (显示RAID组详细信息) mdadm -S /dev/md5 #停止阵列 /dev/md5: Version : 1.2 Creation Time : Mon Aug 16 12:21:50 2025 Raid Level : raid5 Array Size : 10475520 (9.99 GiB 10.73 GB) Used Dev Size : 5237760 (5.00 GiB 5.36 GB) Raid Devices : 3 Total Devices : 4 Persistence : Superblock is persistent Update Time : Mon Aug 16 12:21:58 2021 State : clean, degraded, recovering Active Devices : 2 Working Devices : 4 Failed Devices : 0 Spare Devices : 2 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Rebuild Status : 8% complete Name : test.novalocal:5 (local to host test.novalocal) UUID : 3238632c:7ab29c46:abb35387:c00bbaf5 Events : 2 Number Major Minor RaidDevice State 0 253 17 0 active sync /dev/vdb1 1 253 18 1 active sync /dev/vdb2 4 253 19 2 spare rebuilding /dev/vdb3 3 253 20 - spare /dev/vdb4
2.Raid使用场景
RAID5是一种存储性能、数据安全和存储成本兼顾的解决方案,RAID5需要3块或者以上的物理磁盘,可以提供热备盘显现故障的恢复;采用奇偶校验,可靠性强,且只有损坏两块硬盘时数据才会完全损坏,只损坏一块盘时,系统会根据存储的奇偶校验位重建数据,临时提供服务,此时如果有热备盘,系统还会自动在热备盘重建故障磁盘上的数据
RAID5使用的场景:
RAID5可以理解为RAID0和RAID5的折中方案。适合对性能和冗余都有一定的要求,又不是十分高的情况,比如MySQL的主从库、存储等。普通服务器为了减少维护成本,又保持一定冗余和读性能都可以做RAID5.
-C ##建立
-a ##文件不存在建立文件
-l ##raid级别
-n ##设备个数
-x ##闲置设备个数
LVM管理:
lvm 逻辑卷,可以让设备自由伸缩的一个设备管理软件
pv 物理卷
vg 物理卷组
pe 物理拓展,lvm最小的存储单元***********************************************************************************
创建volume卷时报错error解决:
运行一些增加卷的命令到实例中去,会报错,说volume的状态是error,不能操作。我们首先进入mysql数据库,选择cinder数据库,更改表volume。操作如下:
MariaDB [(none)]> use cinder;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [cinder]> show tables;
| volume_types |
| volumes |
| workers |
+----------------------------+
35 rows in set (0.00 sec)
更新volumes表MariaDB [cinder]> UPDATE volumes SET status= 'available' WHERE status = 'error';
Query OK, 3 rows affected (0.01 sec)
Rows matched: 3 Changed: 3 Warnings: 0 查看卷的状态,变成available了。
4.heat模板管理
heat_template_version : 必须,指定模板语法的版本,除了可以指定日期的格式,还可以直接指定 openstack 的版本, 如 rocky description : 可选,描述信息 parameter_groups : 可选,指明输入参数该如何分组以及参数传入的顺序 parameters : 可选, 定义输入参数 resources : 必须,定义模板资源 outputs : 可选,定义输出参数 conditions : 可选,用来控制一个资源什么情况下可以被创建
模板解释:
-
heat_template_version 在网页路径“项目-编排-模板版本”中选一个日期作为值
-
resources-type 在网页路径“项目-编排-资源类型”中选择和题意相符的类型
-
resources-具体参数 在在网页路径“项目-编排-资源类型”中点进具体的type中的下面一块属性中有参数以及类型
-
outputs-value 在在网页路径“项目-编排-资源类型”中点进具体的type中的上面一块属性中有参数以及类型,为选填类型
4.1.heat创建用户
在自行搭建的 OpenStack 私有云平台或赛项提供的 all-in-one 平台上,在/root 目录下编写 Heat 模板 create_user.yaml,创建名为 heat-user 的用户,属于 admin 项目,并赋予 heat-user用户 admin 的权限,配置用户密码为 123456。
[root@controller ~]#iaas-install-heat.sh [root@controller ~]# cat create_user.yaml heat_template_version: 2014-10-16 resources: user: type: OS::Keystone::User properties: name: heat-user password: "123456" domain: demo default_project: admin roles: [{"role": admin, "project": admin}] [root@controller ~]#openstack stack create -t user_create.yaml heat_user1
4.2.heat创建flavor类型
在openstack私有云平台上,在/root目录下编写模板server.yaml,创建名为“m1.flavor”、 ID 为 1234、内存为1024MB、硬盘为20GB、vcpu数量为 1的云主机类型。
[root@controller ~]# cat server.yaml heat_template_version: 2014-10-16 #heat_template_version resources: #资源: nova_flavor: type: OS::Nova::Flavor # properties: #属性:##类型 name: m1.flavor disk: 20 is_public: True #设置共享,默认的 ram: 1024 vcpus: 1 flavorid: 1234 [root@controller ~]# openstack stack create -t server.yaml test [root@controller ~]# openstack flavor list +------+-----------+------+------+-----------+-------+-----------+ | ID | Name | RAM | Disk | Ephemeral | VCPUs | Is Public | +------+-----------+------+------+-----------+-------+-----------