CirrOS是一个极小的云操作系统,可以使用这个小的操作系统来进行Glance服务组件的操作练习。将提供的cirros-0.3.4-x86_64-disk.img镜像上传到controller节点的root目录下面。
将镜像上传至controller节点后,通过file命令查看镜像文件信息。
[root@controller ~]# file cirros-0.3.4-x86_64-disk.img
cirros-0.3.4-x86_64-disk.img: QEMU QCOW Image (v2), 41126400 bytes
参数说明
–disk-format #镜像格式
–container-format #镜像在其他项目中的可见性
–progress #显示上传镜像的进度
–file #选择本地镜像文件
–name #上传后镜像的名称
使用镜像cirros-0.3.4-x86_64-disk.img通过命令上传镜像至OpenStack中。
[root@controller ~]# glance image-create --name cirrosA --disk-format qcow2 --container-format bare --progress --file cirros-0.3.4-x86_64-disk.img
通过命令可以在OpenStack平台中查看当前Glance中所上传的镜像名称。
查看镜像的详细信息
可以使用 glance image-update 更新镜像信息。
命令格式如下
参数说明
–min-disk #镜像启动最小硬盘大小
–name #镜像名称
–disk-format #镜像格式
–min-ram #镜像启动最小内存大小
–container-format #镜像在项目中可见性
如果需要改变镜像启动硬盘最低要求值(min-disk)1G,(min-ram)1024M,min-disk默认单位为G,min-ram默认单位为M。
使用glance image-update 更新镜像信息。
使用glance image-delete 删除上传至openstack平台中的镜像。
命令格式如下
只需要在命令后跟上镜像ID即可
更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。
flavor类型为Openstack在创建云主机时需要提供的云主机大小类型,云主机的资源大小可使用不同的flavor来定义。
命令格式如下
使用命令创建一个flavor,10G的硬盘大小,512内存,1颗vCPU,ID为10,名称为flavor1。
使用 openstack flavor list 命令查看flavor类型列表。
使用 openstack flavor show 命令查看flavor类型的详细信息。
命令格式如下
查看刚刚创建的flavor1的详细信息
访问安全组为是OpenStack提供给云主机的一个访问策略控制组,通过安全组中的策略可以控制云主机的出入访问规则。
使用命令 openstack security group list 可以查看当前所创建的访问安全组列表。
default 为Openstack平台自带的安全组,通过命令可以查看安全组中的安全规则。
在安全组规则列表中,不能看出每条规则的具体策略,通过使用命令 openstack security group rule show 查看任意规则的详细信息。
创建一个新的安全组,命令格式如下。
使用命令创建新的安全组规则,命令如下:
可以使用命令删除不使用的访问安全组
在默认安全组中添加三条需要使用的访问规则,使用 openstack security group rule create 命令,命令格式如下:
在“defualt”安全组中添加一条策略,从入口方向放行所有ICMP规则。
查看“default”安全组中所有的规则列表信息。
上传镜像,使用 openstack image list 命令来查询当前可用镜像列表。
[root@controller ~]# glance image-create --name cirrosB --disk-format qcow2 --container-format bare --file cirros-0.3.4-x86_64-disk.img
使用 openstack flavor list 命令查看可用的类型。
使用 openstack network create 命令创建网络信息。
–provider-physical-network #将提供者网络“provider”绑定在物理网卡上
–provider-network-type #提供者网络“provider”的网络类型
[root@controller ~]# openstack network create --provider-network-type vlan --provider-physical-network provider --provider-segment 200 network-vlan
使用 openstack subnet create 创建子网
[root@controller ~]# openstack subnet create --network network-vlan --allocation-pool start=192.168.200.100,end=192.168.200.200 --gateway 192.168.200.1 --subnet-range 192.168.200.0/24 subnet-vlan
使用 openstack server list 命令查看虚拟机列表信息。
[root@controller ~]# openstack server list
+--------------------------------------+-------------+--------+------------------------------+---------+---------+
| ID | Name | Status | Networks | Image | Flavor |
+--------------------------------------+-------------+--------+------------------------------+---------+---------+
| 5cfcde24-b785-45ac-9f07-9390d827a6cc | cirros-test | ACTIVE | network-vlan=192.168.200.164 | cirrosB | flavor1 |
+--------------------------------------+-------------+--------+------------------------------+---------+---------+
使用命令可以查看虚拟机的具体信息,包括使用的安全组、flavor以及网络信息,通过命令“openstack server show”进行查看。
可以通过命令操作虚拟机,对虚拟机进行关机、开机、重启等操作。关闭虚拟机操作。
[root@controller ~]# openstack server stop cirros-test
[root@controller ~]# openstack server start cirros-test
[root@controller ~]# openstack server reboot cirros-test
更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。
[root@controller ~]# source /etc/keystone/admin-openrc.sh
[root@controller ~]# glance image-create --name cirros11 --disk-format qcow2 --container-format bare --file cirros-0.3.4-x86_64-disk.img
[root@controller ~]# openstack network create --provider-network-type vlan --provider-physical-network provider --provider-segment 230 net-vlan1
[root@controller ~]# openstack subnet create --network net-vlan1 --allocation-pool start=192.168.200.20,end=192.168.200.30 --gateway 192.168.200.1 --subnet-range 192.168.200.0/24 subnet-vlan1
修改Nova服务配置文件,设置参数 virt_type=qemu。
[root@controller ~]# openstack server create --image cirros11 --flavor 2 --network net-vlan1 cirros-test2
使用 openstack volume service list 查询块存储服务状态。
使用 openstack volume create 创建块存储。命令格式如下:
通过命令创建块存储,大小为2G,名称为 volume。
使用 openstack volume list 命令查看块存储列表信息。
通过openstack volume show 命令查看某一块存储的详细信息。
块存储设备创建成功后,可以在openstack 上将该设备挂载至云主机上,可以作为一块云硬盘来使用。给云主机添加一块磁盘。
将块存储挂载至云主机的命令为 openstack server add volume。命令格斯如下:
使用命令将刚刚创建的 volume 块存储添加至云主机 cirros-test2 上。
[root@controller ~]# openstack server add volume cirros-test2 volume
使用命令查看块存储列表信息
创建完卷后可能因为需求变更,需要对已有的卷进行扩容操作,这时需要用到 openstack volume set 抿了修改卷的信息。命令格式如下:
分离卷,通过命令将 volume 卷大小从2G扩容至3G,使用–size 参数可修改已创建好的卷大小。
将扩容后的卷 volume 挂载至云主机 cirros-test2 上。
可以看到卷 volume 挂载至云主机 cirros-test2 上盘符的名称为 /dev/vdb 使用 virsh 工具登录云主机 输入命令 lsblk。查看云硬盘大小是否 3G
可以看到显示盘符 vdb 大小为 3G 此时云硬盘已经扩展完成。更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。
在openstack平台中使用 swift stat 查看对象存储服务的状态。
[root@controller ~]# swift stat
Account: AUTH_2dd8f147022949548b9bdf2f2eb17790
Containers: 0
Objects: 0
Bytes: 0
X-Put-Timestamp: 1675591940.80565
X-Timestamp: 1675591940.80565
X-Trans-Id: tx3587d8646d084f19b8d26-0063df8104
Content-Type: text/plain; charset=utf-8
X-Openstack-Request-Id: tx3587d8646d084f19b8d26-0063df8104
通过 openstack container create 命令创建容器,命令格式如下:
[root@controller ~]# openstack container create --help
usage: openstack container create [-h] [-f {csv,json,table,value,yaml}]
[-c COLUMN] [--max-width <integer>]
[--fit-width] [--print-empty] [--noindent]
[--quote {all,minimal,none,nonnumeric}]
[--sort-column SORT_COLUMN]
<container-name> [<container-name> ...]
使用命令创建容器 名称为 swift-test
[root@controller ~]# openstack container create container1
+---------------------------------------+------------+------------------------------------+
| account | container | x-trans-id |
+---------------------------------------+------------+------------------------------------+
| AUTH_2dd8f147022949548b9bdf2f2eb17790 | container1 | tx0b85327a7c22408383b82-0063df821a |
+---------------------------------------+------------+------------------------------------+
使用命令查询容器列表信息
[root@controller ~]# openstack container list
+------------+
| Name |
+------------+
| container1 |
+------------+
使用命令查询容器详细信息
[root@controller ~]# openstack container show container1
+--------------+---------------------------------------+
| Field | Value |
+--------------+---------------------------------------+
| account | AUTH_2dd8f147022949548b9bdf2f2eb17790 |
| bytes_used | 0 |
| container | container1 |
| object_count | 0 |
+--------------+---------------------------------------+
创建完容器后,可以创建对象,通过使用命令 openstack object create 在对象中创建对象,命令格式如下。
[root@controller ~]# openstack object create --help
usage: openstack object create [-h] [-f {csv,json,table,value,yaml}]
[-c COLUMN] [--max-width <integer>]
[--fit-width] [--print-empty] [--noindent]
[--quote {all,minimal,none,nonnumeric}]
[--sort-column SORT_COLUMN] [--name <name>]
<container> <filename> [<filename> ...]
在使用命令创建对象前,需要将上传后的目录结构在本地创建,在本地创建名为 test 的目录/root/test,将/root/anaconda-ks.cfg 文件复制至 /root/test 目录中。
[root@controller ~]# mkdir test
[root@controller ~]# cp -rvf anaconda-ks.cfg test/
"anaconda-ks.cfg" -> "test/anaconda-ks.cfg"
[root@controller ~]# ls test/
anaconda-ks.cfg
创建对象的过程也是向容器中上传文件,使用命令创建 test/anaconda-ks.cfg 和 anaconda-ks.cfg 对象。
[root@controller ~]# openstack object create container1 test/anaconda-ks.cfg
+----------------------+------------+----------------------------------+
| object | container | etag |
+----------------------+------------+----------------------------------+
| test/anaconda-ks.cfg | container1 | d36057f078895b4ce261e5a2abddf671 |
+----------------------+------------+----------------------------------+
创建完对象后,通过命令查看容器中对象信息,使用命令“openstack object list” 查看对象信息,命令格式如下:
[root@controller ~]# openstack object list --help
usage: openstack object list [-h] [-f {csv,json,table,value,yaml}] [-c COLUMN]
[--max-width <integer>] [--fit-width]
[--print-empty] [--noindent]
[--quote {all,minimal,none,nonnumeric}]
[--sort-column SORT_COLUMN] [--prefix <prefix>]
[--delimiter <delimiter>] [--marker <marker>]
[--end-marker <end-marker>]
[--limit <num-objects>] [--long] [--all]
<container>
使用命令查看容器 container1 中所有对象信息。
[root@controller ~]# openstack object list container1
+----------------------+
| Name |
+----------------------+
| test/anaconda-ks.cfg |
+----------------------+
通过查询命令可以看出,在通过命令上传对象时,本地路径即为容器内对象路径。使用 openstack object show 查询 container1 容器中 test/anaconda-ks.cfg 对象的详细信息。
[root@controller ~]# openstack object show container1 test/anaconda-ks.cfg
+----------------+---------------------------------------+
| Field | Value |
+----------------+---------------------------------------+
| account | AUTH_8477005613924107b281ef0292377fff |
| container | container1 |
| content-length | 1537 |
| content-type | application/octet-stream |
| etag | d36057f078895b4ce261e5a2abddf671 |
| last-modified | Tue, 07 Feb 2023 08:18:53 GMT |
| object | test/anaconda-ks.cfg |
+----------------+---------------------------------------+
存储在容器中的对象,可以在需要使用时,通过 openstack object save 命令进行下载至本地,命令格式如下:
[root@controller ~]# openstack object save --help
usage: openstack object save [-h] [--file <filename>] <container> <object>
Save object locally
使用命令 将 container1 容器中的 test/anaconda-ks.cfg 对象下载至本地/opt/目录下。
[root@controller opt]# openstack object save container1 test/anaconda-ks.cfg
[root@controller opt]# ls test/
anaconda-ks.cfg
使用 openstack object delete 命令删除容器内的对象,命令格式如下:
[root@controller opt]# openstack object delete --help
usage: openstack object delete [-h] <container> <object> [<object> ...]
使用删除容器命令删除 container1 中的对象 test/anaconda-ks.cfg。
[root@controller opt]# openstack object delete container1 test/anaconda-ks.cfg
[root@controller opt]# openstack object list container1
使用 openstack container delete 命令删除容器,命令格式如下:
[root@controller test]# openstack container delete --help
usage: openstack container delete [-h] [--recursive]
<container> [<container> ...]
使用删除命令删除容器 container1
[root@controller opt]# openstack container delete container1
[root@controller opt]# openstack container list
使用命令创建一个容器 test 并查看容器的状态信息。
[root@controller opt]# openstack container create container2
+---------------------------------------+------------+------------------------------------+
| account | container | x-trans-id |
+---------------------------------------+------------+------------------------------------+
| AUTH_8477005613924107b281ef0292377fff | container2 | tx42b3d14b9e3d453b9efb0-0063e20dc4 |
+---------------------------------------+------------+------------------------------------+
[root@controller opt]# swift stat container2
Account: AUTH_8477005613924107b281ef0292377fff
Container: container2
Objects: 0
Bytes: 0
Read ACL:
Write ACL:
Sync To:
Sync Key:
Accept-Ranges: bytes
X-Storage-Policy: Policy-0
Last-Modified: Tue, 07 Feb 2023 08:37:26 GMT
X-Timestamp: 1675759045.17190
X-Trans-Id: txec129673c23344ed998f2-0063e20dcd
Content-Type: application/json; charset=utf-8
X-Openstack-Request-Id: txec129673c23344ed998f2-0063e20dcd
上传镜像,并使用命令上传至test容器中,进行分片存储,每个片段大小为10M。
[root@controller test]# swift upload container2 -S 10000000 cirros-0.3.4-x86_64-disk.img
cirros-0.3.4-x86_64-disk.img segment 1
cirros-0.3.4-x86_64-disk.img segment 0
cirros-0.3.4-x86_64-disk.img
查看cirros镜像的存储路径
[root@controller test]# swift stat container2 cirros-0.3.4-x86_64-disk.img
Account: AUTH_8477005613924107b281ef0292377fff
Container: container2
Object: cirros-0.3.4-x86_64-disk.img
Content Type: application/octet-stream
Content Length: 13287936
Last Modified: Tue, 07 Feb 2023 08:47:09 GMT
ETag: "cca17a689bfcd70118fabc833af0d033"
Manifest: container2_segments/cirros-0.3.4-x86_64-disk.img/1675759156.181087/13287936/10000000/
Meta Mtime: 1675759156.181087
Accept-Ranges: bytes
X-Timestamp: 1675759628.40876
X-Trans-Id: tx5c5baf471ab3468cb2a57-0063e2109e
X-Openstack-Request-Id: tx5c5baf471ab3468cb2a57-0063e2109e
查看存储路径中的数据片
[root@controller test]# swift list container2_segments
cirros-0.3.4-x86_64-disk.img/1675759156.181087/13287936/10000000/00000000
cirros-0.3.4-x86_64-disk.img/1675759156.181087/13287936/10000000/00000001
可以看到,cirros镜像在上传至Swift对象存储中被分片存储了,单个存储篇的大小为 10M,因为镜像大小为16M左右,所以分成了两个存储片。
链接:https://blog.csdn.net/qq_52089863/article /details/128922055