文章背景图

OpenStack CLI 常用命令手册:计算、网络、镜像、卷与项目管理

2026-07-25
3
-
- 分钟

旧版 OpenStack 环境经常混用 nova、neutron、glance 和 cinder 命令。新脚本应优先采用统一的 openstack CLI,旧命令只在维护老平台或确认版本差异时使用。本文按日常操作整理常用命令,并统一使用占位符,避免把真实资源 ID 和密码写进文档。

## 1. 环境与身份确认

加载环境变量后,先确认当前身份和项目:

```bash

source openrc

openstack token issue

openstack project list

openstack user list

openstack endpoint list

openstack catalog list

```

如果命令报 401、Endpoint 不存在或连接错误,检查认证地址、Region、项目、用户域和系统时间。不要在共享终端中打印长期有效密码。

## 2. 输出格式与筛选

统一 CLI 支持多种输出格式:

```bash

openstack server list --long

openstack server list -f value -c ID -c Name -c Status

openstack server show VM_NAME -f json

openstack port list --server VM_NAME

```

自动化脚本优先使用 -f value-f json-c,不要用复杂的 grep/awk 去解析表格边框。资源名可能重复,破坏性操作应优先使用 ID。

## 3. Flavor 管理

```bash

openstack flavor list

openstack flavor show FLAVOR

openstack flavor create \

--vcpus 4 --ram 8192 --disk 50 \

general-4c8g

openstack flavor set general-4c8g \

--property hw:cpu_policy=shared

openstack flavor delete FLAVOR_ID

```

RAM 单位通常为 MiB,磁盘单位为 GiB。修改 extra specs 前确认其与计算节点、主机聚合、NUMA、Huge Page 或 PCI 配置匹配。

## 4. 实例管理

```bash

openstack server list --all-projects

openstack server show VM

openstack server create \

--flavor general-4c8g \

--image IMAGE \

--network NETWORK \

--key-name KEYPAIR \

--security-group default \

VM_NAME

openstack server stop VM

openstack server start VM

openstack server reboot --hard VM

openstack server delete VM

```

查看创建事件和控制台:

```bash

openstack server event list VM

openstack server event show VM REQUEST_ID

openstack console log show VM

openstack console url show VM

```

变更规格:

```bash

openstack server resize --flavor NEW_FLAVOR VM

openstack server resize confirm VM

# 验证失败时

openstack server resize revert VM

```

不要在未验证业务、磁盘和网络的情况下直接 confirm。

## 5. 网络、子网与端口

```bash

openstack network list

openstack network show NETWORK

openstack subnet list

openstack port list

openstack router list

openstack network agent list

```

创建网络和子网:

```bash

openstack network create demo-net

openstack subnet create \

--network demo-net \

--subnet-range 192.0.2.0/24 \

--allocation-pool start=192.0.2.100,end=192.0.2.200 \

--gateway 192.0.2.1 \

--dns-nameserver 1.1.1.1 \

demo-subnet

```

创建固定 IP 端口并连接实例:

```bash

openstack port create \

--network demo-net \

--fixed-ip subnet=demo-subnet,ip-address=192.0.2.120 \

demo-port

openstack server add port VM demo-port

openstack server remove port VM demo-port

```

使用文档保留网段作为示例,生产时替换为经过规划的网络;先确认地址未占用和端口未绑定。

## 6. 安全组

```bash

openstack security group create web-sg

openstack security group rule create \

--ingress --ethertype IPv4 \

--protocol tcp --dst-port 22 \

--remote-ip 198.51.100.0/24 \

web-sg

openstack security group rule create \

--ingress --ethertype IPv4 \

--protocol tcp --dst-port 443 \

--remote-ip 0.0.0.0/0 \

web-sg

openstack server add security group VM web-sg

```

不要为了排障永久放行 1:65535 或关闭端口安全。若临时放开,必须有变更记录、回收时间和替代防护。

## 7. 镜像管理

```bash

openstack image list

openstack image show IMAGE

openstack image create \

--file server.qcow2 \

--disk-format qcow2 \

--container-format bare \

--private \

server-image

openstack image save --file downloaded.qcow2 IMAGE

openstack image set --protected IMAGE

```

上传前使用 qemu-img info 检查格式,并验证来源、校验和、cloud-init、VirtIO 驱动和安全更新。

## 8. 卷、快照与备份

```bash

openstack volume list

openstack volume create --size 20 data-volume

openstack server add volume VM data-volume

openstack server remove volume VM data-volume

openstack volume snapshot create --volume data-volume data-snapshot

openstack volume backup create data-volume

```

卷挂载成功后还需在操作系统内检查设备、创建文件系统和挂载。卸载前先停止写入、卸载文件系统,再从实例分离,避免数据损坏。

## 9. 计算节点与服务状态

```bash

openstack compute service list

openstack hypervisor list --long

openstack hypervisor show HYPERVISOR

openstack resource provider list

openstack allocation candidate list \

--resource VCPU=4 \

--resource MEMORY_MB=8192

```

维护节点前先禁用调度并确认实例迁移策略:

```bash

openstack compute service set --disable COMPUTE_HOST nova-compute

openstack compute service set --enable COMPUTE_HOST nova-compute

```

## 10. 命令执行前的安全检查

- 用 show 确认资源 ID、项目和状态。

- 删除、迁移、分离卷等操作先备份并确认影响范围。

- 自动化脚本启用错误退出和日志,但不得记录 Token 或密码。

- 命令是否支持取决于服务版本和 API microversion,执行前查询本环境帮助:openstack help COMMAND

- 对重要操作使用 --wait 并检查最终状态与服务日志。

## 参考资料

- https://docs.openstack.org/python-openstackclient/latest/cli/command-list.html

- https://docs.openstack.org/python-openstackclient/latest/cli/command-objects/server.html

- https://docs.openstack.org/python-openstackclient/latest/cli/command-objects/port.html

原创

OpenStack CLI 常用命令手册:计算、网络、镜像、卷与项目管理

本文链接: OpenStack CLI 常用命令手册:计算、网络、镜像、卷与项目管理

本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

评论交流

文章目录