主题
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 的主要功能?
核心要点:
- 认证 (Authentication): 验证用户身份 → 发放 Token
- 授权 (Authorization): RBAC 角色权限控制
- 服务目录 (Service Catalog): 各组件 API Endpoint 注册
- 多租户管理: 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-api | Controller | REST API 入口 |
| nova-conductor | Controller | DB 代理,隔离 compute 直连 DB |
| nova-scheduler | Controller | 调度 VM 到最优节点 |
| nova-compute | Compute | 管理 hypervisor,执行 VM 操作 |
| nova-novncproxy | Controller | VNC 控制台代理 |
| placement | Controller | 资源追踪与分配 |
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. 更新状态 → ACTIVEQ12: 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 Network | Self-service |
|---|---|---|
| 类型 | flat/VLAN | Geneve/VXLAN |
| 管理员创建 | 是 | 租户自助 |
| 物理映射 | 直接映射物理网 | overlay 隧道 |
| 用途 | 外部网络/存储网 | 租户业务网络 |
| DHCP | 外部 DHCP 或 Neutron | Neutron 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_hostsQ34: 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: 创建初始网络/flavorQ36: OpenStack 滚动升级策略?
核心要点:
- 控制节点先升级 (分批,保持 VIP 可用)
- 验证控制平面健康
- 计算节点分批升级 (--limit)
- 验证每个批次后服务正常
- 数据库迁移:
nova-manage db sync - 回滚: 使用旧版本镜像重新部署
十、面试软技能
Q37: 你管理过最大规模的 OpenStack 集群?
回答框架:
- 节点数 / VM 数 / 存储容量
- 遇到的最大挑战及解决方案
- 具体数据: "管理过 500 节点、15000 VM 的集群..."
- 突出: 故障处理经验、性能调优成果
Q38: 遇到过最严重的故障?
回答框架 (STAR):
- Situation: 描述故障场景
- Task: 你的角色和责任
- Action: 排查步骤和解决措施
- Result: 结果和后续预防方案
Q39: 如何保证 OpenStack 集群稳定性?
回答框架:
- 监控: Prometheus + Grafana + 告警
- 备份: DB 每日备份 + Ceph 快照
- 容量: 70% 水位扩容预警
- 变更: 灰度发布 + 回滚方案
- 演练: 定期故障演练
- 文档: 标准操作流程 (SOP)