如何使用单独的分区来存储 KVM 中的 VM 映像?

如何使用单独的分区来存储 KVM 中的 VM 映像?

我的主机上有以下设置

[root@fake ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              32G   30G  785M  98% /
tmpfs                  12G   76K   12G   1% /dev/shm
/dev/sda1             504M  103M  376M  22% /boot
/dev/sda4             1.6T   63G  1.5T   5% /project
/dev/sr0              3.0G  3.0G     0 100% /media/UDF Volume

由于 上的空间不足/root,我想将虚拟机移至/project(如果可能),并从那里创建所有新虚拟机。一旦解决了第二个问题,移动它们应该不是什么大问题——我无法弄清楚如何指示 KVM 将使用新 VM 创建的虚拟机映像存储在 上,/project而不是/rootKVM 安装的位置。

有没有办法将虚拟机映像存储在与 KVM 本身不同的分区上?

答案1

将磁盘添加到 KVM 存储池。我使用 virt-manager,但我猜 virsh 也可以做到这一点。通过 virt-manager,对于新 VM,编辑,选择“连接详细信息”。打开存储选项卡。单击 + 按钮添加存储池,然后选择存储类型。我相信你想要文件系统。

答案2

将 KVM 中的虚拟机移动到另一个磁盘的过程需要几个步骤。您需要做的第一件事是在第二个磁盘上设置一个新的存储池。这可以在 virsh 或 virt-manager 中完成。要在 virsh 中执行此操作,您首先需要创建一个 XML 文件,该文件将在创建存储池期间引用。这是一个示例 XML 文件,您可以针对特定系统进行修改。

 <pool type='disk'>
   <name>newpool</name>
     <source>
       <device path='/dev/sdb'/>
         <format type='gpt'/>
     </source>
   <target>
     <path>/dev</path>
   </target>
 </pool>

创建 XML 文件后,用于virsh pool-define /dir/to/newpool.xml创建 KVM 存储池。

接下来使用virsh pool-start命令初始化您刚刚创建的新池。您可以使用来验证它是否已成功创建virsh pool-list --all。您应该得到类似以下内容:

# virsh pool-list --all
Name                 State      Autostart 
-----------------------------------------
default              active     yes       
newpool              active     no

您需要做的最后一件事是使用 为新池打开自动启动virsh pool-autostart newpool。这会将 libvirtd 服务配置为在服务启动时自动启动磁盘。您可以virsh pool-list --all再次运行,现在您应该会看到“自动启动”列下显示“是”。您可以做的最后一件事是检查 KVM 是否报告了新存储池的正确大小和其他信息。可以使用此命令找到此信息virsh pool-info newpool

创建新池后,您可以开始在不同的磁盘上创建虚拟机。希望这能解答您的问题。

相关内容