在KVM中配置共享存储资源需结合存储类型(如NFS/iSCSI/Ceph)和虚拟化管理工具,核心步骤如下:
-
存储服务部署:
- NFS:安装nfs-utils,配置共享目录并导出(/etc/exports),设置权限与防火墙规则。
- iSCSI:部署targetcli或使用外部存储设备,创建LUN并授权访问。
- Ceph:部署RBD池,生成客户端密钥并为KVM主机授权。
-
主机端挂载:
- NFS:在KVM主机执行
mount -t nfs <server_ip>:/path /mnt/kvm_shared
,确保fstab持久化。 - iSCSI:安装iscsi-initiator,通过
iscsiadm
连接目标,分区并格式化为XFS/ext4。 - Ceph:安装ceph-common,映射RBD镜像(
rbd map <pool>/<image>
)并挂载。
- NFS:在KVM主机执行
-
Libvirt存储池配置:
- 命令行:
virsh pool-define-as kvm_shared_dir dir --target /mnt/kvm_shared --type netfs
- XML定义存储池类型(dir/diskfs/netfs/scsi等),启动并设为自启(
virsh pool-start/autostart
)。
- 命令行:
-
虚拟机磁盘分配:
- 使用
virt-install
或virt-manager创建VM时,指定共享存储池路径(如/mnt/kvm_shared/vm_disk.qcow2)。 - 或通过virsh附加磁盘:
virsh attach-disk <vm_name> /mnt/kvm_shared/new_disk.img vdb --persistent
- 使用
-
动态迁移与HA:
- 执行在线迁移:
virsh migrate --live <vm_name> qemu+ssh://target_host/system --unsafe
- 结合集群工具(如Pacemaker)实现故障转移,依赖共享存储保证磁盘状态一致性。
- 执行在线迁移:
注意事项:
- SELinux/AppArmor需放行存储路径(
semanage fcontext/chcon
或调整策略)。 - 网络优化:为存储流量分配独立VLAN或使用RDMA/RoCE降低延迟。
- 监控I/O性能:通过
iostat -dx 1
或ceph osd perf
排查存储瓶颈。 - 权限控制:避免多主机同时写入非集群文件系统(如ext4),建议使用GFS2/OCFS2或分布式存储。