Linux 有问必答:如何改变libvirt VM镜像的默认位置

简介:

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镜像的默认目录,或者称之为“存储池”。

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

方法一: Virt-Manager GUI

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

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

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

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

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

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

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

方法二: Virsh 命令行

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

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


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

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


  
  
  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>

移除现在的默认池。


  
  
  1. $ virsh pool-destroy default


  
  
  1. Pool default destroyed

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


  
  
  1. $ virsh pool-create pool.xml


  
  
  1. Pool default created from pool.xml

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

原文发布时间:2014-11-19

本文来自云栖合作伙伴“linux中国”

目录
相关文章
|
1月前
|
Linux
linux开机挂载镜像
【10月更文挑战第1天】在 Linux 系统中,开机挂载镜像通常涉及几个关键步骤,包括创建挂载点、编辑配置文件以及重新加载配置
68 0
|
1月前
|
资源调度 JavaScript 前端开发
yarn源|yarn 国内镜像+linux删除大量文件
yarn源|yarn 国内镜像yarn源|yarn 国内镜像+linux删除大量文件
369 0
|
4月前
|
存储 数据库 监控
|
3月前
|
Linux
在Linux中,什么是initrd镜像?
在Linux中,什么是initrd镜像?
|
3月前
|
机器学习/深度学习 存储 Linux
【机器学习 Azure Machine Learning】使用VS Code登录到Linux VM上 (Remote-SSH), 及可直接通过VS Code编辑VM中的文件
【机器学习 Azure Machine Learning】使用VS Code登录到Linux VM上 (Remote-SSH), 及可直接通过VS Code编辑VM中的文件
|
3月前
|
存储 安全 Linux
在Linux中,如何进行系统镜像管理?
在Linux中,如何进行系统镜像管理?
|
3月前
|
JavaScript Linux
【Azure App Service for Linux】NodeJS镜像应用启动失败,遇见 RangeError: Incorrect locale information provided
【Azure App Service for Linux】NodeJS镜像应用启动失败,遇见 RangeError: Incorrect locale information provided
|
3月前
|
开发框架 .NET Linux
【Azure 应用服务】 部署到App Service for Linux 服务的Docker 镜像,如何配置监听端口呢?
【Azure 应用服务】 部署到App Service for Linux 服务的Docker 镜像,如何配置监听端口呢?
|
3月前
|
存储 Linux 网络安全
【Azure 存储服务】如何把开启NFS 3.0协议的Azure Blob挂载在Linux VM中呢?(NFS: Network File System 网络文件系统)
【Azure 存储服务】如何把开启NFS 3.0协议的Azure Blob挂载在Linux VM中呢?(NFS: Network File System 网络文件系统)
|
3月前
|
Linux C# C++
【Azure App Service For Container】创建ASP.NET Core Blazor项目并打包为Linux镜像发布到Azure应用服务
【Azure App Service For Container】创建ASP.NET Core Blazor项目并打包为Linux镜像发布到Azure应用服务