Advertisement

OpenStack 云平台管理

阅读量:

目录

一、案例分析

1.1、案例概述

1.2、案例前置知识点

1)关于浮动 IP 地址

2)关于快照

1.3、案例环境

1)本案例实验环境

2)案例需求

3)案例实现思路

二、案例实施

2.1、部署 OpenStack

2.2、创建网络和路由

1)删除默认的网络

2)创建网络和路由

2.3、创建实例

2.4、绑定浮动 IP

2.5、添加安全组规则

2.6、创建密钥对

2.7、创建及使用卷挂载

2.8、快照管理

1)基于实例的快照

2)基于卷的快照

2.9、创建镜像


一、案例分析

1.1、案例概述

OpenStack 中多数管理功能均可通过 Dashboard 来完成。掌握 Dashboard 操作对运维工程师来说至关重要。Dashboard 提供了一个直观的操作界面来简化管理任务,并降低了操作失误的风险。本章将介绍如何在云主机创建过程中熟悉 Dashboard 的基本操作流程,并详细讲解网络配置相关知识以及安全策略配置等内容。

1.2、案例前置知识点

1)关于浮动 IP 地址

浮动 IP 地址是 OpenStack 推出的一个关键性概念,在 NAT 转换机制中扮演着类似的角色。它类似于内部全局地址,在这种架构下能够被外部系统使用。OpenStack 中的云主机网络通常受到 NAT 保护,在这种设置下内部网络通过虚拟路由器(提供 NAT 功能)连接到外部网络。当希望外部网络访问云主机网络时,则需要利用浮动 IP 地址来实现这一目标。其核心原理是通过目的地址转换或 NAT 映射实现通信渠道的建立。浮动 IP 地址是一种供外部系统使用的 IPv4 地址列表,默认情况下对应于特定的 IPv6 地址段,在 OpenStack 环境中通常位于公网范围内的 IP 地址块中。需要注意的是,在配置云主机服务时不能直接分配这些地址给宿主服务器使用。然而可以通过绑定云主机的方式实现外网与内网之间的通信连接,例如通过 SSH 协议远程管理云主机服务进程。当某个云服务器不再需要通过外网进行操作时,则由系统管理员可随时将对应的浮动 IP 地址释放并重新分配给其他服务器角色。这种机制不仅提升了云服务的安全性而且还为用户提供了一个灵活多变的工作环境。

2)关于快照

在 OpenStack 平台中,快照功能与其所使用的 VMware 或 KVM 类似之处在于均以创建镜像的方式保存数据到 Glance 中。然而其显著区别在于其生成机制有所不同:通过将云主机镜像进行转换并复制操作生成全新的镜像。该镜像与云主机完全脱节,并非基于原有资源构建;相反可以通过该镜像创建独立的新云主机实现主机迁移与备份功能。值得注意的是,在 OpenStack 系统中,并非所有的实例或卷都可以进行快照操作:实例可以执行快照功能以实现状态备份;而卷类设备同样支持快照操作以完成存储数据的保护工作。

1.3、案例环境

1)本案例实验环境

用于实验测试的设备必须确保防火墙和SELinux功能已关闭,并且能够正常接入互联网。详细硬件配置如下表所示。

IP 地址 系统版本 CPU 内存 磁盘 OpenStack 版本
192.168.23.211 CentOS7.6(64位) 4核 8GB 100GB Train 版本

2)案例需求

本章案例的需求如下

  1. 生成一个完整的云计算实例。
  2. 允许该 cloud instance 与 external network 建立通信连接。
  3. 通过 SSH 方式无需密码登录即可接入该 cloud instance。
  4. 配置该 cloud instance 的新增存储设备。
  5. 创建并保存该 cloud instance 的工作状态备份。
  6. 生成 CentOS 操作系统的镜像文件。

3)案例实现思路

本章案例的实现思路如下

为 OpenStack 提供一键式部署环境的好方法;
配置网络架构及路由规则;
生成计算实例;
绑定动态IP地址;
添加安全组规则;
创建密钥对;
设置存储 volumes 的挂载与管理流程;
管理 snapshots 的相关操作流程;
生成镜像文件。


二、案例实施

2.1、部署 OpenStack

部署环境的过程请参见上文中的"OpenStack 入门体验"一节内容。无需进一步详细说明。完成之后,请使用管理员账号登录 OpenStack 的Web控制台。

2.2、创建网络和路由

采用 packstack 技术部署 OpenStack 环境后,默认已设置好网络架构、路由规则、实例规格以及存储镜像等功能,并可直接接入使用以提升用户体验。本章旨在指导读者深入理解 OpenStack 各组件的工作原理及实现细节。因此,在开始学习之前,请先移除默认建立的网络配置,并重新按照需求设计新的网络拓扑结构

1)删除默认的网络

在完成OpenStack安装后,默认系统将创建两个虚拟网,分别为外部网public地址范围172.24.4.0/24和内部网private地址范围10.0.0.0/24。对于外部网而言,在尝试进行删除操作时会触发错误提示。其原因在于系统中预设了一个默认的 demo 项目路由器,并已成功与此外部网进行连接。因此,在进行删除操作之前,请确保先移除与该网络相关联的路由接口配置,或彻底删除该 router 设备。值得注意的是,在登录 OpenStack 管理控制台时,默认状态下无法在此界面下配置 demo 项目中的 router 设置。为了完成相关配置,请务必访问‘管理员’选项卡。

在控制台界面中依次点击"管理员"→"网络设置"→"路由管理"选项卡,在虚拟路由器 route1 栏目的上方勾选复选框后,并点击右上角的删除按钮(如图 1所示)。

图 1 删除路由

在删除路由器之后,在配置界面下依次点击管理员选项卡下的"网络"功能模块中的"另一个"系列选项卡,在这两个相关选项卡中分别勾选已存在的公共和私有类型服务端口配置项,并单击右上方显示的"删除服务端口配置项"按钮以完成相关设置工作(如图 2 所示)。

图 2 删除网络

至此,完成了网络和路由器的删除操作。

2)创建网络和路由

在为云主机准备时, 首要任务是建立连接到该云主机所需的内部私有网段, 同时还需要配置路由设备与内外网之间的通信所需的基础设施. 构建过程包括先建立外网、内网及各自所属的小 subnet 区域, 然后再将路由设备与内外网相连接. 所有外网配置仅限于'管理员' > '系统设置' > '虚拟机设置'中的相关选项卡执行

  • 创建网络

创建外部网络:

在'管理员'选项卡下的'网络'→'网络选项卡'中进行设置,在完成各项参数配置后,请点击页面右上方的'+创建网络'按钮以启动创建流程,在随后弹出的对话框中请依次输入相关参数:名称字段填入public,默认将项目类型设为admin,并将供应商网络类型字段设为Flat(即扁平化架构),同时勾选右侧的'外部网'复选框以启用外部互联网接入功能;设置完成后,请点击下一步按钮即可继续进行配置

图 3 创建外部网络

在完成外部网络配置后,在进入子网设置页面时,请依次在“子网名称”、“网络地址”以及“网关 IP”这三个输入框中进行填写。其中'网络地址'字段指定的是云主机所属的内部网络的IP地址范围。请由管理
员根据实际需求自行设定。配置完成后,请点击'下一步'按钮(如图4所示)。

图 4 填写子网信息

当"网关 IP"字段为空时,默认赋值为该网络的第一个IP地址(如X.X.X.1),也可以自行指定其他IP地址。若希望云主机不通过该网络访问其他网络,则可以选择"禁用网关"复选框。

在'子网详情'选项卡中,在清除'激活 DHCP'复选框的勾选后,在维持其余字段的默认设置的前提下(由于外部网络与云主机网络属于不同的网段),无需为云主机配置 IP 地址、 DNS 等参数;即可单击'创建'按钮,并参考图 5 所示

图 5 填写子网详情信息

页面将跳转至公共网络环境的子网列表界面中以呈现当前创建成功的子网信息,请参见图6。

图 6 查看子网列表

创建内部网络:

外部网络创建成功后,接下来开始建立内部网络.这个内部网络将用于连接云主机实例,并建议配置DHCP服务以分配必要的网络参数给这些云主机.

项目

  • 创建

新建网域设置

网络名称

子网掩码启用

下一步

项目

依次点击项目菜单中的【项目

图 7 创建云主机网络

在'子网'选项卡页面中, 按照管理员规划, 依次填写子网名称. 网络地址. 以及. 网关IP字段. 网关IP字段留空时,默认会使用网络中的第一个IP地址. 如果无需该网络中的云主机接入外部网络, 可以选择勾选禁用. 网关复选框. 完成后请单击下一项按钮 如图8所示.

图 8 填写子网信息

在"子网详情"选项卡页面中,请确保勾选"激活 DHCP"复选框并完成相应的设置:即填写"分配地址池"以及"DNS 服务器"输入字段。完成配置后可为该网络提供IP地址及DNS服务器地址分配服务。当操作完成后,请点击右侧的"已创建"按钮(如图9所示)。

图 9 填写子网详情信息

完成后将返回网络列表页,显示当前已经创建成功的网络,如图 10 所示。

图 10 查看网络列表

  • 创建路由

完成网络架构搭建后,请确保对路由器进行配置以实现其内部网络与外部网络之间的数据转发。

依次点击页面上的选项卡菜单项:项目→网络→路由,在右上方找到并点击" + 新建一个路由"按钮,在弹出的新窗口中填写"路由名称"字段,并指定外部网络为之前创建的'public'设置后即可完成配置

图 11 新建路由

完成时将返回至该页面。此操作会呈现当前已创建成功的路由器信息,请参见图12所示的位置。

图 12 查看路由列表

在成功配置路由并选择外部网络后,在配置完成时系统会自动生成外部网络接口。此外还需要手动设置内部网络相关的接口以完成拓扑结构搭建。单击右侧的"Route"超链接打开路由管理界面切换至"接口"选项卡并点击上方右侧" + 添加接口 "按钮进入新增界面进行配置。从左侧'子网'下拉菜单中选择已成功配置好的私有地址空间'private:192.168.1.0/24 (private_subnet)'随后在IP地址字段为空,默认设置为私有子网的网关地址位置即可完成配置请确保所有参数正确无误后点击底部'提交'按钮最终结果将在图13中展示

图 13 增加路由接口

页面将跳转至路由器接口列表页面,并展示当前的所有路由器接口。
如果当前查看的路由器接口状态标记为"Down"时(如图14所示),则表示该接口不可用。
用户可通过点击刷新按钮来重新获取最新状态信息,默认状态下该页的状态应为"Active"。

图 14 查看接口列表

至此,网络和路由创建完成。

2.3、创建实例

Packstack一键部署完成后,默认已配置好实例类型和镜像设置。其中实例类型的功能是对云主机实施资源限制管理;而镜像是系统运行的基础软件包。当具备网络配置、路由设置以及相应的实例类型和镜像时,则可顺利创建虚拟服务器环境。在执行下一步操作之前,请务必确认项目设置:访问'项目'→'计算'→'镜像'选项卡,并检查cirros这个特定镜像文件的大小是否符合规范(默认约为10-20兆)。如果发现该镜像是几百千兆级别,则建议按照相关指导更换合适的存储方案

依次点击项目、计算和实例选项卡,在页面右侧点击创建实例按钮,在弹出的创建实例页面中输入"test"作为"实例名称"字段值。完成之后点击"下一步"按钮(如图15所示)。

图 15 创建云主机(一)

在'源'选项卡页面上,请从'选择源'下拉菜单中选择'镜像'选项,并根据是否需要持久化设置新卷位置为'否'(如果需要持久化,则选'是')。从'可用配额'下方提供的镜像列表中,请找到名称为 cirros 的那个镜像右侧带有箭头(确保其位于已分配下面)。完成操作后,请点击'下一步'按钮(如图 16 所示)

图 16 创建云主机(二)

在“实例类型”选项卡页面中间区域,在线编辑器中点击右侧带有“m1.tiny”实例类型的资源占用最少的箭头图标位置。完成此操作后,在页面下方点击“下一步”按钮(如图 17 所示)。

图 17 创建云主机(三)

在'网络'选项卡页面中心位置处执行操作:首先点击右侧的网线图标(代表已分配网络),确保该图标处于可见状态并置于分配区域下方。完成'详情'、'源'、'实例类型'以及'网络'这四个必要选项卡的配置后,在剩余未设置的可选配置选项卡处保持默认状态即可(无需额外设置)。随后立即点击生成实例按钮(如图18所示)。

图 18 创建云主机(四)

页面将跳转到实例列表页面,并根据先前设置生成实例,在'任务'列中可浏览生成的相关数据。云主机成功后会分配一个静态IP地址(如图19所示)。

图 19 创建云主机(五)

在实例test右侧创建快照旁边的下拉菜单中选择控制台选项,在线访问云主机控制台界面。按照终端提示输入用户名和密码以完成登录操作,并查看当前云主机的IP地址信息(如图20所示)。

图 20 查看云主机 IP 地址

测试从云主机 ping 外网,比如 baidu.com,发现网络不通。命令如下:

复制代码
 $ ping www.baidu.com

    
 $
    
    
    
    
    bash

ping 命令运行未显示任何回应。
这表明网络处于不通状态。
在之前为外部网络配置时,
我们设置了外部网关地址为 172.16.1.1(如图 4 所示)。
因此,在宿主机上必须存在该网关地址。
应先使用 ifconfig 检查该 IP 地址是否已启用。
如果未启用,
请按照以下步骤操作:
第一步:运行 ifconfig 命令;
第二步:确认相关 IP 地址设置;
第三步:若问题依旧,请参考附录 A 进行进一步配置。

复制代码
    [root@openstack ~]# ifconfig br-ex 172.16.1.1 netmask 255.255.255.0 up
    
    bash

或者仿照前面章节创建“ifcfg-br-ex”网卡配置文件来定义该 IP 地址。

宿主机的 br-ex 网卡用于实现 OpenStack 虚拟网络之间的连接,在虚拟网络访问互联网时必须通过宿主机的真实网卡 ens32,在 br-ex 和 ens32 之间实现流量转发的方式共有三种途径

  1. 将ens32网卡接入br-ex网桥后移除ens32端口处IP地址配置项,并设置br-ex端口负责宿主机外部网络所属的所有IP地址范围(即public子网部分),因此需要更新外部网络公共部分的所有IP地址配置信息。

  2. 启用人自主管理权限内的路由器功能后会自动启用宿主机内的路由功能,并同步设置回包路由表项以处理返回的数据包。此过程会生成一个相对独立但又相互连接的数据传输通道。

  3. 配置一个基于内部路由器进行NAT转换的功能会使系统具备更强的数据转发能力:利用内部路由器与本地端口转换实现数据转发,并且由于不再依赖传统的回包机制,默认情况下无需设置专门的回包路由表项。此外也不需要变更原有公共子网规划设置即可完成基本通信需求。

本段将采用第三种方法进行说明。为防止重启后通配规则失效,请增添一条 nat 通配规则,并建议将该规则保存至 iptables 配置文件中。请特别注意:参数 -o ens32 应根据宿主机的实际网络接口名称进行设置。参考命令示例部分。

复制代码
 [root@openstack ~]# echo "1" > /proc/sys/net/ipv4/ip_forward

    
 [root@openstack ~]# iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o ens32 -m comment --comment "000 nat" -j MASQUERADE
    
 [root@openstack ~]# service iptables save
    
 iptables: Saving firewall rules to /etc/sysconfig/iptables:[  确定  ]
    
    
    
    
    bash

再次测试云主机和互联网的连通性。执行命令如下所示。

上述命令输出结果显示云主机已经能够成功访问互联网。

2.4、绑定浮动 IP

在完成相关的设置后

依次点击"项目"→"网络"→"浮动IP"选项卡,在页面右侧点击"分配IP给项目"按钮后会打开浮点IP分配页面,在该页面中将"资源池"设置为 publicly 并点击"分配IP"按钮,请参考图21

图 21 分配浮动 IP 地址

该页面将导航至浮IP列表界面,并展示成功分配的浮动IP地址列表(如图22所示)。

图 22 浮动 IP 地址列表

如图 22 所示,IP 地址 172.16.1.175 已经成功分配。接下来将该浮动 IP 地址分配给云主机。单击浮动 IP 地址右侧的“关联”按钮,在随后弹出的“管理浮动 IP 的关联”页面中,在“待连接的端口”下拉菜单中选择,并在与之对应的云主机旁进行选择(例如,“test”云主机)。完成后,请再次点击“关联”按钮(如图 23所示)。

图 23 管理浮动 IP 地址的关联

通过浮动 IP 列表页面中的相关信息可知,在图 24 中已成功地将浮动 IP 地址与云主机进行了绑定。

图 24 浮动 IP 地址分配列表

进入"项目"→"计算"→"实例"选项卡后,在查看云主机test时发现其成功实现了浮动 IP 地址配置(如图25所示)。

图 25 查看云主机的更新信息

配置浮动 IP 地址后,则理论上允许外部网络访问云主机;同时需要配置安全组规则。

2.5、添加安全组规则

安全组的功能是防御云主机的安全威胁,在OpenStack系统中,默认配置了一个名为 default 的安全组,默认情况下从数据包方向将网络资源划分为入口端口和出口端口,在访问云主机的入口端口上进行流量管理时,默认情况下必须按照安全组规则对入站流量进行放行控制。

依次点击项目、网络和安全组选项卡;页面中间显示默认的安全组规则;点击右侧的管理规则按钮;如图 26所示

图 26 默认安全组规则

在 default 安全组规则列表页面,默认存在四条规则,如图 27 所示。

图 27 管理安全组规则

点击页面右上方的「+新增规则」按钮,在打开「添加规则」对话框后,请将参数设置为'ALL ICMP'并将方向设置为'入口'。完成所有设置后点击「添加」按钮进行保存。

图 28 添加 ICMP 规则

页面将跳转至默认的安全组规则列表页面,在末尾展示已成功添加的安全组规则,请参考图 29 的相关内容

图 29 查看 ICMP 规则

配置完成后,在云主机上设置了浮动 IP 地址和安全组规则。为了验证该配置的效果,请通过外部网络进行测试(此处使用宿主机作为替代)。具体来说,请访问目标云主机所绑定的浮动 IP 地址,并执行相应的测试命令。测试结果将在以下部分展示。

复制代码
 [root@openstack ~]# ping 172.16.1.175

    
 PING 172.16.1.175 (172.16.1.175) 56(84) bytes of data.
    
 64 bytes from 172.16.1.175: icmp_seq=1 ttl=63 time=2.83 ms
    
 64 bytes from 172.16.1.175: icmp_seq=2 ttl=63 time=3.26 ms
    
 64 bytes from 172.16.1.175: icmp_seq=3 ttl=63 time=26.2 ms
    
    
    
    
    bash

为了使管理员能够通过SSH协议从外部网络访问并管理云主机, 类似地, 配置类似的ICMP规则也适用。请参考图30所示的配置界面, 在此界面中您可以设置允许来自特定IP地址范围的SSH协议流量穿透防火墙以连接到云主机。完成配置后, 您还可以参考图31中的操作指南以获取详细的实施步骤

图 30 添加 SSH 规则

图 31 查看 SSH 规则

操作人员在本地服务器尝试通过远程登录命令进行云主机的访问测试过程及结果如下:

复制代码
 [root@openstack ~]# ssh cirros@172.16.1.175

    
 The authenticity of host '172.16.1.175 (172.16.1.175)' can't be established.
    
 ECDSA key fingerprint is SHA256:dc9t9DZqWvpcBu2pRt8OZpLZgDCat9SizG+pf/BfY60.
    
 ECDSA key fingerprint is MD5:50:ee:ff:10:e4:4c:e8:2f:24:63:08:42:99:8a:9b:85.
    
 Are you sure you want to continue connecting (yes/no)? yes
    
 Warning: Permanently added '172.16.1.175' (ECDSA) to the list of known hosts.
    
 cirros@172.16.1.175's password: 
    
 $ ifconfig
    
 eth0      Link encap:Ethernet  HWaddr FA:16:3E:CE:7F:AE  
    
       inet addr:192.168.1.189  Bcast:192.168.1.255  Mask:255.255.255.0
    
       inet6 addr: fe80::f816:3eff:fece:7fae/64 Scope:Link
    
       UP BROADCAST RUNNING MULTICAST  MTU:1442  Metric:1
    
       RX packets:164 errors:0 dropped:0 overruns:0 frame:0
    
       TX packets:217 errors:0 dropped:0 overruns:0 carrier:0
    
       collisions:0 txqueuelen:1000 
    
       RX bytes:18771 (18.3 KiB)  TX bytes:20089 (19.6 KiB)
    
  
    
 lo        Link encap:Local Loopback  
    
       inet addr:127.0.0.1  Mask:255.0.0.0
    
       inet6 addr: ::1/128 Scope:Host
    
       UP LOOPBACK RUNNING  MTU:65536  Metric:1
    
       RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    
       TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    
       collisions:0 txqueuelen:1000 
    
       RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
    
  
    
 $ 
    
    
    
    
    bash
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-07-13/kGBVtsYgafocJ61hRbFCyDLdTP3v.png)

以上测试表明,管理员可以通过 SSH 协议远程连接云主机。

2.6、创建密钥对

密钥对是由 OpenStack 支持的一种安全认证功能,在创建云主机的过程中用户可以选择配置它。管理员在访问云主机时能够实现无密码登录。反过来说 即使破解密钥对的安全性也需要更高的技术难度

依次点击"项目">"计算">"密钥对"选项卡,在密钥对列表页面单击新建密钥对按钮。

图 32 查看密钥对

在密钥对管理页面中进行密钥对设置时,请为密钥对指定名称为my-auth,并选择基于SSH的密钥类型。设置完成后,请点击“创建密钥对”按钮(如图33所示)。

图 33 创建密钥对

完成秘钥对创建后,在线浏览器将自动下载my_auth.pem文件。此file将成为该云端机器人的private key file.随后,在线服务器将与本地设备建立密键绑定关系,并将此private key复制到本地设备上以实现实时无密码访问云端服务器。随后,在线设备可以通过此key直接登录云端机器

在宿主机上创建 cirros 用户并设置权限,命令如下。

复制代码
 [root@openstack ~]# useradd cirros

    
 [root@openstack ~]# mkdir /home/cirros/.ssh
    
    
    
    
    bash

将该密钥文件复制到宿主机home/cirros目录下的.cri文件夹中,并更名该文件为id_rsa。复制命令如下:

复制代码
 [root@openstack ~]# mv /home/cirros/.ssh/my-auth.pem /home/cirros/.ssh/id_rsa

    
 [root@openstack ~]# chmod 700 /home/cirros/.ssh/
    
 [root@openstack ~]# chown -R cirros.cirros /home/cirros/.ssh/
    
 [root@openstack ~]# chmod 600 /home/cirros/.ssh/id_rsa
    
    
    
    
    bash

若需使用密钥对,则必须重新生成一台云端服务器;若资源不足,则应删除先前生成的测试型云端服务器;系统将自动识别并选用当前生成的密钥对;完成操作后将动态IP地址172.16.1.175绑定到该云服务器;建议从宿主计算机利用该公有密钥连接到该云端服务器,并执行相应操作步骤

复制代码
 [root@openstack ~]# su - cirros

    
 [cirros@openstack ~]$ ssh 172.16.1.175
    
 The authenticity of host '172.16.1.175 (172.16.1.175)' can't be established.
    
 ECDSA key fingerprint is SHA256:6SRAmG5Xfi7m93QmOGZiTCOB+E2UHWUmkL7XpfV1Kog.
    
 ECDSA key fingerprint is MD5:78:10:fc:e8:29:41:a5:0f:13:69:91:08:99:bd:bc:f2.
    
 Are you sure you want to continue connecting (yes/no)? yes
    
 Warning: Permanently added '172.16.1.175' (ECDSA) to the list of known hosts.
    
 $ ifconfig
    
 eth0      Link encap:Ethernet  HWaddr FA:16:3E:89:20:4F  
    
       inet addr:192.168.1.120  Bcast:192.168.1.255  Mask:255.255.255.0
    
       inet6 addr: fe80::f816:3eff:fe89:204f/64 Scope:Link
    
       UP BROADCAST RUNNING MULTICAST  MTU:1442  Metric:1
    
       RX packets:103 errors:0 dropped:0 overruns:0 frame:0
    
       TX packets:152 errors:0 dropped:0 overruns:0 carrier:0
    
       collisions:0 txqueuelen:1000 
    
       RX bytes:14023 (13.6 KiB)  TX bytes:14598 (14.2 KiB)
    
   18. lo        Link encap:Local Loopback  
    
       inet addr:127.0.0.1  Mask:255.0.0.0
    
       inet6 addr: ::1/128 Scope:Host
    
       UP LOOPBACK RUNNING  MTU:65536  Metric:1
    
       RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    
       TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    
       collisions:0 txqueuelen:1000 
    
       RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
    
   27. $ 
    
 
    
    
    bash
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-07-13/IxpKf4MUd7LNQZTmjqWyDbkaSt8o.png)

在该命令序列中,在使用SSH工具进行云主机远程登录时无需提供密码。然而不拥有私钥文件的客户端无法成功建立基于SSH协议的云主机远程登录连接。

2.7、创建及使用卷挂载

OpenStack 使用 Cinder 提供块存储服务。管理员可以灵活地在云主机上增加虚拟磁盘。虚拟磁盘是一种特殊的硬件设备,在虚拟化环境中作为物理硬盘进行管理。本章中的案例设置在一个单一计算节点环境中。一旦启用虚拟磁盘设备,则 Cinder 系统将完全占据剩余可用空间。

随后启动一个卷

图 34 查看卷信息

在页面中弹出的'创建卷'界面里,在线填写卷名称字段为'test-lv'并将其大小设置为2,在其他参数维持默认设置的情况下进行操作。随后点击'创建卷'按钮即可完成整个操作流程(如图35所示)。

图 35 创建卷

页面将返回到卷列表页面,显示当前创建成功的卷信息,如图 36 所示。

图 36 查看卷列表

创建完成后,请确保将新卷与实例进行关联以使其可用。点击图36中的'编辑卷'旁边的下拉菜单项,在弹出的'管理已连接卷'页面中选择将新卷设置为与云主机'test'建立关联。完成所有设置后,请点击'连接卷'按钮。

图 37 管理已连接卷

在随后的卷列表页面中呈现设备信息如下:当前卷已连接到云主机 test 上的 /dev/vdb 设备,请参考 图 38 的详细说明。

图 38 卷列表页面

进入到 test 云主机控制台,执行 fdisk 命令查看磁盘情况。如下所示。

复制代码
 $ sudo fdisk -l

    
 Disk /dev/vda: 1 GiB, 1073741824 bytes, 2097152 sectors
    
 Units: sectors of 1 * 512 = 512 bytes
    
 Sector size (logical/physical): 512 bytes / 512 bytes
    
 I/O size (minimum/optimal): 512 bytes / 512 bytes
    
 Disklabel type: gpt
    
 Disk identifier: F05EDE64-4EFD-477A-B01E-B37CCD5D3EB4
    
  
    
 Device     Start     End Sectors  Size Type
    
 /dev/vda1  18432 2097118 2078687 1015M Linux filesystem
    
 /dev/vda15  2048   18431   16384    8M EFI System
    
  
    
 Partition table entries are not in disk order.
    
  
    
  
    
 Disk /dev/vdb: 2 GiB, 2147483648 bytes, 4194304 sectors
    
 Units: sectors of 1 * 512 = 512 bytes
    
 Sector size (logical/physical): 512 bytes / 512 bytes
    
 I/O size (minimum/optimal): 512 bytes / 512 bytes
    
 Disklabel type: dos
    
 Disk identifier: 0x5a692294
    
  
    
 Device     Boot Start     End Sectors Size Id Type
    
 /dev/vdb1        2048 4194303 4192256   2G 83 Linux
    
    
    
    
    bash
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-07-13/VlicQOenTghpxCZ89y0m7wMK3uzI.png)

通过云主机控制台,在/shape/vdb上执行以下操作:将该分区进行格式化处理,并将其挂载至/mnt目录中。

复制代码
 $ sudo fdisk /dev/vdb  //过程略

    
 $ sudo mkfs /dev/vdb1
    
 $ sudo mount /dev/vdb1 /mnt
    
 $ df -h
    
 Filesystem                Size      Used Available Use% Mounted on
    
 /dev                    231.7M         0    231.7M   0% /dev
    
 /dev/vda1               980.0M     32.9M    905.8M   4% /
    
 tmpfs                   238.8M         0    238.8M   0% /dev/shm
    
 tmpfs                   238.8M     84.0K    238.7M   0% /run
    
 /dev/vdb1                 2.0G      3.0M      1.9G   0% /mnt
    
    
    
    
    bash
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-07-13/L89h0ijxVNglMEWObRHKDwkuvGaI.png)

在/mnt 目录写入一个 test.txt 文件,内容如下。

复制代码
 $ sudo vi /mnt/test.txt

    
 $ sudo cat /mnt/test.txt 
    
 2G
    
    
    
    
    bash

请注意,在创建卷时所指定的存储容量并不会立刻被分配给磁盘空间;只有在卷中存在数据时才会真正地占据磁盘空间。

当云主机中的存储空间在虚拟机上不足时,则必须先将存储区域从原有虚拟机中解耦并完成扩容操作。随后会跳转至"管理已连接存储区域"界面,在该页面中找到对应存储区域并执行"分隔存储区域"操作(如图39所示)。

图 39 管理已连接卷页面

在确认分类卷页面继续单击“分离卷”按钮,图 40 所示。

图 40 确认分离卷

当当前下拉菜单断开后,在对应的选项中选择“扩展”。进入弹出的扩展界面后设置新尺寸值为“3”。操作完成后点击“确定”按钮(如图41所示)。

图 41 扩展卷页面

返回到卷列表页面,页面中卷大小信息已经更新为 3GiB,如图 42 所示。

图 42 卷列表页面中更新卷的大小

在卷的下拉菜单中继续选择"管理连接选项",然后重新链接至云主机实例"test"(如图43所示)。

图 43 重新连接实例

进入名为 test 的云主机控制台界面,并在其中尝试访问名为 test.txt 的文件。test.txt 文件不再存在。与此同时,在资源管理器中新增了一个 vdb 分区,请注意其大小为 3GB,并请参考以下命令及结果。

复制代码
 $ ls /mnt/test.txt

    
 ls: /mnt/test.txt: No such file or directory
    
 $ sudo fdisk -l
    
 Disk /dev/vda: 1 GiB, 1073741824 bytes, 2097152 sectors
    
 Units: sectors of 1 * 512 = 512 bytes
    
 Sector size (logical/physical): 512 bytes / 512 bytes
    
 I/O size (minimum/optimal): 512 bytes / 512 bytes
    
 Disklabel type: gpt
    
 Disk identifier: F05EDE64-4EFD-477A-B01E-B37CCD5D3EB4
    
  
    
 Device     Start     End Sectors  Size Type
    
 /dev/vda1  18432 2097118 2078687 1015M Linux filesystem
    
 /dev/vda15  2048   18431   16384    8M EFI System
    
  
    
 Partition table entries are not in disk order.
    
  
    
  
    
 Disk /dev/vdb: 3 GiB, 3221225472 bytes, 6291456 sectors
    
 Units: sectors of 1 * 512 = 512 bytes
    
 Sector size (logical/physical): 512 bytes / 512 bytes
    
 I/O size (minimum/optimal): 512 bytes / 512 bytes
    
 Disklabel type: dos
    
 Disk identifier: 0x5a692294
    
  
    
 Device     Boot Start     End Sectors Size Id Type
    
 /dev/vdb1        2048 4194303 4192256   2G 83 Linux
    
    
    
    
    bash
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-07-13/GdRHDmXTE31ApKicYlNa4hLrkx0C.png)

新增 1GB 的空间会保持默认状态未被分区。操作步骤如下:首先将/dev/vdb1 分区解挂载,并将/dev/vdc1 分区重新挂载。完成上述操作后,请检查 test.txt 文件内容是否正确无误。为了确保能够有效利用新增的空间,请必须重新启动云主机服务。

复制代码
 $ sudo umount -l /mnt

    
 $ sudo mount /dev/vdb1 /mnt/
    
 $ sudo cat /mnt/test.txt 
    
 2G
    
 $ sudo reboot
    
    
    
    
    bash

在云主机重启操作完成后,“卷”将被系统重新分配标识为/dev/vdb,在完成此操作后仍需进行相应的挂载配置工作。对于新增的 /dev/vdb2 分区而言,在完成格式化操作之前无法完成挂载使用,请确保其经过完整的格式化流程后再进行挂载操作以避免数据丢失风险。具体操作步骤如下:

复制代码
 $ sudo mkdir /data

    
 $ sudo fdisk /dev/vdb
    
 $ sudo mkfs /dev/vdb2
    
 $ sudo mount /dev/vdb2 /data
    
 $ sudo mount /dev/vdb1 /mnt
    
 $ df -h
    
 Filesystem                Size      Used Available Use% Mounted on
    
 /dev                    231.7M         0    231.7M   0% /dev
    
 /dev/vda1               980.0M     32.9M    905.8M   4% /
    
 tmpfs                   238.8M         0    238.8M   0% /dev/shm
    
 tmpfs                   238.8M     80.0K    238.7M   0% /run
    
 /dev/vdb2              1007.9M      1.3M    955.4M   0% /data
    
 /dev/vdb1                 2.0G      3.0M      1.9G   0% /mnt
    
    
    
    
    bash
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-07-13/PnNxhBeXWlIMb9y4LqEidjvUH0AV.png)

2.8、快照管理

该存储系统支持两种类型的快照:一种是基于实例的快照;另一种是基于卷的快照。其中;基于实例的快照被存储在 Glance 中;而基于卷的快则保留在本地存储区域。

1)基于实例的快照

需要注意所选实例要不带卷或者先卸载卷,若带卷会导致实验失败。

首先在当前云主机创建一个 test.txt 文件,并且写入内容,如下所示。

复制代码
 $ echo test > test.txt

    
 $ cat test.txt 
    
 test
    
 $ ifconfig
    
 eth0      Link encap:Ethernet  HWaddr FA:16:3E:89:20:4F  
    
       inet addr:192.168.1.120  Bcast:192.168.1.255  Mask:255.255.255.0
    
       inet6 addr: fe80::f816:3eff:fe89:204f/64 Scope:Link
    
       UP BROADCAST RUNNING MULTICAST  MTU:1442  Metric:1
    
       RX packets:1055 errors:0 dropped:0 overruns:0 frame:0
    
       TX packets:922 errors:0 dropped:0 overruns:0 carrier:0
    
       collisions:0 txqueuelen:1000 
    
       RX bytes:91779 (89.6 KiB)  TX bytes:89270 (87.1 KiB)
    
  
    
 lo        Link encap:Local Loopback  
    
       inet addr:127.0.0.1  Mask:255.0.0.0
    
       inet6 addr: ::1/128 Scope:Host
    
       UP LOOPBACK RUNNING  MTU:65536  Metric:1
    
       RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    
       TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    
       collisions:0 txqueuelen:1000 
    
       RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
    
  
    
    
    
    
    bash
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-07-13/0WEyLgfhpFMlRSovnbUVtNazsQcG.png)

随后生成一个实例快照,并通过该快照启动一个新的云主机。请在'实例列表'页面上找到对应测试实例test并点击其'创建快照'按钮,请参考图44的操作步骤进行具体操作。

图 44 实例列表中创建快照

在出现的"创建快照"页面中,请输入快照名称test-snap,并点击"创建快照"按钮。如图45所示

图 45 创建全新快照

该页面会自动切换至'镜像'页面,并会在列表末尾创建一个新的镜像,其状态可能会持续位于待处理状态。可通过刷新页面来解决问题。完成效果如图46所示

图 46 查看镜像列表

在完成实例快照的创建后, 利用该快照重新生成云主机. 点击镜像后的"启动"按钮, 在随后弹出的"创建实例"页面, 指定实例名称为'test01'. 在"来源"选项卡界面中,默认情况下已启用"实例快照"下拉列表, 并提供名为'test-snap'的快照供选择(如图 47 所示). 完成所有设置后, 请点击"创建实例"按钮.

图 47 创建实例(一)

创建完成后的效果如图 48 所示。

图 48 创建实例(二)

登录 test01 云主机控制台,执行如下命令。

运行该命令的输出结果表明,在基于实例快照生成的情况下所创建的云主机 test01 的数据与云主机 test 的数据保持一致。

2)基于卷的快照

之前创建的云主机"test01"已成功删除。现正在为"test01"重新创建云主机。在云主机创建过程中,在'源'选项卡页面选择'新建虚拟磁盘',指定容量为 1GB 的新虚拟磁盘。完成操作后,在'项目'→'卷'→'卷属性管理器'页面中新增了一个虚拟磁盘。

图 49 查看卷信息

登录 test01 云主机控制台,创建一个 test.txt 文件,写入 test01 内容如下。

在 navigating to the '项目' folder, subsequently entering the '卷' folder, and selecting a volume within it, you can create a snapshot of that volume. To do this, navigate to the right-hand dropdown in the storage panel and select 'Create Snapshot'. Name the snapshot with the identifier 'test01-lv-snap'. Upon creation, this action will prompt you with the message: "This volume is already associated with an instance". The correct approach is to detach the volume from its current connection before creating a new snapshot. Since test01 is a dedicated experimental server and volumes are not configured for real-time file writes, you should disregard this warning. By clicking on 'Create Snapshot (Force)', as illustrated in Figure 50, you will successfully generate a new snapshot without waiting for user confirmation.

图 50 创建卷快照

在卷快照列表页面可以看到创建成功的快照信息,如图 51 所示。

图 51 查看卷信息

基于该卷快照,在右侧下拉框中选择"创建实例"选项;指定实例名称为test02;在源页面处选择该卷快照;操作完成后,请登录到test02云主机控制台并执行相应的命令。

该命令表明,采用快照复制技术生成的云主机其IP地址不同外与之前的一致。同时,在卷列表页面会多出一个test-02运行的卷如图52所示。

图 52 查看卷信息

在生产环境中,实例快照和卷快照都被用来创建全新的云主机,并且通常被用来备份或迁移。

2.9、创建镜像

本章案例采用了官方获取的 CentOS 镜像(CentOS-7-x86_64-GenericCloud-1802.qcow2)。依次点击并选择路径:管理员 > 计算 > 镜像选项卡页面,在启动创建镜像功能后,请按照以下步骤操作:首先输入所需镜像名称;随后通过文件路径选择下载的镜像文件;设置其格式为 QCOW2-QEMU 模拟器;最后完成操作后点击创建镜像按钮。如图 53 所示。

图 53 创建镜像

创建过程会出现进度条,创建成功页面如图 54 所示。

图 54 创建镜像成功

导入镜像成功后

全部评论 (0)

还没有任何评论哟~