十堰市网站建设_网站建设公司_导航菜单_seo优化
2025/12/23 1:39:13 网站建设 项目流程

太理解你了,这种在 OpenStack 里被一个权限配置折磨好几天的痛苦,正是每个架构师成长的必经之路。

为了方便你记录和分享,我整理了这篇《ARM64 架构下 OpenStack 部署 UOS 提示“磁盘空间不足”的终极解决方案》。这篇博客涵盖了从 Cinder 安装到权限修复,再到成功挂载 100GB 硬盘的全过程。


ARM64 架构 OpenStack 部署 UOS 提示“磁盘空间不足”修复指南

1. 问题背景

在 ARM64 环境下部署 UOS 等国产操作系统时,安装程序默认只能看到 LiveCD 挂载的临时小磁盘(几 GB),导致提示“磁盘空间不足”。要解决此问题,必须通过 Cinder (块存储服务) 创建 100GB 的虚拟卷来引导系统。

2. 第一阶段:安装与数据库配置

首先,确保控制节点(Controller)安装了 Cinder 组件。

安装软件包

dnf install -y openstack-cinder

数据库授权 (关键:处理 1045 报错)

必须确保 cinder 用户拥有从本地和网络 IP 访问的权限。

-- 进入数据库 mysql -u root -p
CREATE DATABASE IF NOT EXISTS cinder;
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY '000000';
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'192.168.1.106' IDENTIFIED BY '000000';
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY '000000';
FLUSH PRIVILEGES;

3. 第二阶段:身份认证与角色关联 (最坑的地方)

这是解决 401 Unauthorized 和 503 错误的关键! 仅仅创建用户是不够的,必须将用户绑定到 service 项目。

# 1. 创建服务与端点
openstack service create --name cinder --description "OpenStack Block Storage" volumev3
openstack endpoint create --region RegionOne volumev3 public http://192.168.1.106:8776/v3/%\(project_id\)s
openstack endpoint create --region RegionOne volumev3 internal http://192.168.1.106:8776/v3/%\(project_id\)s
openstack endpoint create --region RegionOne volumev3 admin http://192.168.1.106:8776/v3/%\(project_id\)s# 2. 创建用户并关联角色 (核心!)
openstack user create --domain default --password 000000 cinder
openstack role add --project service --user cinder admin

4. 第三阶段:配置文件修改与同步

编辑 /etc/cinder/cinder.conf,确保 API 能正确验证身份并连接数据库。

[database]
connection = mysql+pymysql://cinder:000000@192.168.1.106/cinder[keystone_authtoken]
www_authenticate_uri = http://192.168.1.106:5000
auth_url = http://192.168.1.106:5000
memcached_servers = 192.168.1.106:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = cinder
password = 000000

同步数据库并启动

su -s /bin/sh -c "cinder-manage db sync" cinder
systemctl restart openstack-cinder-api openstack-cinder-scheduler
systemctl restart httpd memcached

5. 第四阶段:镜像属性优化 (ARM64 适配)

为了让 UOS 正确识别 VirtIO 磁盘控制器,需要给镜像添加 UEFI 和磁盘总线属性:

openstack image set \--property hw_firmware_type=uefi \--property hw_machine_type=virt \--property hw_scsi_model=virtio-scsi \--property hw_disk_bus=scsi \--property hw_video_model=virtio \"UOS-20-Desktop-ARM64"

6. 最终操作:从“卷”创建实例

  1. 创建卷:在 Horizon 界面“卷”菜单下,创建一个 100GB 的卷,源选择你的 UOS 镜像
  2. 启动实例:创建实例时,在“源”选项卡中选择“卷”,并选中刚才创建好的 100GB 卷。
  3. 验证:进入 VNC 控制台,你会发现安装程序现在能识别到真实的 100GB 硬盘。

💡 避坑总结

  • 401/503 错误:多半是 openstack role add 没做,导致 Cinder 无法从 Keystone 获取 Token。
  • 1045 错误:MySQL 授权必须包含 % 或具体的 controller 主机名。
  • 磁盘不显示:必须设置 hw_disk_bus=scsivirtio,否则 ARM 虚拟机可能找不到硬盘。

这篇内容应该能非常清晰地帮你记录下这段“填坑”经历。如果你在写博客时需要更详细的配置代码段,随时告诉我。现在你的卷状态显示为 available 了吗?

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询