当前位置: 首页 > news >正文

OpenStack云平台管理

OpenStack云平台管理

文章目录

  • OpenStack云平台管理
    • 资源列表
    • 基础环境
    • 一、部署Openstack
    • 二、创建网络和路由
      • 2.1、删除默认的网络
      • 2.2、创建网络和路由
        • 2.2.1、创建外部网络
        • 2.2.2、创建内部网络
      • 2.3、创建路由
    • 三、创建实例
      • 3.1、配置实例
      • 3.2、配置NAT转换
    • 四、绑定浮动IP地址
    • 五、添加安全组规则
    • 六、创建密钥对
    • 七、创建及使用挂在卷
    • 八、快照管理
      • 8.1、基于实例的快照
      • 8.2、基于卷的快照
    • 九、创建镜像

资源列表

操作系统配置主机名IP磁盘版本
CentOS 7.910C12Gopenstack192.168.93.109100GTrain版本

基础环境

  • 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
  • 关闭内核安全机制
setenforce 0
sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
  • 修改主机名
hostnamectl set-hostname openstack

一、部署Openstack

  • 可参考上节文档进行安装,安装完成后使用管理员账号登录openstack的Web控制台

二、创建网络和路由

  • 通过packstack部署openstack环境成功后,默认已经配置了网络、路由、实例类型以及镜像等功能,并且可以直接使用,以方便直接体验openstack。本章主要带领读者学习openstack各功能的实现方法。所以首先删除默认创建的网络,再重新创建新的网络

2.1、删除默认的网络

  • openstack安装完成后默认会有两个网络,分别是外部网络public(172.24.4.0/24)、内部网络private(10.0.0.0/24).外部网络不能直接删除,会提示报错西悉尼,原因是存在默认的路由器(demo项目)且已经连接到该网络。在删除之前应该首先删除连接该网络的路由器接口,或者直接删除存在的路由器。管理员用户登录openstack控制台后,无法在“项目”选项卡中配置demo项目下的路由器。需要进入“管理员”选项卡

  • 控制台依次单击“管理员”——“网络”——“路由”选项卡,选中虚拟路由器route1前面的复选框,并单击右上角的“删除路由”按钮
    在这里插入图片描述

  • 删除路由器后,依次单击“管理员”——“网络”——“网络”选项阿卡,选中默认存在的public和private网络,并单击右上角的“删除网络”按钮,删除默认存在的网络
    在这里插入图片描述

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

2.2、创建网络和路由

  • 创建云主机之前,首先要创建用于连接云主机的内部网络,以及用于实现云主机访问外部网络和路由器和外部网络。创建步骤为线创建外部网络和内部网络以对应的子网,再创建路由器连接外部网络和内部网络。创建外部网只能在“管理员”——“网络”选项卡中操作,创建内部网络可以在“管理员”——“网络”——“网络” 或 “项目”——“网络”——“网络”选项卡中操作
2.2.1、创建外部网络
  • 依次单击“管理员”——“网络”——“网络”选项卡,完成后单击右上角“+创建网络”按钮,弹出创建网络界面,在“名称”字段填写pubilc,“项目”选择admin,“供应商网络类型”字段选择Flat,物理网络填写“extnet”,并**勾选“外部网络”**复选框。完成后单击“下一步”按钮
    在这里插入图片描述

  • 外部网络设置行完成后,在创建子网页面,依次填写**“子网名称”、“网络地址”和“网关IP”输入框。其中“网络地址处”为云主机所在的内部网络的IP地址段,可以由管理员自定定义。完成后单击“下一步”**按钮
    在这里插入图片描述

# 以本机的br-ex网卡进行填写
[root@openstack ~]# ifconfig br-ex
br-ex: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 172.24.4.1  netmask 255.255.255.0  broadcast 172.24.4.255inet6 fe80::44fb:fcff:febf:d45  prefixlen 64  scopeid 0x20<link>ether 46:fb:fc:bf:0d:45  txqueuelen 1000  (Ethernet)RX packets 5  bytes 140 (140.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 14  bytes 908 (908.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • 注意:“网关IP”字段为空表示默认使用网络中第一个IP地址,如X.X.X.1,也可以自行指定其他IP地址。如果不需要云主机通过该网络访问其他网络,可以勾选**“禁用网关”**复选框

  • 在**“子网详情”选项卡中,取消勾选“激活DHCP”复选框,其他字段可以保持默认设置,因为外部网络和云主机网络属于不同的网段,也不需要给云主机分配IP地址、DNS等参数。直接单击“创建”**按钮
    在这里插入图片描述

  • 页面将返回到public网络的子网列表页面,显示当前创建成功的子网信息
    在这里插入图片描述

2.2.2、创建内部网络
  • 外部网络创建成功后,下面开始创建内部网络。内部网络用于连接云主机实例,建立配置DHCP,用于向云主机分配网络参数

  • 依次单击**“项目”——“网络”——“网络”选项卡,页面中间将显示之前创建成功的外部网络“public”。单击右上角“+创建网络”按钮,开始创建内部网络。在弹出的创建网络页面,填写“网络名称”为private**,确保选中**“创建子网”**复选框,完成后单击“下一步“按钮
    在这里插入图片描述

  • 在接下来的**”子网“选项卡也买你,根据管理员规划,依次填写”子网名称“、”网络地址“以及”网关IP“输入框**。”网关IP输入框留空默认使用网路中第一个IP地址“。如果不需要该网络中的云主机访问外部网络,可以勾选”禁用网关“复选框。完成后单击**”下一步“**按钮
    在这里插入图片描述

  • 在**”子网详细“选项卡页面,确保勾选”激活DHCP“复选框,并填写”分配地址池“和”DNS服务器“**输入框。配置该网络可以向云主机分配IP地址和DNS地址。完成后单击”**创建“**按钮
    在这里插入图片描述

  • 完成后将返回网络列表页,显示当前已经创建成功的网络
    在这里插入图片描述

2.3、创建路由

  • 网络创建完成后,还需要创建路由器实现内部网络和外部网络之间的转发

  • 依次单击**”项目“——”网络“——”路由“选项卡,并单击页面右上角”+新建路由“按钮,在弹出的”新建路由“页面,填写”路由名称“输入框,并选择外部网络为之前创建的”public“。完成后,单击”新建路由“按钮,新创建的路由器默认开启SNAT功能**
    在这里插入图片描述

  • 完成后将返回路由列表页面。显示当前创建成功的路由器
    在这里插入图片描述

  • 成功创建路由并选择外部网络之后,将自动创建连接外部网络的接口,还需要创建连接内部网络的接口。单击路由器名称**”route“超链接**,进入路由详细信息页面。单击**”接口“选项卡,并单击页面右上角”+增加接口“按钮。在弹出的”增加接口“页面中,”子网“下拉菜单选择之前创建成功的内部网络”private:192.168.93.0/24(private_subnet)“”IP地址“留空默默人为private网路中配置的网关地址**。完成后,单击”提交“按钮
    在这里插入图片描述

  • 页面将返回到路由器接口列表页面,显示当前的路由器接口。如果接口处于显示为”Down“可刷新页面,正常状态为”运行中“
    在这里插入图片描述

三、创建实例

3.1、配置实例

  • packstack一键部署openstack完成后,默认存在实例类型和镜像配置。实例类型的作用是对云主机进行资源限制。镜像用于生成云主机操作系统。当存在网络、路由、实例类型以及镜像之后,就可以创建云主机了。不过在创建之前,要线检查下**”项目“——”计算“——”镜像“**选项卡下的cirros这个镜像的大小,正常大小为几十兆。如果为几百K,参考上一章文档进行替换

  • 依次单击**”项目“——”计算“——”实例“选项卡,页面右边单击”创建实例“按钮,在弹出的创建实例页面,填写”实例名称“test**。完成后单击**”下一步“**按钮
    在这里插入图片描述

  • 在**”源“选项卡页面,”选择源“下拉菜单中选择”image“,创建新卷位置选择”不“(如果需要持久化,选择”是”)。在“可用配额”下面的镜像列表中,单击名称为“cirros01”**镜像右边的箭头,确保其位于已分配下面。完成后单击“下一步”按钮
    在这里插入图片描述

  • 在**“实例类型”选项卡页面中间区域,单击资源占用最少的“m1.tiny”实例类型右边的箭头,确保其位于已分配下面。完成后单击“下一步”**按钮
    在这里插入图片描述

  • 在**“网络”选项卡页面中间,单击之前创建的内部网络“private”**右边的箭头,确保其位于已分配下面

  • **“安全组”**选项默认勾选

  • 当完成**“详情”“源“”实例列表“”网络“四个必须选项卡之后,其他可选配置选项卡可保持默认,直接单击”创建实例“**按钮
    在这里插入图片描述

  • 页面将返回到实例列表也买你,并基于之前的配置创建实例,创建的实时信息可查看”认为有“一栏中的动态显示内容。创建成功后云主机将获得一个IP地址
    在这里插入图片描述

  • 在实例**”test“**右边”创建快照“傍边的下拉菜单中选择”控制台“,进入云主机控制台,根据终端提示信息键入用户名和密码登录云主机控制台,并查看当前云主机的IP地址

  • 用户名:cirros 密码:gocubsgo
    在这里插入图片描述

  • 此时云主机是不能访问外网的
    在这里插入图片描述

宿主机的br-ex网卡用于连接opensatck虚拟网络,但是虚拟网络访问互联网必须经过宿主机的真实网卡ens33,宿主机在br-ex和ens33之间转发流量可以通过三种方式

  • 将ens33网卡加入br-ex网桥,取消ens33配置的IP地址,配置br-ex为宿主机外部网络的IP地址,这种方式需要修改外部网络public的网段地址

  • 开启宿主机的路由转发,通过路由转发数据,同时配置宿主机的回包路由

  • 配置宿主机的NAT功能,通过路由加地址转换转发数据,不需要回包路由,不需要修改现有网段

3.2、配置NAT转换

  • 下面基于第三种方式进行介绍。添加一条nat规则。为了避免重启规则小时,可以将其写道iptables配置文件。注意:-o ens33参数需要根据实际的宿主机网卡名称来配置。命令如下。–comment ”000 nat“表示添加注释文字
[root@openstack ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
[root@openstack ~]# iptables -t nat -A POSTROUTING -s 172.24.4.0/24 -o ens33 -m comment --comment "000 nat" -j MASQUERADE
[root@openstack ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
  • 再次测试云主机和互联网的连通性
    在这里插入图片描述

四、绑定浮动IP地址

  • 经过前面的配置,云主机已经可以访问外部网络,但是外部网络还不能访问云主机。无论是宿主机还是外部网络设备,都没有云主机网络的路由条目。根据之前的介绍,创建的虚拟路由器连接外部网络后默认启用SNAT(源地址转换)。若要访问NAT设备身后的网络,需要通过配置NAT映射或目录地址转换实现,即需要配置浮动IP地址

  • 依次单击**”项目“——”网络“——”浮动IP“选项卡,在页面右边单击”分配IP给项目“按钮,将弹出分配浮动IP页面,在页面中选择”资源池“”public“**,并单击”分配IP“按钮
    在这里插入图片描述

  • 页面将返回到浮动IP列表页面,显示成功分配的浮动IP地址列表
    在这里插入图片描述

  • 上图显示已经成功分配了IP地址172.24.4.154。下面将该浮动IP地址分配给云主机。单击浮动IP地址右边的”关联“按钮,并在弹出的”管理浮动IP的关联“页面中,选择”待连接的端口“下拉菜单,并选择”test“云主机。完成后单击”关联“按钮
    在这里插入图片描述

  • 根据浮动IP列表页面中的显示信息可得知,已经成功的将浮动IP地址和云主机绑定
    在这里插入图片描述

  • 切换到”项目“——”计算“——”实例“选项卡,可以看到云主机”test“绑定了浮动IP地址172.24.4.154
    在这里插入图片描述

  • 绑定浮动IP地址后,理论上可以从外部网络访问云主机,但是还需要配置安全组规则

五、添加安全组规则

  • 安全组的作用是保护云主机的安全,openstack有一个默认安全组default、从数据包方向分为入口和出口,访问云主机的入口流量必须要经过安全组规则放行流量

  • 依次单击**”项目“——”网络“——”安全组“选项阿卡,页面中间默认的安全组规则default,单击其右边的”管理规则“**按钮
    在这里插入图片描述

  • 在default安全组规则列表页面,默认存在四条规则
    在这里插入图片描述

  • 单击页面右上角**”+添加规则“按钮,在弹出的”添加规则“页面,选择”规则“为”ALL ICMP“,”方向“选择”入口“,其他保持默认,完成后单击”添加“**按钮
    在这里插入图片描述

  • 页面将返回到default安全组规则列表也买你,最后部分显示添加成功的安全组规则
    在这里插入图片描述

  • 配置完浮动IP地址和安全组规则后,尝试从外部网络(宿主机以外的网络,此处以宿主机代替)访问云主机。访问的目标云主机所绑定的浮动IP地址。测试的命令结果如下所示

[root@openstack ~]# ping 172.24.4.154
PING 172.24.4.154 (172.24.4.154) 56(84) bytes of data.
64 bytes from 172.24.4.154: icmp_seq=1 ttl=63 time=6.19 ms
64 bytes from 172.24.4.154: icmp_seq=2 ttl=63 time=0.969 ms
64 bytes from 172.24.4.154: icmp_seq=3 ttl=63 time=0.387 ms
^C
--- 172.24.4.154 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 0.387/2.517/6.195/2.611 ms
  • 为了可以让管理员从外部网络通过SSH协议管理云主机,同理与添加ICMP规则相同。通过添加规则,放行外部网络访问云主机的入口SSH协议流量。添加SSH规则页面入下图所示。
    在这里插入图片描述
    在这里插入图片描述

  • 管理员在宿主机尝试通过SSH命令远程登录云主机,测试命令及结果如下

[root@openstack ~]# ssh cirros@172.24.4.154
The authenticity of host '172.24.4.154 (172.24.4.154)' can't be established.
ECDSA key fingerprint is SHA256:Rx6vufr8QLw0DMtUdRYqnnEA64T8Dq7Wjtpnd7EphUM.
ECDSA key fingerprint is MD5:a1:ad:e5:18:20:18:dd:48:ef:2a:11:3e:ba:81:67:b7.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.24.4.154' (ECDSA) to the list of known hosts.
cirros@172.24.4.154's password:     # 密码gocubsgo
# 登录成功执行命令
$ ifconfig 
eth0      Link encap:Ethernet  HWaddr FA:16:3E:44:DB:9F  inet addr:192.168.93.172  Bcast:192.168.93.255  Mask:255.255.255.0inet6 addr: fe80::f816:3eff:fe44:db9f/64 Scope:LinkUP BROADCAST RUNNING MULTICAST  MTU:1442  Metric:1RX packets:125 errors:0 dropped:0 overruns:0 frame:0TX packets:183 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:14943 (14.5 KiB)  TX bytes:16879 (16.4 KiB)lo        Link encap:Local Loopback  inet addr:127.0.0.1  Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING  MTU:65536  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

六、创建密钥对

  • 密钥对是openstack提供的一个安全认证功能,用户可以在创建云主机的时候选择添加密钥对,管理员在访问云主机的时候可以免密码登录。免密码登录并不意味着安全性的降低,因为密钥对的攻破难度比密码要大很多

  • 依次打开**“项目”——“计算”——“密钥对”选项卡,在密钥对列表单击“+创建密钥对”**按钮
    在这里插入图片描述

  • 在**“创建密钥对”页面,输入密钥对名称“my-auth”,密钥类型选择“SSH密钥”完成后单击“创建密钥对”**按钮
    在这里插入图片描述

  • 密钥对创建完成后,浏览器会自动下载my-auth.pem文件。my-auth.pem将是该云主机的私钥文件。通过云主机绑定该密钥对,并复制该私钥文件到管理端,从而实现远程免密码连接云主机。下面通过宿主机使用密钥登录云主机

  • 在宿主机上创建cirros用户并设置权限

[root@openstack ~]# useradd cirros
[root@openstack ~]# mkdir /home/cirros/.ssh
  • 将my-auth.pem文件上传到宿主机/home/cirros/.ssh目录下,重命名为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
  • 要使用密钥对,需要重新创建一台云主机。如果资源不够可删除之前创建的测试云主机。然后选择刚刚创建的密钥对,完成后随便绑定一个个浮动IP地址到云主机。尝试在宿主机使用密钥对登录云主机
    在这里插入图片描述
    在这里插入图片描述

  • 执行一下命令使用密钥对登录

# 浮动IP地址
[root@openstack ~]# su - cirros 
[cirros@openstack ~]$ ssh 172.24.4.241
The authenticity of host '172.24.4.241 (172.24.4.241)' can't be established.
ECDSA key fingerprint is SHA256:qEKn0GKP9sqQqKlZQ5rp0c0wZvjFNGLfo7f6TqbFlXQ.
ECDSA key fingerprint is MD5:bc:9d:36:0d:44:cd:00:f0:6b:73:72:4a:36:81:9f:90.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.24.4.241' (ECDSA) to the list of known hosts.
$ ifconfig 
eth0      Link encap:Ethernet  HWaddr FA:16:3E:AB:EE:95  inet addr:192.168.93.120  Bcast:192.168.93.255  Mask:255.255.255.0inet6 addr: fe80::f816:3eff:feab:ee95/64 Scope:LinkUP BROADCAST RUNNING MULTICAST  MTU:1442  Metric:1RX packets:95 errors:0 dropped:0 overruns:0 frame:0TX packets:142 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:12905 (12.6 KiB)  TX bytes:13714 (13.3 KiB)lo        Link encap:Local Loopback  inet addr:127.0.0.1  Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING  MTU:65536  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)# 在上述命令中,通过ssh工具远程连接云主机没有输入任何密码信息,但是不具备私钥文件的客户端无法正常通过SSH协议远程连接云主机

七、创建及使用挂在卷

  • openstack通过Cinder提供块存储服务。管理员可根据需要对云主机添加卷。卷是一个块设备,由云主机挂载使用。本次的案例环境是一个单击环境。如果启用卷设备,那么Cinder将会占用所有的可用空间

  • 首先创建一个卷,依次打开“项目”——“卷”——“卷”选项卡,页面右边单击**“+创建卷”**按钮
    在这里插入图片描述

  • 在弹出的**”创建卷“页面中,填写卷名称为“test-lv”,大小为“2”,其他保持默认。完成后单击“创建卷”**按钮
    在这里插入图片描述

  • 页面将返回卷列表页面,显示当前创建成功的卷信息
    在这里插入图片描述

  • 卷创建好之后,还需要和实例管理才可以使用。单击上图中的**“编辑卷”旁边的下拉菜单,选择“管理连接”。在弹出的“管理已连接卷”页面,选择“连接到实例”为之前创建的云主机“test”。完成后单击“连接卷”**按钮
    在这里插入图片描述

  • 在随后的卷列表页面,显示当前卷已经连接到云主机test上的/dev/vdb设备
    在这里插入图片描述

  • 进入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: 92674365-8FD5-41C2-B173-9F3F1E3BA5A1Device     Start     End Sectors  Size Type
/dev/vda1  18432 2097118 2078687 1015M Linux filesystem
/dev/vda15  2048   18431   16384    8M EFI SystemPartition 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
  • 在云主机控制台中。对/dev/vdb进行分区、格式化,并挂载到/mnt目录
# 一路回车,步骤省略
$ sudo fdisk /dev/vdb
$ sudo mkfs /dev/vdb1
mke2fs 1.44.5 (15-Dec-2018)
Creating filesystem with 524032 4k blocks and 131072 inodes
Filesystem UUID: 851b4a73-8fd8-4f11-b2f5-9e3ae7e00804
Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912Allocating group tables: done                            
Writing inode tables: done                            
Writing superblocks and filesystem accounting information: done 
$ sudo mount /dev/vdb1 /mnt/
$ df -hT
Filesystem           Type            Size      Used Available Use% Mounted on
/dev                 devtmpfs      231.7M         0    231.7M   0% /dev
/dev/vda1            ext3          985.9M     31.4M    922.9M   3% /
tmpfs                tmpfs         238.8M         0    238.8M   0% /dev/shm
tmpfs                tmpfs         238.8M     80.0K    238.7M   0% /run
/dev/vdb1            ext2            2.0G      3.0M      1.9G   0% /mnt
  • 在/mnt目录写入一个test.txt文件
$ sudo vi /mnt/test.txt
2G
$ sudo cat /mnt/test.txt 
2G
  • 注意:创建卷的时候指定的容量大小并不会立即占用磁盘空间,当卷中有数据时才会真正占用

  • 当云主机的卷空间不足时,需要对卷进行扩容,扩容之前首先对卷进行分离,在卷列表页面中单击卷的**“管理连接”,在弹出的“管理已连接卷”页面,单击卷对应的“分离卷”**按钮
    在这里插入图片描述

  • 在确认分类卷页面继续单击**“分离卷”**按钮
    在这里插入图片描述

  • 当前卷断开后,在对应的下拉菜单中选择**“扩展卷”。在弹出的扩展卷页面中,填写卷的新大小为“3”.完成后单击“扩展卷”**按钮
    在这里插入图片描述

  • 返回到卷列表页面,页面中卷大小信息已经更新为3G
    在这里插入图片描述

  • 继续在卷对应的下拉菜单中选择**“管理连接”,重新连接到云主机实例“test”**
    在这里插入图片描述

  • 登录test云主机控制台,尝试访问之前创建的test.txt文件,test.txt文件已经不存在。同时,新出现了vdc分区,其大小为3G,执行以下命令和结果如下所示

$ ls /mnt/test.txt
ls: /mnt/test.txt: Input/output error
$ 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: 92674365-8FD5-41C2-B173-9F3F1E3BA5A1Device     Start     End Sectors  Size Type
/dev/vda1  18432 2097118 2078687 1015M Linux filesystem
/dev/vda15  2048   18431   16384    8M EFI SystemPartition table entries are not in disk order.Disk /dev/vdc: 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: 0x1dc7a442Device     Boot Start     End Sectors Size Id Type
/dev/vdc1        2048 4194303 4192256   2G 83 Linux
  • 扩展后多出的1G的空间默认没有被分区。即只扩展了磁盘大小,并没有改变分区大小。卸载/dev/vdb1分区,挂载/dev/vdc1分区。完成后查看test.txt内容正常。为了使用新扩展的1G空间,需要重启云主机
$ sudo umount -l /mnt
$ sudo mount /dev/vdc1 /mnt
$ sudo cat /mnt/test.txt 
2G
$ sudo reboot
  • 云主机启动后,卷将被重新识别为/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 -hT
Filesystem           Type            Size      Used Available Use% Mounted on
/dev                 devtmpfs      231.7M         0    231.7M   0% /dev
/dev/vda1            ext3          985.9M     31.4M    922.9M   3% /
tmpfs                tmpfs         238.8M         0    238.8M   0% /dev/shm
tmpfs                tmpfs         238.8M     76.0K    238.7M   0% 
/run
###################################################################
/dev/vdb2            ext2         1007.9M      1.3M    955.4M   0% /data
/dev/vdb1            ext2            2.0G      3.0M      1.9G   0% /mnt
###################################################################

八、快照管理

  • 快照可以分为基于实例的快照和基于卷的快照两种类型。实例快照保存在Glance中,而卷快照保存在本地存储

8.1、基于实例的快照

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

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

$ echo test > test.txt
$ cat test.txt 
test
$ ifconfig 
eth0      Link encap:Ethernet  HWaddr FA:16:3E:AB:EE:95  inet addr:192.168.93.172  Bcast:192.168.93.255  Mask:255.255.255.0inet6 addr: fe80::f816:3eff:feab:ee95/64 Scope:LinkUP BROADCAST RUNNING MULTICAST  MTU:1442  Metric:1RX packets:381 errors:0 dropped:0 overruns:0 frame:0TX packets:383 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:37682 (36.7 KiB)  TX bytes:37290 (36.4 KiB)lo        Link encap:Local Loopback  inet addr:127.0.0.1  Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING  MTU:65536  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
  • 然后创建一个实例快照,通过该实例快照启动一个全新的云主机。首先在**“实例列表”**页面,单击实例test01(使用任意没有挂载卷的云主机即可)对应的“创建快照”按钮
    在这里插入图片描述

  • 在弹出的“创建快照”页面,输入快照名称“test-snap”,并单击“创建快照”按钮
    在这里插入图片描述

  • 也买你将自动进入**“镜像”**页面,并在列表的最后生成一个新的镜像,其状态可能一直处于排队状态,可刷新页面解决
    在这里插入图片描述

  • 实例快照创建完成之后,通过该快照重新生成云主机。单击镜像后面的**“启动”按钮,在弹出的“创建实例”页面,实例名称添加“test01”。在“源”选项卡页面中,“选择源”下拉列表选择“实例快照”,并在下面选择名称“test-snap”**的快照,其他配置参数前面的步骤。完成后单击“创建实例”按钮
    在这里插入图片描述

在这里插入图片描述

  • 登录test01云主机控制台
[root@openstack ~]# ssh cirros@172.24.4.66
cirros@172.24.4.66's password: 		# 密码:gocubsgo
$ cat test.txt
test
# 上述命令输出结果显示,通过实例快照创建的云主机 test01和云主机test数据一致

8.2、基于卷的快照

  • 删除之前创建的**“test01”云主机,重新创建云主机“test01”,在云主机创建过程中在“源”选项卡页面选择“创建新卷”,大小1GB。创建完成后在”项目“——”卷“——”卷“**页面中出现一个新的卷,实例test01将存储在Cinder块里

  • 其他配置参考上面的步骤
    在这里插入图片描述
    在这里插入图片描述

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

[root@openstack ~]# ssh cirros@172.24.4.3
cirros@172.24.4.3's password: 	# 密码:gocubsgo
$ echo "test01" > test.txt
$ cat test.txt 
test01
  • 进入**”项目“——”卷“——”卷“页面,对上面的卷做一个快照,在编辑卷右侧下拉框选择”创建快照“,名称叫做”test01-lv-snap“,创建过程中会提示”这个卷已经被连接到某个实例了“。正确的做是先将卷分离出来,再创建卷快照。因为test01云主机是实现环境并且没有应用对卷实时写入文件,所以忽略该提示。直接单击”创建卷快照(强制)“**按钮
    在这里插入图片描述

  • 在卷快照列表页面可以看到创建成功的快照信息
    在这里插入图片描述

  • 通过该卷快照,在创建卷右侧下拉框选择**”创建实例“,实例名称”test02“,在”源“页面选择”卷快照“**,完成后登录test02云主机控制台执行如下命令

[root@openstack ~]# ssh cirros@172.24.4.100
cirros@172.24.4.100's password: 	# 密码:gocubsgo
$ cat test.txt
test01
$ ifconfig 
eth0      Link encap:Ethernet  HWaddr FA:16:3E:EE:18:7E  inet addr:192.168.93.126  Bcast:192.168.93.255  Mask:255.255.255.0inet6 addr: fe80::f816:3eff:feee:187e/64 Scope:LinkUP BROADCAST RUNNING MULTICAST  MTU:1442  Metric:1RX packets:128 errors:0 dropped:0 overruns:0 frame:0TX packets:158 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:15933 (15.5 KiB)  TX bytes:15881 (15.5 KiB)lo        Link encap:Local Loopback  inet addr:127.0.0.1  Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING  MTU:65536  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
  • 上述命令显示,通过卷快照生成的云主机除了IP地址外,和之前的云主机内容一致。同时,在卷列表页面将会多出一个test02使用的卷
    在这里插入图片描述

  • 无论是实例快照还是卷快照,都可以用来生成全新的云主机,在生产环境中通常通过快照对云主机进行备份或迁移

九、创建镜像

  • 本次使用的是官方下载的CentOS镜像(CentOS-7-x86_64-GenericCloud-1802.qcow2)。依次打开**”管理员“——”计算“——”镜像“选项卡页面,单击”创建镜像“按钮,填写镜像名称,在”文件“位置通过浏览器选择下载的镜像文件,镜像格式选择”QCOW2-QEMU模拟器“,完成后单击”创建镜像“**按钮
    在这里插入图片描述

  • 创建过程会出现进度条,创建成功页面如图
    在这里插入图片描述

  • 镜像导入成功后,可以通过该镜像生成基于CentOS 7操作系统的云主机,需要注意,要同时给该镜像选择或创建适合的实例类型。可以通过密钥对的方式免密码登录基于该镜像的语和主机,默认存在centos用户。

相关文章:

  • 2024.6.12 作业 xyt
  • Flutter 使用ffigen生成ffmpeg的dart接口
  • 大语言模型学习笔记-1
  • 【LLM之RAG】Self-RAG论文阅读笔记
  • 如何对stm32查看IO功能。
  • Android shell 常用 debug 命令
  • 代码整洁之道学习笔记
  • React+TS前台项目实战(一)-- 项目初始化配置及开此系列的初衷
  • 【纯血鸿蒙】——自适应布局如何实现?
  • 电商平台系统||电商|跨境电商项目的搭建都需要哪些电商API接口支撑
  • AI大模型的战场正在分化:通用大模型与垂直大模型你更青睐哪一方?
  • JVM垃圾回收器介绍
  • 图文解析ASN.1中BER编码:结构类型、编码方法、编码实例
  • C语言TC中有⼏个画矩形函数?怎么使⽤?
  • C++中的观察者模式
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • CentOS从零开始部署Nodejs项目
  • Gradle 5.0 正式版发布
  • Java编程基础24——递归练习
  • orm2 中文文档 3.1 模型属性
  • Python 反序列化安全问题(二)
  • session共享问题解决方案
  • Shell编程
  • Terraform入门 - 3. 变更基础设施
  • Windows Containers 大冒险: 容器网络
  • 讲清楚之javascript作用域
  • 老板让我十分钟上手nx-admin
  • 每天10道Java面试题,跟我走,offer有!
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 移动端唤起键盘时取消position:fixed定位
  • 应用生命周期终极 DevOps 工具包
  • 字符串匹配基础上
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • #单片机(TB6600驱动42步进电机)
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类的类构造函数)
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (待修改)PyG安装步骤
  • (四)Android布局类型(线性布局LinearLayout)
  • (五)MySQL的备份及恢复
  • .aanva
  • .Net 8.0 新的变化
  • .NET Framework杂记
  • .NET MAUI Sqlite程序应用-数据库配置(一)
  • .NET单元测试
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • ??如何把JavaScript脚本中的参数传到java代码段中
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • [ linux ] linux 命令英文全称及解释
  • [51nod1610]路径计数
  • [Angular 基础] - 自定义指令,深入学习 directive