欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

改变libvirt VM镜像的默认位置的方法

程序员文章站 2024-02-07 20:02:58
我使用libvirt和virt-manager在我的Linux系统上创建虚拟机。我注意到虚拟机镜像位于/var/lib/libvirt/images目录。有没有办法改变虚拟机镜像的默认路径?... 14-11-20...

提问: 我使用libvirt和virt-manager在我的linux系统上创建虚拟机。我注意到虚拟机镜像位于/var/lib/libvirt/images目录。有没有办法改变虚拟机镜像的默认路径?

libvirt和它的gui前端virt-manager可以使用不同的虚拟机管理程序创建和管理vm,例如lvm和xen。默认上所有的虚拟机镜像通过libvirt创建到/var/lib/libvirt/images目录。然而,这有时并不是我们希望的。比如 /var/lib/libvirt/images 此处的磁盘分区大小有限。或者你想要存储所有的虚拟机镜像到一个特定的用于管理的仓库中。

改变libvirt VM镜像的默认位置的方法

实际上,你可以非常容易地改变libvirt镜像的默认目录,或者称之为“存储池”。

有两种方法可以改变默认存储池。

方法一: virt-manager gui

如果你正在使用virt-manager gui程序,改变默认存储池非常容易。

进入virt-manager的菜单gui “编辑” -> "连接细节"。

改变libvirt VM镜像的默认位置的方法

你可以看到如下所是的默认存储池。在窗口的左下角,点击叉形按钮,将会停止默认的存储池。存储池一旦停止后,点击右边的垃圾桶,将会删除存储池。注意这个动作不会删除池中的镜像。

现在点击左边的加号增加一个新的存储池。

改变libvirt VM镜像的默认位置的方法

输入新的存储池的名字(比如:default),并且选择存储池的类型。本例中,因为我们只是改变存储池目录所以选择“文件系统目录”。

改变libvirt VM镜像的默认位置的方法

输入新的存储池路径(比如,/storage)。

改变libvirt VM镜像的默认位置的方法

这时,新的存储池应该启动了,并且自动在你创建一个新的虚拟机的时候使用。

改变libvirt VM镜像的默认位置的方法

方法二: virsh 命令行

另外一个改变默认存储池目录的方法是使用来自libvirt包的virsh 命令行工具。

首先,运行下面的命令来导出默认存储池的xml定义。

 $ virsh pool-dumpxml default > pool.xml 

用文本编辑器打开xml文件,并且改变节点中的/var/lib/libvirt/images改成新的地址。

xml/html code复制内容到剪贴板
  1. <pool type='dir'>  
  2.   <name>default</name>  
  3.   <uuid>0ec0e393-28a2-e975-feec-0c7356f38d08</uuid>  
  4.   <capacity unit='bytes'>975762788352</capacity>  
  5.   <allocation unit='bytes'>530052247552</allocation>  
  6.   <available unit='bytes'>445710540800</available>  
  7.   <source>  
  8.   </source>  
  9.   <target>  
  10.     <path>/var/lib/libvirt/images</path>  
  11.     <permissions>  
  12.       <mode>0711</mode>  
  13.       <owner>-1</owner>  
  14.       <group>-1</group>  
  15.     </permissions>  
  16.   </target>  
  17. </pool>  

移除现在的默认池。

$ virsh pool-destroy default 
pool default destroyed

现在创建一个基于更新后的xml文件的新存储池。

$ virsh pool-create pool.xml 
pool default created from pool.xml

这时,默认池已经改变到新的地址了,并且可以使用了。