Skip to content

OpenStack 面试手册(速查版)

覆盖初级→高级全阶段面试知识点
按组件分类,每道题附「核心回答要点」
面试前 2 小时快速过一遍


一、虚拟化与云计算基础(必考)

Q1: KVM 与 Xen 的区别?

核心要点:

  • KVM 是 Linux 内核模块 (CPU 需 VT-x/AMD-V),Xen 是独立 hypervisor
  • KVM 由内核调度 VM,Xen 有 Domain 0 管理特权域
  • KVM 性能更好 (无额外管理层),OpenStack 默认使用 KVM
  • KVM 需要硬件辅助虚拟化,Xen 支持半虚拟化

Q2: 什么是 libvirt?它在 OpenStack 中的角色?

核心要点:

  • libvirt 是虚拟化 API 抽象层,支持 KVM/Xen/VMware/LXC
  • nova-compute 通过 libvirt API 调用 hypervisor (非直接操作 KVM)
  • libvirtd 守护进程运行在计算节点,接收 nova-compute 指令
  • XML domain 定义 → libvirt → QEMU/KVM 进程

Q3: 解释 IaaS / PaaS / SaaS?

核心要点:

  • IaaS: 提供 VM/存储/网络 (OpenStack, AWS EC2)
  • PaaS: 提供运行环境 (K8s, Heroku, Cloud Foundry)
  • SaaS: 提供应用 (Office365, Salesforce)
  • OpenStack 是 IaaS,上层可对接 K8s (Magnum/Zun)

Q4: OpenStack 中 VM 的生命周期状态?

核心要点:

BUILDING → ACTIVE → PAUSED/SUSPENDED/STOPPED
   ↓          ↓
 ERROR     RESCUED → SHELVED → DELETED
  • BUILDING: 正在创建
  • ACTIVE: 正常运行
  • PAUSED: 暂停 (内存保留)
  • SUSPENDED: 挂起 (内存写磁盘)
  • STOPPED: 关机 (类似断电)
  • ERROR: 创建/操作失败
  • SHELVED: 搁置 (资源释放,可恢复)
  • RESCUED: 救援模式 (用临时镜像启动)

Q5: Flavor 是什么?如何设计规格?

核心要点:

  • Flavor = VM 规格模板 (vCPU + 内存 + 磁盘 + 网络带宽)
  • Extra specs 可控制调度行为 (CPU 绑定、NUMA、GPU)
  • 生产建议: 大/中/小 3 档,配合不同业务
  • 超分比影响实际可用资源: 实际vCPU = 物理核 × cpu_allocation_ratio

二、Keystone 认证(必考)

Q6: Keystone 的主要功能?

核心要点:

  1. 认证 (Authentication): 验证用户身份 → 发放 Token
  2. 授权 (Authorization): RBAC 角色权限控制
  3. 服务目录 (Service Catalog): 各组件 API Endpoint 注册
  4. 多租户管理: Project/Domain/User/Group 管理

Q7: Token 类型?Fernet 的优势?

核心要点:

  • UUID Token: xxx DB,需清理,简单但有性能瓶颈
  • Fernet Token: xxx (AES256),不存 DB,无清理需求
  • Fernet 密钥轮换: 0=主密钥, 1=次密钥, 定期 rotate
  • 生产必须用 Fernet,配合 Memcached 缓存

Q8: 解释 Domain/Project/User/Role 关系?

核心要点:

Domain (域)
 └── Project (项目/租户) — 资源隔离边界
      └── User (用户) — 可有多个角色
           └── Role (角色) — admin/member/reader
  • 一个 User 可属于多个 Project (不同角色)
  • Role 定义权限: admin > member > reader
  • Domain 用于多组织隔离 (企业多部门)

Q9: Service Token 与 User Token 区别?

核心要点:

  • User Token: xxx
  • Service Token: xxx (如 Nova 调用 Neutron)
  • Service Token 在 [keystone_authtoken] 中配置
  • 生产环境使用 keystone_authtoken middleware 验证

三、Nova 计算服务(重点)

Q10: Nova 核心组件及各自职责?

核心要点:

组件位置职责
nova-apiControllerREST API 入口
nova-conductorControllerDB 代理,隔离 compute 直连 DB
nova-schedulerController调度 VM 到最优节点
nova-computeCompute管理 hypervisor,执行 VM 操作
nova-novncproxyControllerVNC 控制台代理
placementController资源追踪与分配

Q11: VM 创建流程?(高频!)

核心要点:

1. POST /servers → nova-api 验证
2. 写 DB (instance 记录, status=building)
3. RPC → scheduler 选节点 (Filter + Weigh)
4. RPC → 目标 nova-compute
5. 调 Neutron 分配端口
6. 调 Cinder 分配卷
7. 下载镜像 (Glance) → 创建 COW 磁盘
8. libvirt 生成 XML → 启动 QEMU
9. 更新状态 → ACTIVE

Q12: Scheduler 的 Filter 和 Weigher?

核心要点:

  • Filter (过滤): 排除不合适的节点
    • ComputeFilter (节点是否 enabled)
    • AvailabilityZoneFilter (AZ 匹配)
    • ComputeCapabilitiesFilter (资源是否够)
    • ServerGroupAntiAffinityFilter (反亲和)
  • Weigher (权重): 在合格节点中选最优
    • RAMWeigher (内存剩余多优先)
    • DiskWeigher (磁盘剩余多优先)
    • 可自定义 weigher 实现业务调度策略

Q13: 热迁移 (Live Migration) 原理?

核心要点:

  • 前提: CPU 兼容 + 共享存储 (或块迁移)
  • 过程: 迭代复制内存脏页 → 最后切换 (短暂暂停)
  • 技术: Pre-copy (默认) vs Post-copy
  • 配置: live_migration_tunnelled=true (加密)
  • 失败原因: 脏页速率 > 迁移带宽 → 启用 auto-converge
  • 命令: openstack server migrate --live-migration --host <target>

Q14: Nova Cells v2 是什么?

核心要点:

  • 将大规模集群划分为多个 Cell (每个 Cell 独立 DB/MQ)
  • Cell 0: 管理节点,不运行 VM
  • Cell 1+: 各计算 Cell,独立数据库
  • 解决单 DB 性能瓶颈 (千节点必需)
  • nova-manage cell_v2 discover_hosts 发现新节点

Q15: 什么是 Rescue 模式?

核心要点:

  • VM 系统盘损坏时的修复手段
  • 用临时 rescue 镜像启动,原磁盘挂载为第二块盘
  • openstack server rescue <vm-id> --rescue-image <image>
  • 修复后 openstack server unrescue <vm-id> 恢复

四、Neutron 网络(重点)

Q16: Neutron 架构核心组件?

核心要点:

  • neutron-server: API 服务
  • neutron-ovn-agent: OVN 计算节点代理
  • OVN Northbound DB: 逻辑网络定义
  • OVN Southbound DB: 逻辑流表
  • ovn-northd: NB → SB 翻译器
  • ovn-controller: 每节点的 OVS 控制器

Q17: Provider Network vs Self-service Network?

核心要点:

特性Provider NetworkSelf-service
类型flat/VLANGeneve/VXLAN
管理员创建租户自助
物理映射直接映射物理网overlay 隧道
用途外部网络/存储网租户业务网络
DHCP外部 DHCP 或 NeutronNeutron DHCP

Q18: 浮动 IP 的实现原理?

核心要点:

  • 浮动 IP 本质是 SNAT + DNAT (iptables/ovn)
  • 外网 → 浮动IP: DNAT 到 VM 私有 IP
  • VM → 外网: SNAT 将源 IP 替换为浮动 IP
  • OVN 中通过 gateway chassis 实现
  • 命令: openstack floating ip create external-net

Q19: Security Group 底层实现?

核心要点:

  • 有状态防火墙 (连接追踪 conntrack)
  • OVS 模式: iptables 规则 + ovs-hybrid-plug
  • OVN 模式: ACL (Access Control List)
  • 方向: ingress (入) / egress (出)
  • 默认: 出方向允许,入方向拒绝
  • 支持 remote-group (安全组间引用)

Q20: East-West 与 North-South 流量区别?

核心要点:

  • East-West: 同租户 VM 间通信 (overlay 隧道直连)
  • North-South: VM ↔ 外部网络 (经 Gateway 节点)
  • Distributed routing: East-West 在计算节点本地路由 (无瓶颈)
  • Centralized routing: North-South 经 Gateway (单点)
  • DVR (分布式虚拟路由) 优化 North-South

五、Cinder 与存储(重要)

Q21: Cinder 架构?后端类型?

核心要点:

  • cinder-api: REST 入口
  • cinder-scheduler: 选择后端
  • cinder-volume: 实际执行 (与存储后端交互)
  • 后端: LVM (本地), Ceph RBD ✅, NFS, 商业 SAN
  • 生产推荐 Ceph RBD: 分布式、快照快、克隆快

Q22: Ceph RBD 与 OpenStack 集成方式?

核心要点:

  • Cinder → Ceph RBD (块存储卷)
  • Nova → Ceph RBD (VM 实例盘)
  • Glance → Ceph RBD (镜像存储)
  • RBD Copy-on-Write: VM 创建时快速克隆 (秒级)
  • 认证: cephx 用户 + keyring

Q23: Ceph CRUSH 算法?

核心要点:

  • CRUSH = Controlled Replication Under Scalable Hashing
  • 伪随机分布数据到 OSD,无需中心元数据
  • CRUSH 规则定义: 副本数 + 故障域 (host/rack/room)
  • 生产: 3 副本 + rack 级故障域 → 任意 1 机架故障不丢数据

Q24: 卷快照 vs 镜像 vs 备份?

核心要点:

  • 快照: 同一后端内的 CoW 快照 (秒级,增量)
  • 镜像: 创建新卷的模板 (完整复制)
  • 备份: 跨后端/跨集群的完整拷贝 (Cinder Backup → Swift/Ceph)
  • 快照链过深影响性能 → flatten 或限制深度

六、Glance 镜像服务

Q25: Glance 后端存储选型?

核心要点:

  • File: 本地磁盘 (单节点/小规模)
  • Ceph RBD ✅: 分布式 (生产推荐)
  • Swift: 对象存储 (大规模镜像)
  • NFS: 共享文件系统
  • 镜像缓存: 计算节点本地缓存 (避免重复下载)

Q26: 镜像格式区别?

核心要点:

  • raw: 原始磁盘镜像 (无压缩,Ceph RBD 必须用 raw)
  • qcow2: QEMU 格式 (支持快照/压缩/瘦分配)
  • vmdk: VMware 格式
  • iso: 光盘镜像 (用于 rescue/安装)
  • 生产: Glance 存 qcow2,Nova 使用 raw (Ceph 场景)

七、高可用与性能(高级)

Q27: OpenStack 控制平面 HA 方案?

核心要点:

HAProxy + Keepalived (API 负载均衡 + VIP)
  ├── MariaDB Galera (数据库同步复制)
  ├── RabbitMQ 镜像队列 (消息不丢失)
  ├── Memcached (分布式缓存)
  └── 所有 API 服务 (多实例)
  • 最少 3 个控制节点 (Galera 需要奇数)
  • VIP 漂移: Keepalived VRRP 心跳检测
  • Split-brain: 通过仲裁机制避免

Q28: MariaDB Galera 注意事项?

核心要点:

  • 同步复制: 所有节点数据一致
  • 必须奇数节点 (避免脑裂)
  • 不支持: MyISAM 表、LOCK TABLES、外键约束
  • 写入性能: 受最慢节点限制
  • 监控: wsrep_cluster_status, wsrep_local_state_comment
  • 故障恢复: 最后一个节点启动 → --wsrep-new-cluster

Q29: RabbitMQ 镜像队列 vs Quorum 队列?

核心要点:

  • 经典镜像队列 (Classic Mirrored): 基于 GM 协议,旧版本
  • Quorum 队列: 基于 Raft 共识,3.8+ 推荐
  • Quorum 优势: 强一致、自动 leader 选举、性能更好
  • 配置: ha-mode: exactly, ha-params: 3
  • 监控: 消息堆积 = messages_ready + messages_unacknowledged

Q30: 大规模部署关键调优项?

核心要点:

  • DB: max_connections=4096, innodb_buffer_pool_size=64G
  • RabbitMQ: ha-mode, consumer_timeout=1800000
  • Nova: max_concurrent_builds=20, Cells v2
  • API Workers: 增大 worker 数 (等于 CPU 核心数)
  • Connection Pool: max_pool_size=50, max_overflow=100
  • Timeout: rpc_response_timeout=600

八、运维实战(必考场景)

Q31: VM 创建失败如何排查?

核心要点:

1. openstack server show <id> -c fault → 错误信息
2. "No valid host" → 计算节点 down 或资源不足
3. "Build failed" → 镜像问题/网络问题
4. 检查: nova-compute 日志 + neutron agent 状态
5. 检查: Placement API 资源分配

Q32: VM 网络不通如何排查?

核心要点:

1. VM 内部: ip addr, ping gateway, ping DNS
2. 安全组: 是否允许目标端口
3. VNC 控制台: 确认 VM 是否正常运行
4. OVN/OVS: ovs-vsctl show, ovn-trace
5. DHCP: 是否获取到 IP
6. 路由: 路由器是否关联子网和外网
7. 浮动 IP: 是否绑定且 external-net 可达

Q33: 计算节点故障处理流程?

核心要点:

1. 确认节点状态: openstack compute service list
2. 如果是计划维护:
   a. disable nova-compute
   b. live migrate 所有 VM
   c. 维护 → enable
3. 如果是意外宕机:
   a. VM HA 自动在其他节点重建 (如启用)
   b. 或手动 evacuate
   c. 节点恢复后 discover_hosts

Q34: Ceph HEALTH_WARN 如何处理?

核心要点:

  • clock skew → 检查 chrony 同步
  • nearfull → 扩容 OSD 或清理数据
  • PG degraded → 检查 OSD 状态,等待 recovery
  • slow requests → 检查 OSD 磁盘健康 (smartctl)
  • too few PGs → 增加 PG 数

九、部署与升级

Q35: Kolla-Ansible 部署流程?

核心要点:

1. 准备: 安装 Docker + Ansible + kolla-ansible
2. bootstrap-servers: 初始化节点
3. prechecks: 环境预检
4. pull: 拉取镜像
5. deploy: 部署所有服务
6. post-deploy: 创建初始网络/flavor

Q36: OpenStack 滚动升级策略?

核心要点:

  1. 控制节点先升级 (分批,保持 VIP 可用)
  2. 验证控制平面健康
  3. 计算节点分批升级 (--limit)
  4. 验证每个批次后服务正常
  5. 数据库迁移: nova-manage db sync
  6. 回滚: 使用旧版本镜像重新部署

十、面试软技能

Q37: 你管理过最大规模的 OpenStack 集群?

回答框架:

  • 节点数 / VM 数 / 存储容量
  • 遇到的最大挑战及解决方案
  • 具体数据: "管理过 500 节点、15000 VM 的集群..."
  • 突出: 故障处理经验、性能调优成果

Q38: 遇到过最严重的故障?

回答框架 (STAR):

  • Situation: 描述故障场景
  • Task: 你的角色和责任
  • Action: 排查步骤和解决措施
  • Result: 结果和后续预防方案

Q39: 如何保证 OpenStack 集群稳定性?

回答框架:

  1. 监控: Prometheus + Grafana + 告警
  2. 备份: DB 每日备份 + Ceph 快照
  3. 容量: 70% 水位扩容预警
  4. 变更: 灰度发布 + 回滚方案
  5. 演练: 定期故障演练
  6. 文档: 标准操作流程 (SOP)