ZStack 安装黑群晖无法创建存储池
错误原因
黑群晖要求硬盘为 SATA 格式,而 ZStack 默认创建的虚拟硬盘格式为 Virtio。解决方法是修改虚拟硬盘的挂载总线类型。
解决步骤
1. 在黑群晖主机上查看 UUID
进入 ZStack 管理界面,找到黑群晖对应的虚拟机实例,记录其 UUID(例如:84a3dded78c5478a835f08f2d11f8afe)。
2. 在宿主机上查看所有虚拟机
SSH 登录到 ZStack 宿主机,执行以下命令列出所有虚拟机:
bash
virsh list --all
3. 通过命令行关闭虚拟机
注意:不能在 ZStack 界面上直接关闭,必须使用命令行。
bash
virsh shutdown 84a3dded78c5478a835f08f2d11f8afe
4. 确认虚拟机关闭成功
等待片刻,检查虚拟机状态是否为 shut off:
bash
virsh dominfo 84a3dded78c5478a835f08f2d11f8afe
看到 State: shut off 即表示已成功关闭。
5. 编辑虚拟机配置文件
使用 vim 编辑对应的 XML 配置文件:
bash
vim /etc/libvirt/qemu/84a3dded78c5478a835f08f2d11f8afe.xml
找到所有 <disk> 块,进行以下两处修改:
- 将
<target dev='vda' bus='virtio'/>中的virtio改为sata。 - 删除
<address type='pci' .../>这一整行。
修改前示例:
xml
<disk type='file' device='disk' snapshot='external'>
<driver name='qemu' type='qcow2' cache='none'/>
<source file='/zstack_data/rootVolumes/.../xxx.qcow2'/>
<target dev='vda' bus='virtio'/>
<boot order='1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
</disk>
修改后示例:
xml
<disk type='file' device='disk' snapshot='external'>
<driver name='qemu' type='qcow2' cache='none'/>
<source file='/zstack_data/rootVolumes/.../xxx.qcow2'/>
<target dev='vda' bus='sata'/>
<boot order='1'/>
</disk>
对所有数据盘(如 vdb、vdc)也做同样修改。
6. 重新定义虚拟机使配置生效
bash
virsh define /etc/libvirt/qemu/84a3dded78c5478a835f08f2d11f8afe.xml
7. 启动虚拟机
bash
virsh start 84a3dded78c5478a835f08f2d11f8afe
8. 验证结果
返回 ZStack Web 管理界面,重新扫描或安装黑群晖,此时应能正常识别到 SATA 硬盘。
核心要点:本质是把所有虚拟硬盘的总线类型从 virtio 改为 sata,并移除可能引起冲突的 PCI 地址行。