一、块存储(Cinder)

1.列出所有卷(ID、名称、状态、大小和挂载目录)

openstack volume list

2.新建卷(size的单位为GB)

openstack volume create --size <size> <name>

3.删除卷

openstack volume delete <id>

4.将卷连接到instance

openstack server add volume <instance_id> <volume_id>

二、认证(Keystone) 1.列出所有用户

openstack user list

2.列出认证服务目录

openstack catalog list

三、镜像(Glance) 1.列出可以访问的镜像

openstack image list

2.删除指定镜像

openstack image delete <image_id>

3.查看指定镜像的详细信息

openstack image show <image_id>

4.更新镜像

openstack image set <image_id>

四、计算(nova) 1列出实例

openstack server list

2.创建规格

openstack flavor create --ram <ram_size_MB> --disk <disk_size_GB> --vcpus <vcpu_num> <flavor_name>

3.列出所有规格

openstack flavor list

4.创建并启动云主机

openstack server create --image <image_id> --flavor <flavor_id> <server_name>

5.显示实例的详细信息

openstack server show <server_name>

6.查看云主机的控制台日志

openstack server show <server_name>

7.设置云主机的元数据

nova meta <server_id> set <meta_key>=<meta_value>

8.创建云主机快照

openstack image create <server_id> <snapshot_name>

9.查看云主机快照

openstack image show <snapshot_name>

10.暂停云主机

openstack server pause <server_id>

11.取消暂停

openstack server unpause <server_id>

12.挂起云主机

openstack server suspend <server_id>

13.取消挂起

openstack server resume <server_id>

14.关闭云主机

openstack server stop <server_id>

15.开启云主机

openstack server start <server_id>

16.恢复云主机

openstack server rescue <server_id> --rescue_image_ref <rescue_image>

17.调整云主机大小

openstack server resize <server_id> <flavor_name>

18.重建云主机

openstack server rebuild <server_id> <image_id>

19.重启云主机

openstack server reboot <server_id>

20.将用户数据文件注入云主机

openstack server create --user-data <datafile_name> --image <iamge_id> --flavor <flavor_name> <server_name>

五、网络(Neutron) 1.创建网络

openstack network create <network_name>

2.创建子网

openstack network create --subnet-pool <subnet> --network <network_name> <subnet_name>
Opnestack三大核心

1.计算服务(compute) 服务名 Nova #用于为用户管理虚拟机实例 提供虚拟服务 负责虚拟机创建 开机关机等操作 (计算资源分配资源 cpu,mem)

2.网络服务(networking) 服务名 Neutron #为云平台提供网络虚拟化 为用户提供网络接口 (cloud连接的网络) 服务名 Designate #DNS服务

3.存储(storage) 分为 1.文件存储 服务名 Manila 
                     2.块存储 Block Storage 服务名 Cinder #管理块设备,列入创建卷,删除卷等 
                       (系统盘) 
                     3.对象存储 Object Storage 服务名 Swift #允许使用进行文件粗出及检索

4.身份认证服务 (ldentity) 服务名 keystone #为openstack替他服务提供身份验证,服务注册等功能 (各组件互相通信的身份认证与协调)

5.镜像服务 (image service) 服务名 Glance #为云平台提供镜像服务器,上传镜像 ,删除镜像等 (镜像服务)

6.UI界面 (Dashboard) 服务名 Horizon #为openstack 提供管理门户,例如启动云主机,创建网络,访问控制等 (提供图形操作界面)

7.测量 (metering ) 服务名 Ceilometer #内部发生的资源进行统计,然后计费和监控提供数据支撑等

8.编排部署 (orchestration) 服务名 Heat # 为云平台提供软件运行环境自动化部署

9.数据库 (database server) 服务名Trove # 提供可扩展和可靠的关系型数据库或非关系型数据库引擎

一、Neutron服务运维

1.什么Neutron?

Neutron 是 Openstack 的虚拟网络服务。

 Neutron 的设计目标是实现“网络即服务(Networking as a Service)”。为了达到这一目标,在设计上遵循了基于 SDN 实现网络虚拟化的原则,在实现上充分利用了 Linux 系统上的各种网络相关的技术。

2.Neutron功能

 Neutron 为整个 OpenStack 环境提供网络支持,包括二层交换,三层路由,负载均衡,防火墙等。Neutron 提供了一个灵活的框架,通过配置,无论是开源还是商业软件都可以被用来实现这些功能。

3.Neutron基本架构

与openstack其他服务和组件的设计思路一样,Neutron也采用分布式架构,由多个组件(服务)共同对外提供网络服务,Neutron架构非常灵活,层次多,一方面是为了支持各种现有或者将来会出现的先进网络技术,另一方面支持分布式部署,获得足够的拓展性。示意图如下:

openstack制作ubantu镜像 openstack创建镜像命令_运维

 neutron server:对外提供 OpenStack 网络API,接收请求,并调用Plugin处理请求。

queue:Neutron Server,Plugin 和 Agent 之间通过 Messaging Queue 通信和调用。

neutron plugin:处理 Neutron Server 发来的请求,维护 OpenStack 逻辑网络的状态, 并调用 Agent 处理请求。

neutron agent:处理 Plugin请求,负责在 network provider 上真正实现各种网络功能。

neutron provider:提供网络服务的虚拟或物理网络设备,例如 Linux Bridge,Open vSwitch或者其他支持 Neutron 的物理交换机。

neutron database:存放 OpenStack 的网络状态信息,包括 Network, Subnet, Port, Router等。

4.Neutron运维命令

4.1思维导图

openstack制作ubantu镜像 openstack创建镜像命令_linux_02

1.使用Neutron相关命令查询网络服务列表中的“binary”一列

    1. [root@controller ~]# neutron agent-list -c binary
    2. +---------------------------+
    3. | binary |
    4. +---------------------------+
    5. | neutron-openvswitch-agent |
    6. | neutron-dhcp-agent |
    7. | neutron-l3-agent |
    8. | neutron-metadata-agent |
    9. | neutron-lbaas-agent |
    10. +---------------------------+
    //如果一开始查报错,建议重启一下服务
     [root@controller ~]# systemctl restart neutron-server.service

    2.查询网络详细信息

    1. [root@xiandian ~]# neutron net-list //列出当前租户所有的网络
    2. +--------------------------------------+------------+---------+
    3. | id | name | subnets |
    4. +--------------------------------------+------------+---------+
    5. | bd923693-d9b1-4094-bd5b-22a038c44827 | sharednet1 | |
    6. +--------------------------------------+------------+---------+
    7. [root@xiandian ~]# neutron net-show bd923693-d9b1-4094-bd5b-22a038c44827
    8. +---------------------------+--------------------------------------+
    9. | Field | Value |
    10. +---------------------------+--------------------------------------+
    11. | admin_state_up | True |
    12. | availability_zone_hints | |
    13. | availability_zones | |
    14. | created_at | 2017-02-23T04:58:17 |
    15. | description | |
    16. | id | bd923693-d9b1-4094-bd5b-22a038c44827 |
    17. | ipv4_address_scope | |
    18. | ipv6_address_scope | |
    19. | mtu | 1500 |
    20. | name | sharednet1 |
    21. | port_security_enabled | True |
    22. | provider:network_type | flat |
    23. | provider:physical_network | physnet1 |
    24. | provider:segmentation_id | |
    25. | router:external | False |
    26. | shared | True |
    27. | status | ACTIVE |
    28. | subnets | |
    29. | tags | |
    30. | tenant_id | 20b1ab08ea644670addb52f6d2f2ed61 |
    31. | updated_at | 2017-02-23T04:58:17 |
    32. +---------------------------+--------------------------------------+

     3.查询Neutron相关命令查询网络服务DHCP agent的详细信息




    1. [root@controller ~]# neutron agent-list
    2. +--------------------------------------+--------------------+------------+-------------------+-------+----------------+---------------------------+
    3. | id | agent_type | host | availability_zone | alive | admin_state_up | binary |
    4. +--------------------------------------+--------------------+------------+-------------------+-------+----------------+---------------------------+
    5. | 1ccc8d2d-b40a-4406-b15b-ab4b2b8e8398 | Open vSwitch agent | controller | | :-) | True | neutron-openvswitch-agent |
    6. | 245ae2f9-6220-4c00-a36d-542a746a3f9e | DHCP agent | controller | nova | :-) | True | neutron-dhcp-agent |
    7. | 26f38d05-3553-46f6-8740-847f97741f89 | L3 agent | controller | nova | :-) | True | neutron-l3-agent |
    8. | 5bd0c9e2-a2ef-4890-a4ac-a4cb6bccf71b | Metadata agent | controller | | :-) | True | neutron-metadata-agent |
    9. | f1d1fc34-6e9d-46b5-8370-0579f3b46b6f | Loadbalancer agent | controller | | :-) | True | neutron-lbaas-agent |
    10. +--------------------------------------+--------------------+------------+-------------------+-------+----------------+---------------------------+
    11. [root@controller ~]# neutron agent-show 245ae2f9-6220-4c00-a36d-542a746a3f9e
    12. +---------------------+----------------------------------------------------------+
    13. | Field | Value |
    14. +---------------------+----------------------------------------------------------+
    15. | admin_state_up | True |
    16. | agent_type | DHCP agent |
    17. | alive | True |
    18. | availability_zone | nova |
    19. | binary | neutron-dhcp-agent |
    20. | configurations | { |
    21. | | "subnets": 0, |
    22. | | "dhcp_lease_duration": 86400, |
    23. | | "dhcp_driver": "neutron.agent.linux.dhcp.Dnsmasq", |
    24. | | "networks": 0, |
    25. | | "log_agent_heartbeats": false, |
    26. | | "ports": 0 |
    27. | | } |
    28. | created_at | 2019-12-03 17:43:37 |
    29. | description | |
    30. | heartbeat_timestamp | 2022-04-10 22:41:26 |
    31. | host | controller |
    32. | id | 245ae2f9-6220-4c00-a36d-542a746a3f9e |
    33. | started_at | 2022-04-10 22:38:56 |
    34. | topic | dhcp_agent |
    35. +---------------------+----------------------------------------------------------+

    二、Cinder服务运维

    1.什么是Cinder?

    cinder 是提供块存储的服务。存储的分配和消耗是由块存储驱动器或者多后端配置的驱动器决定的。还有很多驱动程序可以用:NAS/SAN、NFS、CEPH等。一般运行在openstack的控制节点上。其驱动可以运行在控制节点、计算节点或者单独的存储节点上。

    2.Cinder的作用

    cinder的核心功能是对卷的管理,允许对卷、卷的类型、卷的快照、卷备份进行处理。它为后端不同的存储设备提供了统一的接口,不同的块设备服务厂商在 cinder 中实现其驱动支持以与 OpenStack 进行整合。

    3.Cinder基本架构

    openstack制作ubantu镜像 openstack创建镜像命令_openstack制作ubantu镜像_03

    • Cinder-api用来接受api请求,并将其路由到cinder-volume执行
    • Cinder-Volume用来与块存储服务和 Cinder- Scheduler进程进行直接交互。它也可以与这些进程通过一个消息队列进行交互。 Cinder-Volume服务响应送到块存储服务的读写请求来维持状态,它也可以和多种存储提供者在驱动架构下进行交互。)
    • Cinder- Scheduler守护进程会选择最优存储节点来创建卷,其工作机制与Nova- Scheduler类似。当需要创建卷时,Cinder- Scheduler根据存储节点的资源使用情况选择一个最合适的节点来创建卷。
    • Cinder- Backup服务提供任何种类备份卷到一个备份存储提供者。就像 Cinder- Volume服务,它与多种存储提供者在驱动架构下进行交互。
    • 消息队列
    • 消息队列作用是在块存储的进程之间路由信息。 Cinder各个子服务通过消息队列实现进程间通信和相互协作。

    4.Cinder基础命令

    4.1思维导图

    openstack制作ubantu镜像 openstack创建镜像命令_linux_04

    1.创建云硬盘

    创建一个2 GB的云硬盘extend-demo,并且查看云硬盘信息。

    1. [root@controller ~]# cinder create --name cinder-volume-demo 2
    2. [root@controller ~]# cinder list

    2.创建云硬盘类型

    创建了一个名为“lvm”的卷类型。通过cinder命令查看现有的卷类型。

    1. [root@controller ~]# cinder type-create lvm
    2. [root@controller ~]# cinder type-list

    3.创建带标识云硬盘

    创建一块带“lvm”标识名为type_test_demo的云硬盘,最后使用命令查看所创建的云硬盘。



    1. [root@controller ~]# cinder create --name type_test_demo --volume-type lvm 1
    2. [root@controller ~]# cinder show type_test_demo

    4.删除指定的Cinder卷

    [root@controller ~]# cinder delete cinder-volume-demo

    三:glance项目
    1.1:glance是什么?有什么作用?
    Glance(OpenStack Image Service)是一个提供发现,注册,和下载镜像的服务。Glance 提供了虚拟机镜像的集中存储。通过 Glance 的 RESTful API,可以查询镜像元数据、下载镜像。虚拟机的镜像可以很方便的存储在各种地方,从简单的文件系统到对象存储系统(比如 OpenStack Swift)。

    在 Glance 里镜像被当做模板来存储,用于启动新实例。Glance 还可以从正在运行的实例建立快照用于备份虚拟机的状态。

    Glance 具体功能如下:

    提供 RESTful API 让用户能够查询和获取镜像的元数据和镜像本身;
    支持多种方式存储镜像,包括普通的文件系统、Swift、Ceph 等;
    对实例执行快照创建新的镜像。
    Clance 在整个 OpenStack 架构中的位置如下图:

    二:架构
    在 Newton 之前的版本中,Glance 支持两种 RESTful API V1和V2,两者区别为:
    V1只提供了基本的镜像和用户操作功能:
    镜像创建、删除、下载、列表、详细信息查询、更新,以及镜像租户成员的创建、删除和列表。

    V2除了支持V1的所有功能外,主要是增加了如下功能

    镜像 location 的添加、删除和修改等操作;
    metadata namespace 操作;
    镜像 tag 操作。
    V1 和V2对镜像后端存储的支持是相同的。
    V1版本的实现,具有 glance-api 和 glance-registry 两个 WSGI 服务,二者都提供 RESTful API,但需要强调的一点是,glance-registry 提供的 RESTful API 是给 glance-api 使用的,并不开放给外部用户。

    glance-api
    glance-api 是系统后台运行的服务进程。 对外提供 RESTful API,响应镜像查询、获取和存储作用。glance-api 不会真正处理请求。 如果是与镜像 metadata(元数据)相关的操作,glance-api 会把请求转发给glance-registry;如果是与镜像自身存取相关的操作,glance-api 会把请求转发给该 image 的存储后端。

    glance-registry
    Glance的DB模块存储的是镜像的元数据,可以选用Mysql、MariaDB、SQLite等数据库。元数据是指镜像相关的一些信息(如id,size, status,location,checksum,min_disk,min_ram,owner等)真正的镜像数据保存在实际所使用的后端存储里(如Swift,S3,Filesystem等)。默认绑定的端口是9191。镜像的元数据通过glance-registry存放在数据库中。镜像本身(chunk数据)是通过glance存储在驱动存放到各种存储后端中的。

    store adapter‘
    严格来说Image Store不属于Glance的组件,这里把它单独分出来只是为了方便理解,它只是一个接口层,提供镜像存储和查询的接口。具体的实现则需要外部存储(Swift,S3)的支持。
    存储后端Glance自身并不存储镜像,它将镜像存放在后端存储系统中。镜像本身的数据通glance_store存放在各种后端,并可从中获取。支持本地存储、对象存储、RBD块设备、Sheepdog分布式存储、Cinder块存储】VMware数据存储。

    2.1:glance有哪些常见的镜像格式

    格式

    描述

    RAW(常用)

    出色的原始文件格式,方便转换成其他格式

    QCOW2(常用)

    占用的磁盘空间可以动态按需增长

    VHD格式

    微软公司的磁盘格式,如果在openstack上使用Hyper-V类型的虚拟化,就需要上传VHD格式的镜像文件

    VMDK格式

    VMware公司的磁盘格式(virtualbox和QEM也支持VMDK格式)

    VDI格式

    oracle公司的virtualbox虚拟软件使用的格式

    ISO格式

    一种存档数据文件在光盘上的格式

    AKI,ARI,AMI格式

    Amazon公司的AWS所使用的镜像格式

    2.2:glance的常用管理命令有哪些

    命令

    作用

    openstack image list

    查看已有镜像列表

    openstack image show 镜像名

    查看镜像的详细信息

    openstack image create --file 镜像文件名 --disk-format qcow2 --container-format bare --public centos7 生产一个qcow2格式的镜像,名字为centos7

    创建镜像

    glance image-create --name “centos7” --file centos.img --disk-format raw --container-format bare --progress

    创建镜像并查看百分比进度

    openstack image delete 镜像名

    删除镜像

    openstack image create --file 镜像 --disk-format qcow2 --container-format bare --public 镜像名

    修改镜像格式(例如raw修改为qcow2)

    qemu-img convert -f raw -O qcow2 centos7.img centos7.qcow2

    修改镜像格式(例如将裸格式镜像文件centos7.img转为qcow2格式)

    2.3:镜像访问权限

    命令

    作用

    public公共的

    可以被所有的项目使用

    private私有的

    只有被镜像所有者所在的项目使用

    shared共享的

    一个非共有的镜像,可以共享给其他项目,通过项目成员(member-*)操作来实现的

    projected(受保护的)

    这种镜像不能被删除

    2.4:glance的工作流程
    glance是一个C/S架构,给外部提供服务,用户通过REST API获取glance所有服务。

    openstack制作ubantu镜像 openstack创建镜像命令_运维_05

     

    镜像上传服务

    • 用户在命令行或horizon申请上传镜像,API收到请求,并通过调度器进行解析,获取版本信息。
    • Glance-registryAPI获取一个registry client,调用glance-registry的add_image函数。此时镜像状态为queued,标识该镜像ID被保留,但是镜像还未上传,Glance-registry服务执行client的add_image函数,像glance数据库插入一条记录
    • Glance-api调用glance-registry的update_image_metadata函数,更新数据库中的状态为saveing,表示镜像正在被上传,Glance-api端存储接口提供的add函数上传镜像文件。
    • Glance-api调用glance-registry的update_image_metadata函数,更新数据库中该镜像的状态为active并发通知。active标识镜像在Glance中完全可用

    调度器

    • 首先是对客户端的安全认证流程:openstack的操作都需要经过keystone进行身份认证,并授权,glance也不例外,授权成功再去请求glance服务,glance服务接收到外部请求后,会去keystone进行认证,此请求是否已授权,认证通过后,才会将请求传到后端处理。
    • glance domain controller是API和后端功能模块的中间件,相当于调度器,作用是将外部服务分发到下面的各个功能层去处理。
    • 在调度时,遵循调度算法,首先有一个预选,排除不符合要求的节点,再进行优选,通过打分机制,对都能够处理此功能的节点进行打分,考虑它们当前的负荷,处理能力和速度,选出最优的一个。
    • 对于一些有污点的节点,调度器是直接跳过他们的,如果其余可用节点负担都太大,无法处理外部请求,会有一个容忍机制,由运维人员控制,让调度器接受污点,对污点再进行优选。

    2.5:glance服务部署
    创建数据库实例和数据库用户
     

    [root@ct ~]# mysql -u root -p
    MariaDB [(none)]> CREATE DATABASE glance;
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'GLANCE_DBPASS';
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'GLANCE_DBPASS';
    MariaDB [(none)]> flush privileges;
    MariaDB [(none)]> exit
    • 创建用户、修改配置文件
      创建OpenStack的Glance用户
      #创建用户前,需要首先执行管理员环境变量脚本(此处已经在~/.bashrc 中定义过了)
    [root@ct ~]# openstack user create --domain default --password GLANCE_PASS glance			###创建glance用户
    root@ct ~]# openstack role add --project service --user glance admin
    #将glance用户添加到service项目中,并且针对这个项目拥有admin权限;注册glance的API,需要对service项目有admin权限
    
    [root@ct ~]# openstack service create --name glance --description "OpenStack Image" image		
    #创建一个service服务,service名称为glance,类型为image;创建完成后可以通过 openstack service list 查看

     

    • 创建镜像服务 API 端点,OpenStack使用三种API端点代表三种服务:admin、internal、public
    [root@ct ~]# openstack endpoint create --region RegionOne image public http://ct:9292
    [root@ct ~]# openstack endpoint create --region RegionOne image internal http://ct:9292
    [root@ct ~]# openstack endpoint create --region RegionOne image admin http://ct:9292
    • 安装 openstack-glance 软件包。
    [root@ct ~]# yum -y install openstack-glance
    • 修改glance配置文件,glance有两个配置文件:
    /etc/glance/glance-api.conf 
    /etc/glance/glance-registry.conf
    • 修改glance-api.conf配置文件
    [root@ct ~]# cp -a /etc/glance/glance-api.conf{,.bak}
    [root@ct ~]# grep -Ev '^$|#' /etc/glance/glance-api.conf.bak > /etc/glance/glance-api.conf
    
    openstack-config --set /etc/glance/glance-api.conf database connection mysql+pymysql://glance:GLANCE_DBPASS@ct/glance
    openstack-config --set /etc/glance/glance-api.conf keystone_authtoken www_authenticate_uri http://ct:5000
    openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_url http://ct:5000
    openstack-config --set /etc/glance/glance-api.conf keystone_authtoken memcached_servers ct:11211
    openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_type password
    openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_domain_name Default
    openstack-config --set /etc/glance/glance-api.conf keystone_authtoken user_domain_name Default
    openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_name service
    openstack-config --set /etc/glance/glance-api.conf keystone_authtoken username glance
    openstack-config --set /etc/glance/glance-api.conf keystone_authtoken password GLANCE_PASS
    openstack-config --set /etc/glance/glance-api.conf paste_deploy flavor keystone
    openstack-config --set /etc/glance/glance-api.conf glance_store stores file,http
    openstack-config --set /etc/glance/glance-api.conf glance_store default_store file
    openstack-config --set /etc/glance/glance-api.conf glance_store filesystem_store_datadir /var/lib/glance/images/
    • 修改glance-registry.conf 配置文件
    cp -a /etc/glance/glance-registry.conf{,.bak}
    grep -Ev '^$|#' /etc/glance/glance-registry.conf.bak > /etc/glance/glance-registry.conf
    
    #修改配置文件参数
    openstack-config --set /etc/glance/glance-registry.conf database connection mysql+pymysql://glance:GLANCE_DBPASS@ct/glance
    openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken www_authenticate_uri http://ct:5000
    openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_url http://ct:5000
    openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken memcached_servers ct:11211
    openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_type password
    openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken project_domain_name Default
    openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken user_domain_name Default
    openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken project_name service
    openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken username glance
    openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken password GLANCE_PASS
    openstack-config --set /etc/glance/glance-registry.conf paste_deploy flavor keystone
    openstack-config --set /etc/glance/glance-registry.conf glance_store stores file,http
    openstack-config --set /etc/glance/glance-registry.conf glance_store default_store file
    openstack-config --set /etc/glance/glance-registry.conf glance_store filesystem_store_datadir /var/lib/glance/images/
    • 初始化glance数据库,生成相关表结构;(不管有多少个controler,只需要初始化一次即可)
    su -s /bin/sh -c "glance-manage db_sync" glance
    • 开启glance服务(此处开启之后会生成存放镜像的目录/var/lib/glance/image)
    [root@ct ~]# systemctl enable openstack-glance-api.service
    [root@ct ~]# systemctl start openstack-glance-api.service
    • 查看端口(也可以使用lsof -i:9292 )
    [root@ct ~]# netstat -natp | grep 9292
    tcp        0      0 0.0.0.0:9292            0.0.0.0:*               LISTEN      33846/python2
    • 赋予openstack-glance-api.service服务对存储设备的可写权限(-h:值对符号连接/软链接的文件修改)
    [root@ct ~]# chown -hR glance:glance /var/lib/glance/
    • 镜像导入
      先上传cirros镜像到控制节点的/root,然后导入glance,最后查看是否创建成功
    [root@ct ~]# openstack image create --file cirros-0.3.5-x86_64-disk.img --disk-format qcow2 --container-format bare --public cirros
    • 查看镜像的两种方式
    [root@ct ~]# glance image-list
    +--------------------------------------+--------+
    | ID                                   | Name   |
    +--------------------------------------+--------+
    | 238703c7-8128-4284-aed8-65c1f683a700 | cirros |
    +--------------------------------------+--------+
    [root@ct ~]# openstack image list
    +--------------------------------------+--------+--------+
    | ID                                   | Name   | Status |
    +--------------------------------------+--------+--------+
    | 238703c7-8128-4284-aed8-65c1f683a700 | cirros | active |
    +--------------------------------------+--------+--------+