金鱼哥RHCA回忆录:CL210管理存储--管理临时和持久存储+章节实验

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 第五章 管理存储--管理临时和持久存储+章节实验
🎹 个人简介:大家好,我是 金鱼哥,CSDN运维领域新星创作者,华为云·云享专家,阿里云社区·专家博主
📚个人资质: CCNA、HCNP、CSNA(网络分析师),软考初级、中级网络工程师、RHCSA、RHCE、RHCA、RHCI、ITIL😜
💬格言:努力不一定成功,但要想成功就必须努力🔥

🎈支持我:可点赞👍、可收藏⭐️、可留言📝

@[toc]

📜临时存储与持久存储

下表列出了临时存储和持久存储之间的主要区别单位。

临时存储单元和持久存储单元的比较

区别 临时存储 持久存储
存在 在创建实例时创建。 在成功执行用户的APl请求时创建。
持久性 在实例终止后不存在 实例终止后持续存在,直到租户用户手动删除它。
速度和延迟 当使用直接附加的存储进行验证时,提供更低的延迟和更好的响应能力。 提供更高的延迟,但能够处理更大的I/O工作负载。
最大容量 取决于可用的存储容量。 取决于存储容量适用的项目配额。
分级 使用实例风格的属性执行。 根据用户的请求执行。

当一个用户使用镜像创建一个实例时,该实例仅有的初始存储是临时存储,它有自己的优点和缺点,它是一种非常简单且易于使用的存储资源,缺乏存储分层和磁盘容量扩展等高级特性。存储在临时存储中的任何数据在其实例终止后都将失效。短暂的设备生命周期由OpenStack计算服务管理。

另一方面,持久性存储是在实例被终止之后仍然存在的卷。存储在持久卷中的数据即使在删除了在其上创建数据的实例之后仍然存在。它支持存储分层和容量扩展特性。持久存储根据它所服务的存储需求类型,由块存储、对象存储和共享文件系统服务管理。


📜临时存储和LIBVIRT

计算服务使用Red Hat Enterprise Linux主机的本地libvirt虚拟化平台,并在该平台上安装KVM作为管理程序,以管理后端实例的生命周期。这些实例作为KVM虚拟机存在,并且任何租户用户的APl指令都将通过Libvirt计算驱动程序转换为libvirtd服务。libvirtd服务然后根据用户的指令在虚拟机上执行操作。例如,如果用户提交通过OpenStack计算服务APl(本机libvirtd)启动实例的请求,计算节点的服务执行所需的操作来定义KVM虚拟机,并通过计算服务API确认用户的请求。

flavor决定了每个实例的大小。OpenStack计算服务的默认设置允许实例使用来自管理程序系统的计算和存储资源。但是,在实践中,实例使用共享存储池来支持它们的临时存储需求。flavor属性包括vcpu的数量、内存量。交换内存的数量、实例磁盘的大小和实例的额外临时磁盘大小,作为flavor定义的一部分创建的存储单元本质上都是临时的。

默认情况下,计算服务在计算节点的/var/lib/nova/instance/uuid/目录下创建表示临时存储的后端对象文件。如果Red Hat Ceph存储被用作OpenStack计算服务的后端存储提供者,后端对象存储在Ceph池中,通常被命名为vms。使用Ceph存储作为OpenStack计算服务的后端存储提供商并不会将临时存储转换为持久存储,理解这一点至关重要。当实例被删除时,临时存储将继续被撤销,而不管它是否被本地容纳在计算节点中,或者它是否使用了来自外部后端存储提供者(如Red Hat Ceph storage)的集中式存储池。


📜选择实例存储选项

在根据IOPS需求、性能需求和影响运行工作负载的管理需求等因素提供临时存储实例时,主要使用三种策略。策略包括:


📑在单独的服务器上运行具有共享文件系统的计算节点。

这种方法导致实例在与计算节点分离的节点上运行,节点的磁盘与计算节点分离。在这种情况下,如果计算节点执行有意或无意的操作而脱机,并且它们没有任何正在运行的实例,那么云的其余部分将不会受到影响。由于存储功能与计算节点解耦,存储服务器将继续正常运行,并向云的其余部分提供存储资源。

这种方法的优点之一是在计算节点故障期间很容易恢复实例、伸缩存储容量的灵活性以及专用存储系统的操作简单性。虽然使用此策略有优点,但也有缺点,比如由于网络访问存储而导致性能下降,以及由于来自其他不相关实例的流量而对性能造成I/O的影响。


📑在计算节点上运行具有共享文件系统的计算节点。

此选项要求每个计算节点都具有可观的存储容量。分布式文件系统是跨计算节点配置的,允许将它们的每个存储容量贡献给单个单元,并用作单个挂载点。如果环境需要,此选项允许OpenStack使用第三方存储解决方案进行伸缩。

此选项的缺点之一是,可以添加的最大磁盘数量限制在计算节点的机箱大小所允许的范围内。此外,存储资源的可用性随着计算节点的功能性数量的增加而减少。


📑运行没有共享文件系统的计算节点。

在这种方法中,计算节点为本地存储实例的磁盘。这种方法允许实例直接在磁盘上执行I/O操作,而不涉及到网络。从而提高了性能。

但是,在这种方法中,计算节点实例上的数据在节点发生故障时变得不可恢复。没有可伸缩性选项来服务额外的存储需求。即使您垂直伸缩计算节点的容量,也将被限制为节点的机箱大小所允许的最大容量。

在与计算节点解耦的存储服务器上运行共享文件系统的策略非常适合以可靠性和可伸缩性为优先级的情况。另一方面。如果您更关心存储性能,而不太关心数据持久性,那么您可以坚持前面提到的第二或第三种策略。

与实例的临时存储一样,实例的持久存储也有自己的适用性和用例。持久存储在处理重用的数据时非常有用。在Red Hat OpenStack平台环境中,持久存储的实现包括来自块存储服务的卷、来自对象存储服务的对象容器和来自共享文件系统服务的共享。每个卷、对象容器和共享都满足特定的存储需求。卷主要供实例使用。卷不像特定容器那样具有广泛的访问权限,但在本机安全特性方面具有对象容器所不具有的更多范围。对象容器意味着容错,在面向服务的基础设施的设计中更常见。共享也是一个持久存储,实例可以使用NFS、CIFS、CephFS和GlusterFS等网络共享协议作为远程文件系统访问该共享。


📜创建持久根磁盘

实例镜像的内容可以提取到持久卷,就像您可以提取到实例的临时存储一样。但是,通过任何实例对根文件系统所做的任何更改都将存在,直到租户用户删除持久卷。这也是使用持久根文件系统构造相同实例的一种方法。

下面的命令允许您创建包含根文件系统内容的持久卷。

在这里插入图片描述

前面的命令创建一个卷demo-vol,其大小设置为10 GB。rhel7镜像用作要提取到卷中的根文件系统内容的源。可以使用openstack server create命令的 --volume选项引用这个卷,以使用持久根文件系统卷启动实例。


📜理解实例迁移

迁移实例意味着将虚拟机从一个计算节点移动到另一个计算节点。迁移可以帮助确保即使在计算节点失败的情况下,实例中运行的服务仍然可用。迁移还有助于执行计算节点的计划维护。

迁移的两种基本类型是冷迁移和实时迁移。在冷迁移中,实例被关闭,然后迁移到另一个计算节点。默认配置设置以及在计算节点之间交换的SSH公钥足以启动实例的非活动迁移。在计算节点之间交换SSH公钥可以确保每个节点中的libvirtd服务可以与其对等节点通信。这种通信导致创建一个隧道,实例迁移通过该隧道以一种安全(加密)的方式进行。

在实时迁移中,实例在迁移到另一个计算节点时继续运行。实时迁移非常适合停机时间最少到零的工作负载。这样的工作负载要求实例中的应用程序在没有潜在中断的情况下运行。实时迁移可进一步分为以下几类:

  • 基于共享存储的实时迁移。在这种类型的迁移中,实例的内存中的数据被复制到目标计算节点。实例的临时存储容纳在源计算节点和目标计算节点共享的相同后端存储中,因此不需要将实例临时存储中的数据传输到目标计算节点。
  • 块动态迁移。在这种类型的迁移中,实例的内存中的数据以及实例临时存储中的数据从一个计算节点移动到另一个计算节点。要求进行这种传输的原因是,源计算节点和目标计算节点不共享相同的后端存储以容纳实例的临时存储,而是由计算节点存储实例临时存储的本地副本。由于来自实例的内存页和临时存储的数据增加了网络负载,因此这种类型的迁移需要更长的时间才能完成。
  • Volume-backed动态迁移。这种类型的迁移涉及使用持久卷而不是临时磁盘的实例。在这种类型的迁移中,只有实例的内存中的数据被转移到目标计算节点,因为卷通常保存在存储节点中,不需要随实例一起移动。这样可以避免网络负载过重,并提高延迟。

📜课本练习

  • 使用临时和持久根磁盘创建实例,并添加其他磁盘。
  • 比较和对比不同磁盘的存储结构和位置。
[student@workstation ~]$ lab storage-compare setup 
Setting up workstation for lab exercise work:

 • Verifying project: finance..................................  SUCCESS
 • Creating user env file: developer1-finance-rc...............  SUCCESS
 • Creating user env file: architect1-finance-rc...............  SUCCESS
 • Creating keypair: example-keypair...........................  SUCCESS
 . Verifying flavor: default...................................  SUCCESS
 . Verifying image: rhel7......................................  SUCCESS
 . Verifying internal network: finance-network1................  SUCCESS
 . Verifying subnet: finance-subnet1...........................  SUCCESS
 . Verifying external network: provider-datacentre.............  SUCCESS
 . Backing up Nova and Cinder config files.....................  SUCCESS
 . Creating router: finance-router1............................  SUCCESS
 . Verifying security group: default...........................  SUCCESS
 . Verifying security group rule: tcp..........................  SUCCESS
 . Verifying security group rule ICMP: icmp....................  SUCCESS
 . Creating floating ip from provider-datacentre pool..........  SUCCESS

📑1. 在workstation上,启动finance项目中的finance-server1实例,并跟踪表示该实例存储的后端对象。

在这里插入图片描述

[student@workstation ~(architect1-finance)]$ openstack server create --flavor default --image rhel7 --key-name example-keypair --nic net-id=finance-network1 --availability-zone nova:compute1.overcloud.example.com --wait finance-server1
+-------------------------------------+-------------------------------------------------+
| Field                               | Value
+-------------------------------------+-------------------------------------------------+
| OS-DCF:diskConfig                   | MANUAL
| OS-EXT-AZ:availability_zone         | nova
| OS-EXT-SRV-ATTR:host                | compute1.overcloud.example.com 
| OS-EXT-SRV-ATTR:hypervisor_hostname | compute1.overcloud.example.com 
| OS-EXT-SRV-ATTR:instance_name       | instance-00000002 
| OS-EXT-STS:power_state              | Running  
| OS-EXT-STS:task_state               | None  
| OS-EXT-STS:vm_state                 | active 
| OS-SRV-USG:launched_at              | 2020-10-25T22:55:39.000000 
| OS-SRV-USG:terminated_at            | None 
| accessIPv4                          | 
| accessIPv6                          | 
| addresses                           | finance-network1=192.168.1.4 
| adminPass                           | W7ThHDx3ckZt 
| config_drive                        | 
| created                             | 2020-10-25T22:55:02Z
| flavor                              | default (e04380ed-b027-4a72-a697-4307bc014b6c)
| hostId                              | c439f7c83de10e6a305fc9bc9caefdef52c9f503e4aa5733eae8573c 
| id                                  | c83e851d-a0f0-478d-b36e-2edd286355ab
| image                               | rhel7 (6b0128a9-4481-4ceb-b34e-ffe92e0dcfdd)
| key_name                            | example-keypair
| name                                | finance-server1
| progress                            | 0 
| project_id                          | 3c003f65d8d64914a053f178fbbf953c
| properties                          | 
| security_groups                     | name='default'
| status                              | ACTIVE
| updated                             | 2020-10-25T22:55:39Z 
| user_id                             | 69fb452af3dc1c1b54fb342df19d898fe3928e50cc930ebb8f112b1a59e91726
| volumes_attached                    | 
+-------------------------------------+-------------------------------------------------+

developer1,查找finance-server1实例的惟一ID。请注意实例的惟一ID。您将在以下步骤中使用这个ID。

[student@workstation ~(architect1-finance)]$ source developer1-finance-rc
[student@workstation ~(developer1-finance)]$ openstack server list
+--------------------------------------+-----------------+--------+------------------------------+-------+---------+
| ID                                   | Name            | Status | Networks                     | Image | Flavor  |
+--------------------------------------+-----------------+--------+------------------------------+-------+---------+
| c83e851d-a0f0-478d-b36e-2edd286355ab | finance-server1 | ACTIVE | finance-network1=192.168.1.4 | rhel7 | default |
+--------------------------------------+-----------------+--------+------------------------------+-------+---------+

将前面步骤中注意到的实例的惟一ID与Ceph池vm中的后端对象匹配。

[root@controller0 ~]# rados -p vms ls | grep c83e851d-a0f0-478d-b36e-2edd286355ab
rbd_id.c83e851d-a0f0-478d-b36e-2edd286355ab_disk

📑2. 删除finance-server1实例,并验证该实例的根磁盘不再存在于vms Ceph池中。

[student@workstation ~(developer1-finance)]$ openstack server delete finance-server1

[root@controller0 ~]# rados -p vms ls | grep c83e851d-a0f0-478d-b36e-2edd286355ab

📑3. 探索允许使用Ceph存储来容纳实例磁盘的OpenStack计算服务的配置设置。

使用Ceph存储作为后端或OpenStack计算服务可以避免计算节点的本地磁盘泛滥和出现可伸缩性问题。相反,它将磁盘存储到vms Ceph池中,并提供了与Ceph存储一样的更好的可伸缩性。

查看启用Ceph storage作为OpenStack计算服务的后端存储提供程序的设置。

[root@compute1 ~]# grep rbd /var/lib/config-data/puppet-generated/nova_libvirt/etc/nova/nova.conf 
rbd_user=openstack
rbd_secret_uuid=fe8e3db0-d6c3-11e8-a76d-52540001fac8
images_type=rbd
images_rbd_pool=vms
images_rbd_ceph_conf=/etc/ceph/ceph.conf

📑4. 调整OpenStack计算服务的配置设置

以使用默认方法将实例磁盘存储在本地计算节点而不是Ceph存储上。启动一个实例并验证该实例的根磁盘是否在计算节点上本地存在。删除实例并验证该实例的根磁盘在compute节点上不再存在。

注释掉配置

[root@compute1 ~]# grep rbd /var/lib/config-data/puppet-generated/nova_libvirt/etc/nova/nova.conf 
rbd_user=openstack
rbd_secret_uuid=fe8e3db0-d6c3-11e8-a76d-52540001fac8
#images_type=rbd
images_rbd_pool=vms
images_rbd_ceph_conf=/etc/ceph/ceph.conf

[root@compute1 ~]# docker ps --format="table {{.Names}}\t{{.Status}}"
NAMES                      STATUS
ovn_controller             Up 19 hours
ovn_metadata_agent         Up 19 hours (healthy)
logrotate_crond            Up 19 hours
nova_compute               Up 19 hours (healthy)
nova_migration_target      Up 19 hours
ceilometer_agent_compute   Up 19 hours
iscsid                     Up 19 hours
nova_libvirt               Up 19 hours
nova_virtlogd              Up 19 hours
[root@compute1 ~]# docker restart nova_compute
ova_compute
[root@compute1 ~]# docker ps --format="table {{.Names}}\t{{.Status}}" | grep nova
nova_compute               Up 10 seconds (health: starting)
nova_migration_target      Up 19 hours
nova_libvirt               Up 19 hours
nova_virtlogd              Up 19 hours
[root@compute1 ~]# docker ps --format="table {{.Names}}\t{{.Status}}" | grep nova
nova_compute               Up About a minute (healthy)
nova_migration_target      Up 19 hours
nova_libvirt               Up 19 hours
nova_virtlogd              Up 19 hours

作为architect1,使用以下参数启动实例。

[student@workstation ~(architect1-finance)]$ openstack server create --flavor default --image rhel7 --key-name example-keypair --nic net-id=finance-network1 --availability-zone nova:compute1.overcloud.example.com --wait finance-server1
+-------------------------------------+-------------------------------------------------+
| Field                               | Value
+-------------------------------------+-------------------------------------------------+
| OS-DCF:diskConfig                   | MANUAL
| OS-EXT-AZ:availability_zone         | nova  
| OS-EXT-SRV-ATTR:host                | compute1.overcloud.example.com                   
| OS-EXT-SRV-ATTR:hypervisor_hostname | compute1.overcloud.example.com                  
…………

[student@workstation ~(developer1-finance)]$ openstack server list -c ID -c Name
+--------------------------------------+-----------------+
| ID                                   | Name            |
+--------------------------------------+-----------------+
| c5ddb2d0-0ad8-422d-affb-5f3fb3d234c6 | finance-server1 |
+--------------------------------------+-----------------+

[root@compute1 ~]# ll /var/lib/nova/instances/c5ddb2d0-0ad8-422d-affb-5f3fb3d234c6 -h
total 29M
-rw-------. 1 root  root  43K Oct 26 00:20 console.log
-rw-r--r--. 1 qemu  qemu  29M Oct 26 00:28 disk
-rw-r--r--. 1 42436 42436  79 Oct 26 00:19 disk.info

📑5. 删除finance-server1实例,并验证该实例的根磁盘在计算节点上不再存在。

[student@workstation ~(developer1-finance)]$ openstack server delete finance-server1

[root@compute1 ~]# ll /var/lib/nova/instances/
total 4
drwxr-xr-x. 2 42436 42436 54 Oct 25 06:55 _base
-rw-r--r--. 1 42436 42436 53 Oct 25 23:54 compute_nodes
drwxr-xr-x. 2 42436 42436 93 Oct 25 06:54 locks

📑6. 在前面的步骤中,您已经处理了一个实例的临时根磁盘。练习的以下步骤将帮助您了解如何在实例中使用持久根磁盘。

在controller0查看OpenStack Block存储服务的设置,它帮助使用Ceph存储来容纳持久卷。使用rhel7镜像创建一个持久卷。确认卷存在于卷Ceph池中。启动一个实例,将新卷作为它的根磁盘。

查看OpenStack块存储服务的后端存储提供程序。

[root@controller0 ~]# crudini --get /var/lib/config-data/puppet-generated/cinder/etc/cinder/cinder.conf DEFAULT enabled_backends
tripleo_ceph

查看OpenStack块存储服务配置文件的tripleo_ceph INI部分下的设置。

[root@controller0 ~]# egrep -A 6 '^\[tripleo_ceph\]' /var/lib/config-data/puppet-generated/cinder/etc/cinder/cinder.conf 
[tripleo_ceph]
backend_host=hostgroup
volume_backend_name=tripleo_ceph
volume_driver=cinder.volume.drivers.rbd.RBDDriver
rbd_ceph_conf=/etc/ceph/ceph.conf
rbd_user=openstack
rbd_pool=volumes

作为developer1,使用rhel7镜像创建卷。验证卷是否成功创建。

[student@workstation ~(developer1-finance)]$ openstack volume create --size 10 --image rhel7 finance-vol1
+---------------------+-----------------------------------------------------------------+
| Field               | Value
+---------------------+-----------------------------------------------------------------+
| attachments         | [] 
| availability_zone   | nova 
| bootable            | false
| consistencygroup_id | None
| created_at          | 2020-10-26T04:54:05.000000 
| description         | None 
| encrypted           | False 
| id                  | c885e97f-b6fe-431a-ad11-44096ebc5b59
| multiattach         | False
| name                | finance-vol1
| properties          | 
| replication_status  | None
| size                | 10 
| snapshot_id         | None
| source_volid        | None
| status              | creating
| type                | None
| updated_at          | None 
| user_id             | e4035d555f6b88cf42ca4cacb9fa9999dca9787392222d2eb0875e4e34e6d76f
+---------------------+-----------------------------------------------------------------+

[student@workstation ~(developer1-finance)]$ openstack volume list
+--------------------------------------+--------------+-----------+------+-------------+
| ID                                   | Name         | Status    | Size | Attached to |
+--------------------------------------+--------------+-----------+------+-------------+
| c885e97f-b6fe-431a-ad11-44096ebc5b59 | finance-vol1 | available |   10 |             |
+--------------------------------------+--------------+-----------+------+-------------+

注意:在执行openstack卷创建命令之后,等待多两分钟,将rhel7镜像中的内容提取到finance-vol1卷。您还可以使用watch openstack volume list命令监视finance-vol1卷的实时状态。

从前面的openstack volume list命令的输出中复制卷的惟一ID,以便与卷Ceph池中的对象进行比较。唯一的ID帮助识别卷Ceph池容纳的卷。

验证Ceph池卷是否有一个表示卷finance-vol1的对象。使用前面步骤中提到的卷的惟一ID。

[root@controller0 ~]# rados -p volumes ls | grep c885e97f-b6fe-431a-ad11-44096ebc5b59
rbd_id.volume-c885e97f-b6fe-431a-ad11-44096ebc5b59

作为developer1,使用以下参数启动实例。

在这里插入图片描述

[student@workstation ~(developer1-finance)]$ openstack server create --flavor default --volume finance-vol1 --key-name example-keypair --nic net-id=finance-network1  --wait finance-server2
+-----------------------------+---------------------------------------------------------+
| Field                       | Value
+-----------------------------+---------------------------------------------------------+
| OS-DCF:diskConfig           | MANUAL
| OS-EXT-AZ:availability_zone | nova 
| OS-EXT-STS:power_state      | Running
| OS-EXT-STS:task_state       | None
| OS-EXT-STS:vm_state         | active
| OS-SRV-USG:launched_at      | 2020-10-26T05:08:45.000000
| OS-SRV-USG:terminated_at    | None 
| accessIPv4                  | 
| accessIPv6                  | 
| addresses                   | finance-network1=192.168.1.9
| adminPass                   | s8UVkizYRwV5 
| config_drive                | 
| created                     | 2020-10-26T05:08:31Z
| flavor                      | default (e04380ed-b027-4a72-a697-4307bc014b6c)
| hostId                      | 3eb57302ddddc3af1fdc763eee541c699f0866f6458e3b5c9a722611
| id                          | 00339279-d1df-4dea-a655-489055744ba3 
| image                       |
| key_name                    | example-keypair 
| name                        | finance-server2 
| progress                    | 0 
| project_id                  | 3c003f65d8d64914a053f178fbbf953c
| properties                  | 
| security_groups             | name='default'
| status                      | ACTIVE 
| updated                     | 2020-10-26T05:08:45Z 
| user_id                     | e4035d555f6b88cf42ca4cacb9fa9999dca9787392222d2eb0875e4e34e6d76f |
| volumes_attached            | id='c885e97f-b6fe-431a-ad11-44096ebc5b59' 
+-----------------------------+---------------------------------------------------------+

📑7. 使用任何可用的浮动IP地址访问新的实例finance-server2。创建一个包含任意文本的文本文件。删除实例。

[student@workstation ~(developer1-finance)]$ openstack floating ip list 
+--------------------------------------+---------------------+------------------+------+--------------------------------------+----------------------------------+
| ID                                   | Floating IP Address | Fixed IP Address | Port | Floating Network                     | Project                          |
+--------------------------------------+---------------------+------------------+------+--------------------------------------+----------------------------------+
| ad9cbb52-e609-468b-85e8-01b00a794925 | 172.25.250.103      | None             | None | fc5472ee-98d9-4f6b-9bc9-544ca18aefb3 | 3c003f65d8d64914a053f178fbbf953c |
+--------------------------------------+---------------------+------------------+------+--------------------------------------+----------------------------------+
[student@workstation ~(developer1-finance)]$ openstack server add floating ip finance-server2 172.25.250.103
[student@workstation ~(developer1-finance)]$ ssh 172.25.250.103
Warning: Permanently added '172.25.250.103' (ECDSA) to the list of known hosts.
[cloud-user@finance-server2 ~]$ sudo -i
[root@finance-server2 ~]# echo Testing >> /test.txt
[root@finance-server2 ~]# sync 

重要:sync命令将内容从Linux缓冲区缓存刷新到磁盘。跳过此命令可能会损失所创建的文本文件的内容。

[root@finance-server2 ~]# exit
logout
[cloud-user@finance-server2 ~]$ exit
logout
Connection to 172.25.250.103 closed.
[student@workstation ~(developer1-finance)]$ openstack server delete finance-server2
[root@controller0 ~]# rados -p volumes ls | grep c885e97f-b6fe-431a-ad11-44096ebc5b59
rbd_id.volume-c885e97f-b6fe-431a-ad11-44096ebc5b59

注意:无论实例终止与否,卷都存在。它充当实例的持久存储


📑8. 使用与实例的引导磁盘相同的finance-vol1创建一个新实例,并确认在前面步骤中使用任意文本创建的文件仍然存在。

在这里插入图片描述

[student@workstation ~(developer1-finance)]$ openstack server create --flavor default --volume finance-vol1 --key-name example-keypair --nic net-id=finance-network1  --wait finance-server2
+-----------------------------+---------------------------------------------------------+
| Field                       | Value
+-----------------------------+---------------------------------------------------------+
| OS-DCF:diskConfig           | MANUAL
| OS-EXT-AZ:availability_zone | nova 
| OS-EXT-STS:power_state      | Running 
| OS-EXT-STS:task_state       | None
| OS-EXT-STS:vm_state         | active
| OS-SRV-USG:launched_at      | 2020-10-26T05:22:41.000000
| OS-SRV-USG:terminated_at    | None 
| accessIPv4                  | 
| accessIPv6                  | 
| addresses                   | finance-network1=192.168.1.5
| adminPass                   | KLzUjKwd8meR
| config_drive                | 
| created                     | 2020-10-26T05:22:29Z 
| flavor                      | default (e04380ed-b027-4a72-a697-4307bc014b6c)
| hostId                      | 3eb57302ddddc3af1fdc763eee541c699f0866f6458e3b5c9a722611
| id                          | 80908fe1-b1d9-47ba-9cbc-0a86a4551d67
| image                       | 
| key_name                    | example-keypair
| name                        | finance-server2 
| progress                    | 0 
| project_id                  | 3c003f65d8d64914a053f178fbbf953c
| properties                  | 
| security_groups             | name='default'
| status                      | ACTIVE
| updated                     | 2020-10-26T05:22:41Z
| user_id                     | e4035d555f6b88cf42ca4cacb9fa9999dca9787392222d2eb0875e4e34e6d76f
| volumes_attached            | id='c885e97f-b6fe-431a-ad11-44096ebc5b59'
+-----------------------------+---------------------------------------------------------+

[student@workstation ~(developer1-finance)]$ openstack floating ip list 
+--------------------------------------+---------------------+------------------+------+--------------------------------------+----------------------------------+
| ID                                   | Floating IP Address | Fixed IP Address | Port | Floating Network                     | Project                          |
+--------------------------------------+---------------------+------------------+------+--------------------------------------+----------------------------------+
| ad9cbb52-e609-468b-85e8-01b00a794925 | 172.25.250.103      | None             | None | fc5472ee-98d9-4f6b-9bc9-544ca18aefb3 | 3c003f65d8d64914a053f178fbbf953c |
+--------------------------------------+---------------------+------------------+------+--------------------------------------+----------------------------------+

[student@workstation ~(developer1-finance)]$ openstack server add floating ip finance-server2 172.25.250.103
[student@workstation ~(developer1-finance)]$ ssh 172.25.250.103
Last login: Mon Oct 26 01:13:33 2020 from workstation.lab.example.com
[cloud-user@finance-server2 ~]$ cat /test.txt 
Testing

📑9. 创建容量为1 GB的新卷,并将其附加到finance-server2实例。

[student@workstation ~(developer1-finance)]$ openstack volume create --size 1 finance-vol2
+---------------------+-----------------------------------------------------------------+
| Field               | Value
+---------------------+-----------------------------------------------------------------+
| attachments         | []
| availability_zone   | nova
| bootable            | false
| consistencygroup_id | None
| created_at          | 2020-10-26T05:49:35.000000
| description         | None
| encrypted           | False
| id                  | 8abbcf20-02ac-4cf2-831b-0f3d9dc72a64
| multiattach         | False
| name                | finance-vol2
| properties          | 
| replication_status  | None
| size                | 1
| snapshot_id         | None 
| source_volid        | None 
| status              | creating 
| type                | None 
| updated_at          | None
| user_id             | e4035d555f6b88cf42ca4cacb9fa9999dca9787392222d2eb0875e4e34e6d76f
+---------------------+-----------------------------------------------------------------+

[student@workstation ~(developer1-finance)]$ openstack server add volume finance-server2 finance-vol2
[student@workstation ~(developer1-finance)]$ ssh 172.25.250.103
Last login: Mon Oct 26 01:25:33 2020 from workstation.lab.example.com
[cloud-user@finance-server2 ~]$ lsblk
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  10G  0 disk 
└─vda1 253:1    0  10G  0 part /
vdb    253:16   0   1G  0 disk

📑10. 确认在表示finance-vo12卷的卷Ceph池中有一个新的卷对象。

[student@workstation ~(developer1-finance)]$ openstack volume list
+--------------------------------------+--------------+--------+------+------------------------------------------+
| ID                                   | Name         | Status | Size | Attached to                              |
+--------------------------------------+--------------+--------+------+------------------------------------------+
| 8abbcf20-02ac-4cf2-831b-0f3d9dc72a64 | finance-vol2 | in-use |    1 | Attached to finance-server2 on /dev/vdb  |
| c885e97f-b6fe-431a-ad11-44096ebc5b59 | finance-vol1 | in-use |   10 | Attached to finance-server2 on /dev/vda  |
+--------------------------------------+--------------+--------+------+------------------------------------------+
[root@controller0 ~]# rados -p volumes ls | grep 8abbcf20-02ac-4cf2-831b-0f3d9dc72a64
rbd_id.volume-8abbcf20-02ac-4cf2-831b-0f3d9dc72a64

📑11. 删除finance-server2实例。删除financial -vol1和financial -vol2卷。确认卷在卷Ceph池中不再存在。

[student@workstation ~(developer1-finance)]$ openstack server delete finance-server2
[student@workstation ~(developer1-finance)]$ openstack volume delete finance-vol1 finance-vol2

[root@controller0 ~]# rados -p volumes ls
rbd_directory
rbd_info

📑清除实验

[student@workstation ~]$ lab storage-compare cleanup

📜章节实验

  • 管理OpenStack块存储。
  • 管理OpenStack共享文件系统。
[student@workstation ~]$ lab storage-review setup 
Setting up workstation for lab exercise work:

 • Verifying project: production...............................  SUCCESS
 • Creating user env file: operator1-production-rc.............  SUCCESS
 • Creating user env file: architect1-production-rc............  SUCCESS
 • Creating keypair: operator1-keypair.........................  SUCCESS
 . Verifying flavor: default...................................  SUCCESS
 . Verifying image: rhel7......................................  SUCCESS
 . Verifying internal network: production-network1.............  SUCCESS
 . Verifying subnet: production-subnet1........................  SUCCESS
 . Verifying external network: provider-datacentre.............  SUCCESS
 . Backing up Nova and Cinder config files.....................  SUCCESS
 . Creating router: production-router1.........................  SUCCESS
 . Verifying security group: default...........................  SUCCESS
 . Verifying security group rule: tcp..........................  SUCCESS
 . Verifying security group rule ICMP: icmp....................  SUCCESS
 . Creating floating IP: 172.25.250.151........................  SUCCESS
 • Creating local directory: /home/student/manila..............  SUCCESS
 • Creating user data file: user-data.file.....................  SUCCESS
 . Backing up SSH config.......................................  SUCCESS
 . Adjusting SSH config........................................  SUCCESS

📑1. 作为operator1,使用rhel7镜像在production项目中创建一个名为production-volume1的10 GB可引导卷。

[student@workstation ~]$ source operator1-production-rc 
[student@workstation ~(operator1-production)]$ openstack volume create --image rhel7 --size 10 production-volume1
+---------------------+-----------------------------------------------------------------+
| Field               | Value
+---------------------+-----------------------------------------------------------------+
| attachments         | []
| availability_zone   | nova 
| bootable            | false
| consistencygroup_id | None
| created_at          | 2020-10-26T06:19:35.000000
| description         | None
| encrypted           | False 
| id                  | f00c04a9-d211-4fe8-8cba-50d8cf7021fe
| multiattach         | False 
| name                | production-volume1
| properties          | 
| replication_status  | None
| size                | 10 
| snapshot_id         | None
| source_volid        | None
| status              | creating
| type                | None
| updated_at          | None
| user_id             | ac8f19029cdf35fa7083687862bf1235d5a10f5b98632be09d323616c640985e
+---------------------+-----------------------------------------------------------------+

[student@workstation ~(operator1-production)]$ openstack volume list -c Name -c Status
+--------------------+-------------+
| Name               | Status      |
+--------------------+-------------+
| production-volume1 | downloading |
+--------------------+-------------+

[student@workstation ~(operator1-production)]$ openstack volume list -c Name -c Status
+--------------------+-----------+
| Name               | Status    |
+--------------------+-----------+
| production-volume1 | available |
+--------------------+-----------+

📑2. 作为operator1,在production项目中创建一个名为production-volume2的空1GB卷。

[student@workstation ~(operator1-production)]$ openstack volume create --size 1 production-volume2
+---------------------+-----------------------------------------------------------------+
| Field               | Value
+---------------------+-----------------------------------------------------------------+
| attachments         | []
| availability_zone   | nova
| bootable            | false
| consistencygroup_id | None
| created_at          | 2020-10-26T06:22:58.000000
| description         | None
| encrypted           | False
| id                  | 1d377d0d-0241-409f-94b7-b09f47fbf2d4
| multiattach         | False
| name                | production-volume2
| properties          | 
| replication_status  | None
| size                | 1 
| snapshot_id         | None
| source_volid        | None
| status              | creating
| type                | None
| updated_at          | None 
| user_id             | ac8f19029cdf35fa7083687862bf1235d5a10f5b98632be09d323616c640985e
+---------------------+-----------------------------------------------------------------+

[student@workstation ~(operator1-production)]$ openstack volume list -c Name -c Status
+--------------------+-----------+
| Name               | Status    |
+--------------------+-----------+
| production-volume2 | available |
| production-volume1 | available |
+--------------------+-----------+

📑3. 验证新卷是否作为对象存在于卷Ceph池中。

[student@workstation ~(operator1-production)]$ openstack volume list -c Name -c Status -c ID
+--------------------------------------+--------------------+-----------+
| ID                                   | Name               | Status    |
+--------------------------------------+--------------------+-----------+
| 1d377d0d-0241-409f-94b7-b09f47fbf2d4 | production-volume2 | available |
| f00c04a9-d211-4fe8-8cba-50d8cf7021fe | production-volume1 | available |
+--------------------------------------+--------------------+-----------+
[root@controller0 ~]# rados -p volumes ls | grep f00c04a9-d211-4fe8-8cba-50d8cf7021fe
rbd_id.volume-f00c04a9-d211-4fe8-8cba-50d8cf7021fe
[root@controller0 ~]# rados -p volumes ls | grep 1d377d0d-0241-409f-94b7-b09f47fbf2d4
rbd_id.volume-1d377d0d-0241-409f-94b7-b09f47fbf2d4

📑4. 作为operator1,使用production-volume1可引导卷在production项目中使用以下参数启动一个实例。

在这里插入图片描述

[student@workstation ~(operator1-production)]$ openstack server create --flavor default --volume production-volume1 --key-name operator1-keypair --nic net-id=production-network1  --wait production-server1
+-----------------------------+---------------------------------------------------------+
| Field                       | Value
+-----------------------------+---------------------------------------------------------+
| OS-DCF:diskConfig           | MANUAL
| OS-EXT-AZ:availability_zone | nova
| OS-EXT-STS:power_state      | Running
| OS-EXT-STS:task_state       | None
| OS-EXT-STS:vm_state         | active
| OS-SRV-USG:launched_at      | 2020-10-26T06:28:28.000000 
| OS-SRV-USG:terminated_at    | None 
| accessIPv4                  | 
| accessIPv6                  | 
| addresses                   | production-network1=192.168.1.5
| adminPass                   | GA6LZ7Nq6Qqc
| config_drive                | 
| created                     | 2020-10-26T06:28:15Z 
| flavor                      | default (e04380ed-b027-4a72-a697-4307bc014b6c)
| hostId                      | 0e79b8aaaf2efd191b1666446b5ee623aa403d474e8c199f8811250d
| id                          | 50df28d8-f973-40d3-a93c-f3ea4e139746
| image                       | 
| key_name                    | operator1-keypair
| name                        | production-server1 
| progress                    | 0
| project_id                  | 294ad7735e6646d7bb908e32de8582c3 
| properties                  | 
| security_groups             | name='default'
| status                      | ACTIVE
| updated                     | 2020-10-26T06:28:28Z
| user_id                     | ac8f19029cdf35fa7083687862bf1235d5a10f5b98632be09d323616c640985e
| volumes_attached            | id='f00c04a9-d211-4fe8-8cba-50d8cf7021fe'
+-----------------------------+---------------------------------------------------------+

[student@workstation ~(operator1-production)]$ openstack server add volume production-server1 production-volume2
[student@workstation ~(operator1-production)]$ openstack volume list
+--------------------------------------+--------------------+--------+------+---------------------------------------------+
| ID                                   | Name               | Status | Size | Attached to                                 |
+--------------------------------------+--------------------+--------+------+---------------------------------------------+
| 1d377d0d-0241-409f-94b7-b09f47fbf2d4 | production-volume2 | in-use |    1 | Attached to production-server1 on /dev/vdb  |
| f00c04a9-d211-4fe8-8cba-50d8cf7021fe | production-volume1 | in-use |   10 | Attached to production-server1 on /dev/vda  |
+--------------------------------------+--------------------+--------+------+---------------------------------------------+

📑5. 访问production-server1实例,并验证空的production-volume2卷已成功连接到production-server1实例。

[student@workstation ~(operator1-production)]$ openstack floating ip list
+--------------------------------------+---------------------+------------------+------+--------------------------------------+----------------------------------+
| ID                                   | Floating IP Address | Fixed IP Address | Port | Floating Network                     | Project                          |
+--------------------------------------+---------------------+------------------+------+--------------------------------------+----------------------------------+
| 88e06a95-2661-448e-8e0b-24aa7da08313 | 172.25.250.151      | None             | None | fc5472ee-98d9-4f6b-9bc9-544ca18aefb3 | 294ad7735e6646d7bb908e32de8582c3 |
+--------------------------------------+---------------------+------------------+------+--------------------------------------+----------------------------------+
[student@workstation ~(operator1-production)]$ openstack server add floating ip production-server1 172.25.250.151
[student@workstation ~(operator1-production)]$ ssh 172.25.250.151
Warning: Permanently added '172.25.250.151' (ECDSA) to the list of known hosts.
[cloud-user@production-server1 ~]$ lsblk
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  10G  0 disk 
└─vda1 253:1    0  10G  0 part /
vdb    253:16   0   1G  0 disk

📑6. 卷挂载测试

在production-volume2中创建一个1 GB的分区,在production-server1实例的分区表中作为设备vdb。使用xfs文件系统类型格式化分区,并将其临时挂载到/mnt上。创建文件/mnt/hello.txt,其中hello作为文本消息。文件/mnt/hello.txt被调整到production-volume2中,/mnt充当卷的挂载点。另外,创建文件/hello2。以hello2作为文本消息的txt。文件/hello2.txt被调整到production-volume1中,因为在production-server1实例中使用该卷作为根文件系统。

[cloud-user@production-server1 ~]$ sudo parted /dev/vdb
GNU Parted 3.1
Using /dev/vdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel msdos                                                    
(parted) mkpart primary 0 1G
(parted) p                                                                
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 1074MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start  End     Size    Type     File system  Flags
 1      512B   1074MB  1074MB  primary

(parted) q                                                                
Information: You may need to update /etc/fstab.
[cloud-user@production-server1 ~]$ sudo mkfs.xfs /dev/vdb1
meta-data=/dev/vdb1              isize=512    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=262143, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=855, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[cloud-user@production-server1 ~]$ sudo mount /dev/vdb1 /mnt
[cloud-user@production-server1 ~]$ sudo df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        10G  1.5G  8.6G  15% /
devtmpfs        898M     0  898M   0% /dev
tmpfs           920M     0  920M   0% /dev/shm
tmpfs           920M   17M  903M   2% /run
tmpfs           920M     0  920M   0% /sys/fs/cgroup
tmpfs           184M     0  184M   0% /run/user/1001
/dev/vdb1      1021M   33M  989M   4% /mnt
[cloud-user@production-server1 ~]$ sudo -i
[root@production-server1 ~]# echo hello > /mnt/hello.txt
[root@production-server1 ~]# echo hello2 > /hello2.txt
[root@production-server1 ~]# sync

📑7.删除现有的production-server1实例,并使用以下参数创建一个新的实例,将production-volume1作为可引导的卷。

在这里插入图片描述

[student@workstation ~(operator1-production)]$ openstack server delete production-server1
[student@workstation ~(operator1-production)]$ openstack server create --flavor default --volume production-volume1 --key-name operator1-keypair --nic net-id=production-network1  --wait production-server1
+-----------------------------+---------------------------------------------------------+
| Field                       | Value
+-----------------------------+---------------------------------------------------------+
| OS-DCF:diskConfig           | MANUAL 
| OS-EXT-AZ:availability_zone | nova 
| OS-EXT-STS:power_state      | Running
| OS-EXT-STS:task_state       | None 
| OS-EXT-STS:vm_state         | active 
| OS-SRV-USG:launched_at      | 2020-10-26T06:46:27.000000
| OS-SRV-USG:terminated_at    | None
| accessIPv4                  |
| accessIPv6                  | 
| addresses                   | production-network1=192.168.1.3
| adminPass                   | zLG2GJBokcC3
| config_drive                | 
| created                     | 2020-10-26T06:46:17Z
| flavor                      | default (e04380ed-b027-4a72-a697-4307bc014b6c) 
| hostId                      | 0e79b8aaaf2efd191b1666446b5ee623aa403d474e8c199f8811250d
| id                          | b1600b07-0e30-49fd-8e2c-5cf3a70ee8c2 
| image                       | 
| key_name                    | operator1-keypair
| name                        | production-server1 
| progress                    | 0
| project_id                  | 294ad7735e6646d7bb908e32de8582c3
| properties                  | 
| security_groups             | name='default'
| status                      | ACTIVE 
| updated                     | 2020-10-26T06:46:27Z
| user_id                     | ac8f19029cdf35fa7083687862bf1235d5a10f5b98632be09d323616c640985e
| volumes_attached            | id='f00c04a9-d211-4fe8-8cba-50d8cf7021fe'
+-----------------------------+---------------------------------------------------------+

[student@workstation ~(operator1-production)]$ openstack server add volume production-server1 production-volume2
[student@workstation ~(operator1-production)]$ openstack volume list
+--------------------------------------+--------------------+--------+------+---------------------------------------------+
| ID                                   | Name               | Status | Size | Attached to                                 |
+--------------------------------------+--------------------+--------+------+---------------------------------------------+
| 1d377d0d-0241-409f-94b7-b09f47fbf2d4 | production-volume2 | in-use |    1 | Attached to production-server1 on /dev/vdb  |
| f00c04a9-d211-4fe8-8cba-50d8cf7021fe | production-volume1 | in-use |   10 | Attached to production-server1 on /dev/vda  |
+--------------------------------------+--------------------+--------+------+---------------------------------------------+

📑8. 确认您先前创建的文本文件是否持久保存,以及production-server1实例中的所有内容。

[student@workstation ~(operator1-production)]$ openstack server add floating ip production-server1 172.25.250.151
[student@workstation ~(operator1-production)]$ ssh 172.25.250.151
Last login: Mon Oct 26 02:34:42 2020 from workstation.lab.example.com
[cloud-user@production-server1 ~]$ lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda    253:0    0   10G  0 disk 
└─vda1 253:1    0   10G  0 part /
vdb    253:16   0    1G  0 disk 
└─vdb1 253:17   0 1024M  0 part 
[cloud-user@production-server1 ~]$ sudo mount /dev/vdb1 /mnt/
[cloud-user@production-server1 ~]$ cat /mnt/hello.txt 
hello
[cloud-user@production-server1 ~]$ cat /hello2.txt 
hello2

📑9. 作为operator1,在production项目中创建1 GB共享文件系统。

将共享文件系统的名称设置为production-share1,类型设置为cephfstype。在创建production-share1时使用cephfs协议。对于管理操作(比如管理共享文件系统的类型),可以使用architect1租户用户。

[student@workstation ~(operator1-production)]$ source architect1-production-rc 
[student@workstation ~(architect1-production)]$ manila service-list
+----+------------------+------------------+------+---------+-------+-------------------+
| Id | Binary           | Host             | Zone | Status  | State | Updated_at
+----+------------------+------------------+------+---------+-------+-------------------+
| 1  | manila-scheduler | hostgroup        | nova | enabled | up    | 2020-10-26T07:02:02.000000 |
| 2  | manila-share     | hostgroup@cephfs | nova | enabled | up    | 2020-10-26T07:02:03.000000 |
+----+------------------+------------------+------+---------+-------+-------------------+
[student@workstation ~(architect1-production)]$ manila type-create cephfstype false
+----------------------+--------------------------------------+
| Property             | Value                                |
+----------------------+--------------------------------------+
| required_extra_specs | driver_handles_share_servers : False |
| Name                 | cephfstype                           |
| Visibility           | public                               |
| is_default           | -                                    |
| ID                   | 38877b67-366c-4abe-a273-365a522b88bc |
| optional_extra_specs |                                      |
| Description          | None                                 |
+----------------------+--------------------------------------+
[student@workstation ~(architect1-production)]$ source operator1-production-rc 
[student@workstation ~(operator1-production)]$ manila create --name production-share1 --share-type cephfstype cephfs 1
+---------------------------------------+-----------------------------------------------+
| Property                              | Value
+---------------------------------------+-----------------------------------------------+
| status                                | creating
| share_type_name                       | cephfstype
| description                           | None
| availability_zone                     | None 
| share_network_id                      | None
| share_group_id                        | None
| revert_to_snapshot_support            | False
| access_rules_status                   | active
| snapshot_id                           | None
| create_share_from_snapshot_support    | False
| is_public                             | False
| task_state                            | None
| snapshot_support                      | False
| id                                    | 11e74b08-5e0a-4c52-8047-ffd2e9f7d974
| size                                  | 1
| source_share_group_snapshot_member_id | None
| user_id                               | ac8f19029cdf35fa7083687862bf1235d5a10f5b98632be09d323616c640985e
| name                                  | production-share1
| share_type                            | 38877b67-366c-4abe-a273-365a522b88bc
| has_replicas                          | False
| replication_type                      | None
| created_at                            | 2020-10-26T07:05:54.000000
| share_proto                           | CEPHFS
| mount_snapshot_support                | False
| project_id                            | 294ad7735e6646d7bb908e32de8582c3
| metadata                              | {}
+---------------------------------------+-----------------------------------------------+

[student@workstation ~(operator1-production)]$ manila list
+--------------------------------------+-------------------+------+-------------+-----------+-----------+-----------------+------+-------------------+
| ID                                   | Name              | Size | Share Proto | Status    | Is Public | Share Type Name | Host | Availability Zone |
+--------------------------------------+-------------------+------+-------------+-----------+-----------+-----------------+------+-------------------+
| 11e74b08-5e0a-4c52-8047-ffd2e9f7d974 | production-share1 | 1    | CEPHFS      | available | False     | cephfstype      |      | nova              |
+--------------------------------------+-------------------+------+-------------+-----------+-----------+-----------------+------+-------------------+

📑10. 将一个额外的NIC从提供程序存储网络附加到production-server1实例,以便从production-server1实例到达production-share1共享文件系统的网络配置。使用DHCP作为附加网卡的配置方法。

[student@workstation ~(operator1-production)]$ openstack network list
+--------------------------------------+---------------------+--------------------------+
| ID                                   | Name                | Subnets
+--------------------------------------+---------------------+--------------------------+
| d55f6d1e-c29e-4825-8de4-01dd95f8a220 | provider-storage    | 6e5af9b0-67ef-4e1e-9eda-7d6633091d11 |
| e14d713e-c1f5-4800-8543-713563d7e82e | production-network1 | f0c54c6a-5094-4386-9e97-b8564ba31a93 |
| fc5472ee-98d9-4f6b-9bc9-544ca18aefb3 | provider-datacentre | 30c03fa5-0897-426a-8c81-75cf9cc333f1 |
+--------------------------------------+---------------------+--------------------------+

[student@workstation ~(operator1-production)]$ openstack server add network production-server1 provider-storage
[student@workstation ~(operator1-production)]$ ssh 172.25.250.151
Last login: Mon Oct 26 02:52:17 2020 from workstation.lab.example.com
[cloud-user@production-server1 ~]$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1442 qdisc pfifo_fast state UP group default qlen 1000
    link/ether fa:16:3e:7e:81:f4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.3/24 brd 192.168.1.255 scope global noprefixroute dynamic eth0
       valid_lft 41777sec preferred_lft 41777sec
    inet6 fe80::f816:3eff:fe7e:81f4/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether fa:16:3e:60:55:ac brd ff:ff:ff:ff:ff:ff 

[cloud-user@production-server1 ~]$ sudo cp -a /etc/sysconfig/network-scripts/ifcfg-eth0  /etc/sysconfig/network-scripts/ifcfg-eth1
[cloud-user@production-server1 ~]$ sudo vim /etc/sysconfig/network-scripts/ifcfg-eth1
[cloud-user@production-server1 ~]$ cat /etc/sysconfig/network-scripts/ifcfg-eth1
# Created by cloud-init on instance boot automatically, do not edit.
#
BOOTPROTO=dhcp
DEVICE=eth1
ONBOOT=yes

[cloud-user@production-server1 ~]$ sudo systemctl restart network
[cloud-user@production-server1 ~]$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1442 qdisc pfifo_fast state UP group default qlen 1000
    link/ether fa:16:3e:7e:81:f4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.3/24 brd 192.168.1.255 scope global noprefixroute dynamic eth0
       valid_lft 43197sec preferred_lft 43197sec
    inet6 fe80::f816:3eff:fe7e:81f4/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether fa:16:3e:60:55:ac brd ff:ff:ff:ff:ff:ff
    inet 172.24.3.208/24 brd 172.24.3.255 scope global noprefixroute dynamic eth1
       valid_lft 43197sec preferred_lft 43197sec
    inet6 fe80::f816:3eff:fe60:55ac/64 scope link 
       valid_lft forever preferred_lft forever

📑11. 创建cephx用户客户机,并将密匙环保存为cloud-user.keyring作为客户端进行身份验证。

[root@controller0 ~]# ceph --name=client.manila --keyring=/etc/ceph/ceph.client.manila.keyring auth get-or-create client.cloud-user > /root/cloud-user.keyring

[student@workstation ~(operator1-production)]$ scp root@controller0:{cloud-user.keyring,/etc/ceph/ceph.conf} manila/
Warning: Permanently added 'controller0,172.25.250.1' (ECDSA) to the list of known hosts.
cloud-user.keyring                                         100%   68   100.2KB/s   00:00    
ceph.conf                                                 100%  797     1.3MB/s   00:00
[student@workstation ~(operator1-production)]$ scp manila/ceph.conf manila/cloud-user.keyring  cloud-user@172.25.250.151:
ceph.conf                                                100%  797   786.8KB/s   00:00    
cloud-user.keyring                                        100%   68    75.9KB/s   00:00    

[student@workstation ~(operator1-production)]$ ssh 172.25.250.151
Last login: Mon Oct 26 03:10:23 2020 from workstation.lab.example.com
[cloud-user@production-server1 ~]$ sudo curl -s -f -o /etc/yum.repos.d/ceph.repo http://materials.example.com/ceph.repo
[cloud-user@production-server1 ~]$ sudo yum -y install ceph-fuse
Loaded plugins: langpacks, search-disabled-repos
…………

📑12. 将production-share1上的读写权限授予client.cloud-user。

[student@workstation ~(operator1-production)]$ manila access-allow --access-level rw production-share1 cephx cloud-user
+--------------+--------------------------------------+
| Property     | Value                                |
+--------------+--------------------------------------+
| access_key   | None                                 |
| share_id     | 11e74b08-5e0a-4c52-8047-ffd2e9f7d974 |
| created_at   | 2020-10-26T15:11:39.000000           |
| updated_at   | None                                 |
| access_type  | cephx                                |
| access_to    | cloud-user                           |
| access_level | rw                                   |
| state        | queued_to_apply                      |
| id           | 5dd12311-45fd-469e-8d1b-dbb26c61ef6e |
+--------------+--------------------------------------+

[student@workstation ~(operator1-production)]$ manila access-list production-share1
+--------------------------------------+-------------+------------+--------------+--------+------------------------------------------+----------------------------+----------------------------+
| id                                   | access_type | access_to  | access_level | state  | access_key                               | created_at                 | updated_at                 |
+--------------------------------------+-------------+------------+--------------+--------+------------------------------------------+----------------------------+----------------------------+
| 5dd12311-45fd-469e-8d1b-dbb26c61ef6e | cephx       | cloud-user | rw           | active | AQAfeJZfxPLkMBAABVZ+MGE9oBDIGKY1OURKKg== | 2020-10-26T15:11:39.000000 | 2020-10-26T15:11:39.000000 |
+--------------------------------------+-------------+------------+--------------+--------+------------------------------------------+----------------------------+----------------------------+

📑13. 从production-server1实例访问production-share1共享文件系统。

[student@workstation ~(operator1-production)]$ manila share-export-location-list production-share1
+--------------------------------------+------------------------------------------------------------------------+-----------+
| ID                                   | Path                                                                   | Preferred |
+--------------------------------------+------------------------------------------------------------------------+-----------+
| 8d592e86-8ac6-4e64-8f37-8265c9b6ff2d | 172.24.3.1:6789:/volumes/_nogroup/13551700-409f-43e8-8ba6-6f0f2481c6d0 | False     |
+--------------------------------------+------------------------------------------------------------------------+-----------+

[student@workstation ~(operator1-production)]$ ssh 172.25.250.151
Last login: Mon Oct 26 03:23:15 2020 from workstation.lab.example.com
[cloud-user@production-server1 ~]$ sudo -i
[root@production-server1 ~]# mkdir /manila
[root@production-server1 ~]#  ceph-fuse /manila --id=cloud-user --conf=/home/cloud-user/ceph.conf --keyring=/home/cloud-user/cloud-user.keyring --client-mountpoint=/volumes/_nogroup/13551700-409f-43e8-8ba6-6f0f2481c6d0
ceph-fuse[12253]: starting ceph client
2020-10-26 11:17:02.311428 7f06cb3cb0c0 -1 init, newargv = 0x55c6dd230d80 newargc=9
ceph-fuse[12253]: starting fuse
[root@production-server1 ~]# df -Th
Filesystem     Type            Size  Used Avail Use% Mounted on
/dev/vda1      xfs              10G  1.6G  8.5G  16% /
devtmpfs       devtmpfs        898M     0  898M   0% /dev
tmpfs          tmpfs           920M     0  920M   0% /dev/shm
tmpfs          tmpfs           920M   17M  903M   2% /run
tmpfs          tmpfs           920M     0  920M   0% /sys/fs/cgroup
/dev/vdb1      xfs            1021M   33M  989M   4% /mnt
tmpfs          tmpfs           184M     0  184M   0% /run/user/1001
ceph-fuse      fuse.ceph-fuse  1.0G     0  1.0G   0% /manila
[root@production-server1 ~]# echo hello > /manila/hello.txt
[root@production-server1 ~]# umount /manila/
[root@production-server1 ~]# exit
logout
[cloud-user@production-server1 ~]$ exit
logout
Connection to 172.25.250.151 closed.

📑14. 删除production-server1实例,并使用以下参数创建一个新实例:

在这里插入图片描述

[student@workstation ~(operator1-production)]$ openstack server create --flavor default --volume production-volume1 --key-name operator1-keypair --nic net-id=production-network1 --nic net-id=provider-storage --user-data /home/student/manila/user-data.file --wait production-server2
+-----------------------------+---------------------------------------------------------+
| Field                       | Value
+-----------------------------+---------------------------------------------------------+
| OS-DCF:diskConfig           | MANUAL
| OS-EXT-AZ:availability_zone | nova 
| OS-EXT-STS:power_state      | Running
| OS-EXT-STS:task_state       | None 
| OS-EXT-STS:vm_state         | active
| OS-SRV-USG:launched_at      | 2020-10-26T15:24:15.000000 
| OS-SRV-USG:terminated_at    | None 
| accessIPv4                  | 
| accessIPv6                  | 
| addresses                   | production-network1=192.168.1.6; provider-storage=172.24.3.202
| adminPass                   | zHWEa9PFz77Y
| config_drive                |
| created                     | 2020-10-26T15:23:56Z 
| flavor                      | default (e04380ed-b027-4a72-a697-4307bc014b6c)
| hostId                      | 0e79b8aaaf2efd191b1666446b5ee623aa403d474e8c199f8811250d
| id                          | ae438af8-04c6-44c7-97ac-6b849db22a80
| image                       | 
| key_name                    | operator1-keypair 
| name                        | production-server2 
| progress                    | 0 
| project_id                  | 294ad7735e6646d7bb908e32de8582c3
| properties                  | 
| security_groups             | name='default'
|                             | name='default'
| status                      | ACTIVE 
| updated                     | 2020-10-26T15:24:16Z
| user_id                     | ac8f19029cdf35fa7083687862bf1235d5a10f5b98632be09d323616c640985e
| volumes_attached            | id='f00c04a9-d211-4fe8-8cba-50d8cf7021fe'
+-----------------------------+---------------------------------------------------------+

[student@workstation ~(operator1-production)]$ openstack server add floating ip production-server2 172.25.250.151
[student@workstation ~(operator1-production)]$ ssh 172.25.250.151
Last login: Mon Oct 26 11:15:35 2020 from workstation.lab.example.com
[cloud-user@production-server2 ~]$ sudo -i
[root@production-server2 ~]# ceph-fuse /manila --id=cloud-user --conf=/home/cloud-user/ceph.conf --keyring=/home/cloud-user/cloud-user.keyring --client-mountpoint=/volumes/_nogroup/13551700-409f-43e8-8ba6-6f0f2481c6d0
ceph-fuse[1346]: starting ceph client
2020-10-26 11:26:57.109685 7f9ad826c0c0 -1 init, newargv = 0x55d02365ed80 newargc=9
ceph-fuse[1346]: starting fuse

[root@production-server2 ~]# df -Th
Filesystem     Type            Size  Used Avail Use% Mounted on
/dev/vda1      xfs              10G  1.6G  8.5G  16% /
devtmpfs       devtmpfs        898M     0  898M   0% /dev
tmpfs          tmpfs           920M     0  920M   0% /dev/shm
tmpfs          tmpfs           920M   17M  903M   2% /run
tmpfs          tmpfs           920M     0  920M   0% /sys/fs/cgroup
tmpfs          tmpfs           184M     0  184M   0% /run/user/1001
ceph-fuse      fuse.ceph-fuse  1.0G     0  1.0G   0% /manila
[root@production-server2 ~]# cat /manila/hello.txt 
hello
[root@production-server2 ~]# exit
logout
[cloud-user@production-server2 ~]$ exit
logout
Connection to 172.25.250.151 closed.
[student@workstation ~(operator1-production)]$ openstack server delete production-server2

📑评分脚本

[student@workstation ~]$ lab storage-review grade 
Grading the student's work on workstation:

 . Creating fresh instance: production-server1.................  PASS
 . Associating 172.25.250.151 to production-server1............  PASS
 . Attaching volume to the instance: production-volume2........  PASS
 . Evaluating the persistent volumes...........................  PASS
 . Evaluating the manila share.................................  PASS

Overall lab grade..............................................  PASS

💡总结

  • 基于块的、基于对象的和基于文件的存储选项具有各自的适用性和用例。这些存储选项并不相互替代或替代。基于块的存储选项提供了更高的可靠性,基于对象的存储提供了更好的可伸缩性,基于文件的存储为租户用户扩展了简单性。
  • RedHat OpenStack平台同时支持redhat Ceph存储和NFS作为存储后端。
  • Red Hat Ceph存储体系结构基于监视器(MON)守护进程和对象存储设备(OSD)守护进程。
  • 红帽Ceph存储功能包括无缝可伸缩性和没有单点故障。
  • Red Hat Ceph存储使用CephX身份验证机制来识别和授权用户。
  • 红帽OpenStack平台的块存储和镜像服务使用RBDs来访问Ceph,并且需要用户和池来访问集群。
  • Red Hat OpenStack平台对象存储服务(Swift)为租户用户提供可伸缩的对象存储。
  • OpenStack对象存储体系结构包括一个前端服务、代理服务器和三个后端服务:帐户服务器、对象服务器和容器服务器。
  • 用户可以在对象存储中创建容器,并将对象上传到这些容器中。
  • OpenStack共享文件系统服务管理为基于文件的存储需求提供服务的共享。来自实例的用户作为远程文件系统访问共享。共享可以托管在各种后端存储提供程序上,包括但不限于红帽Ceph存储和红帽Gluster存储。
  • 与持久存储持久存储数据不同,临时存储中的数据在实例终止后不会持久存储。持久存储主要存储可重用的数据。

RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。

以上就是【金鱼哥】对 第五章 管理存储--管理临时和持久存储+章节实验 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。

💾 红帽认证专栏系列:
RHCSA专栏: 戏说 RHCSA 认证
RHCE专栏: 戏说 RHCE 认证
此文章收录在RHCA专栏: RHCA 回忆录

如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。

如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕!

相关实践学习
基于EBS部署高性能的MySQL服务
如果您通常是通过ECS实例部署MySQL来使用数据库服务,您可以参考本实验操作来搭建高性能的MySQL服务。本实验为您演示如何通过EBS ESSD云盘部署一个高性能的MySQL服务。
目录
相关文章
|
消息中间件 运维 算法
金鱼哥RHCA回忆录:CL210OpenStack操作的故障排除--章节实验
第九章 OpenStack操作的故障排除--章节实验
547 2
金鱼哥RHCA回忆录:CL210OpenStack操作的故障排除--章节实验
|
运维 Linux API
|
JSON 运维 网络协议
金鱼哥戏说RHCE认证:管理变量和事实--管理事实和魔法变量
第四章 管理变量和事实--管理事实和魔法变量
197 0
金鱼哥戏说RHCE认证:管理变量和事实--管理事实和魔法变量
|
存储 运维 Shell
金鱼哥戏说RHCE认证:管理变量和事实--管理变量
第四章 管理变量和事实--管理变量
66 0
金鱼哥戏说RHCE认证:管理变量和事实--管理变量
|
存储 运维 关系型数据库
金鱼哥RHCA回忆录:DO280私有仓库持久存储与章节实验
第六章 DO280私有仓库持久存储与章节实验
121 0
金鱼哥RHCA回忆录:DO280私有仓库持久存储与章节实验
|
存储 运维 测试技术
金鱼哥RHCA回忆录:CL210管理计算资源--管理计算节点+章节实验
第七章 管理计算资源--管理计算节点+章节实验
207 0
金鱼哥RHCA回忆录:CL210管理计算资源--管理计算节点+章节实验
|
消息中间件 存储 运维
金鱼哥RHCA回忆录:CL210OpenStack操作的故障排除--常见核心问题的故障排除
第九章 OpenStack操作的故障排除--常见核心问题的故障排除
669 1
金鱼哥RHCA回忆录:CL210OpenStack操作的故障排除--常见核心问题的故障排除
|
消息中间件 运维 关系型数据库
金鱼哥RHCA回忆录:CL210云应用程序自动化(练习+章节实验)
第八章 云应用程序自动化(练习+章节实验)
209 0
金鱼哥RHCA回忆录:CL210云应用程序自动化(练习+章节实验)
|
存储 消息中间件 运维
金鱼哥RHCA回忆录:CL210管理计算资源--实例启动过程
第七章 管理计算资源--实例启动过程
107 0
金鱼哥RHCA回忆录:CL210管理计算资源--实例启动过程
|
运维 网络协议 测试技术
金鱼哥RHCA回忆录:CL210管理OPENSTACK网络--网络配置选项+章节实验
第六章 管理OPENSTACK网络--网络配置选项+章节实验
504 1
金鱼哥RHCA回忆录:CL210管理OPENSTACK网络--网络配置选项+章节实验