Linux 有问必答：如何改变libvirt VM镜像的默认位置
提问： 我使用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镜像的默认目
libvirt virt-manager virsh
220.200.4.72
早安～
微博评论
2014-11-19T08:03:02.000
220.200.4.72
@我的印象笔记
微博评论
2014-11-19T08:03:02.000
192.193.132.13
回复@V晓_兜兜:[可爱]小公主早安
微博评论
2014-11-19T09:33:05.000
提问： 我使用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镜像的默认目

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


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


![](/data/attachment/album/201411/18/234452uqd4ipiprzsvadqp.png)


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


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


### 方法一: Virt-Manager GUI


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


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


![](/data/attachment/album/201411/18/234522r5da57g3cgdo5jxe.png)


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


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


![](/data/attachment/album/201411/18/234526ou3jzj9j1uglhl27.jpg)


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


![](/data/attachment/album/201411/18/234528hf5flkj2afawf8al.jpg)


输入新的存储池路径（比如，/storage）。


![](/data/attachment/album/201411/18/234531jtrdm0d2dtx3odb3.jpg)


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


![](/data/attachment/album/201411/18/234534cnzke6zknpjele6n.jpg)


### 方法二: Virsh 命令行


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


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



```
 $ virsh pool-dumpxml default > pool.xml 

```

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



```
<pool type='dir'>
  <name>default</name>
  <uuid>0ec0e393-28a2-e975-feec-0c7356f38d08</uuid>
  <capacity unit='bytes'>975762788352</capacity>
  <allocation unit='bytes'>530052247552</allocation>
  <available unit='bytes'>445710540800</available>
  <source>
  </source>
  <target>
    <path>/var/lib/libvirt/images</path>
    <permissions>
      <mode>0711</mode>
      <owner>-1</owner>
      <group>-1</group>
    </permissions>
  </target>
</pool>

```

移除现在的默认池。



```
$ virsh pool-destroy default 

```



---



```
Pool default destroyed

```

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



```
$ virsh pool-create pool.xml 

```



---



```
Pool default created from pool.xml

```

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




---


via: <http://ask.xmodulo.com/change-default-location-libvirt-vm-images.html>


译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](http://linux.cn/) 荣誉推出

