如何从 libvirt 更改默认存储池?

iva*_*ncz 20 libvirt kvm-virtualization virsh

我正在尝试在 KVM 上使用不同的存储池,以便存储我的 VM 的虚拟磁盘以及我正在使用的操作系统的 ISO。

例如:我想使用/media/work/kvm挂载的目录/dev/sda5作为所有未来情况的默认存储池

要配置、创建和启动一个新的存储池,这很容易,但至少在 Ubuntu 中,如果我从不同的存储池中选择 ISO 并不重要,Virtual Machine Manager总是将我指向默认存储池 ( /var/cache/libvirt) 作为将创建来自我的 VM 的虚拟磁盘的存储。

我怎样才能避免这种情况?

iva*_*ncz 37

在执行这些步骤之前,请确保您以普通用户身份运行这些命令,并且您的用户属于该组libvirtd(在某些系统上libvirt)。

以下是我使用的以下命令:

列出当前池:

$ virsh pool-list
    
Name                 State      Autostart 
-------------------------------------------
default              active     yes 
Run Code Online (Sandbox Code Playgroud)

破坏池:

$ virsh pool-destroy default
Pool default destroyed
Run Code Online (Sandbox Code Playgroud)

取消定义池:

$ virsh pool-undefine default
Pool default has been undefined
Run Code Online (Sandbox Code Playgroud)

创建一个目录来托管新池(如果它不存在):

$ sudo mkdir /media/work/kvm
Run Code Online (Sandbox Code Playgroud)

定义一个名为“default”的新池:

$ virsh pool-define-as --name default --type dir --target /media/work/kvm
Pool default defined
Run Code Online (Sandbox Code Playgroud)

设置池在 libvirt 守护进程启动时启动:

$ virsh pool-autostart default
Pool default marked as autostarted
Run Code Online (Sandbox Code Playgroud)

启动池:

$ virsh pool-start default
Pool default started
Run Code Online (Sandbox Code Playgroud)

检查池状态:

$ virsh pool-list
Name                 State      Autostart 
-------------------------------------------
default              active     yes  
Run Code Online (Sandbox Code Playgroud)

从现在开始,在创建虚拟机时,Virtual Machine Manager 会通知您 *.img 文件(您的 VM 的虚拟磁盘)将保存在 /media/work/kvm。


小智 7

如果只想更改图像路径,还可以default通过运行以下命令来编辑池中的存储路径:

$ virsh pool-edit default
Run Code Online (Sandbox Code Playgroud)

上面的命令将default在编辑器 (vim/nano) 中打开池 xml,现在:

  1. 编辑路径
  2. 保存更改并
  3. 重启libvirt服务