KVM 虚机镜像扩容和压缩的操作

KVM 虚机镜像扩容和压缩的操作

KVM 是一种基于 Linux 内核的虚拟化技术,能够实现将一台物理机器上的计算资源分隔成多个虚拟机从而提高硬件资源的利用率和灵活性。使用虚拟机的过程中,由于系统和软件的安装,虚拟机的磁盘镜像经常需要进行扩容或压缩。本文就介绍如何在 KVM 虚拟机上实现磁盘镜像的扩容和压缩。

KVM 虚机磁盘扩容

步骤一:关闭虚拟机

在扩容磁盘的过程中,必须先关闭虚拟机。使用下面的命令可以关闭虚拟机:

virsh shutdown <虚拟机名称>

步骤二:编辑 XML 配置文件

使用下面的命令,编辑虚拟机的 XML 配置文件,找到磁盘镜像对应的部分:

virsh edit <虚拟机名称>

找到磁盘镜像所在的设备,在 <disk> 标签内部加入 <capacity unit='G'>扩容大小</capacity> 标签,如下所示:

<disk type='file' device='disk'>
   <driver name='qemu' type='qcow2'/>
   <source file='/var/lib/libvirt/images/<镜像文件名>.qcow2'/>
   <target dev='vda' bus='virtio'/>
   <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
   <discard mode='unmap'/>
   <capacity unit='G'>10</capacity>
</disk>

注意修改 <capacity> 标签中的 10 参数为需要扩容的大小(GB)。

步骤三:启动虚拟机并扩容磁盘

保存 XML 配置文件后,使用下面的命令重新启动虚拟机:

virsh start <虚拟机名称>

虚拟机启动后,使用下面的命令重新配置磁盘大小:

qemu-img resize <镜像文件名>.qcow2 +<扩容大小>G

注意,<镜像文件名>.qcow2 指的是虚拟机磁盘镜像文件的名称,+<扩容大小>G 表示将磁盘扩容 <扩容大小>GB。

完成以上步骤后,开机登录虚拟机,使用 lsblk 命令可以查看磁盘是否扩容成功。

KVM 虚机磁盘压缩

示例一:进入虚拟机压缩磁盘

如果磁盘压缩前的使用率较低,那么进入虚拟机,删除一些不必要的文件或者清理系统缓存,可以减少文件系统的大小,然后再执行磁盘压缩操作。虚拟机磁盘压缩操作需要使用 qemu-img 命令。对于 qcow2 格式的文件,压缩会把文件里面已经标记为删除的虚拟块删除,然后将使用的块移到文件最后面,并将文件截断,因此可以减小文件大小。

连接到虚拟机上,执行下面的命令:

sudo apt-get install zerofree
sudo apt-get autoremove && sudo apt-get clean

zerofree 是一个用于清空虚拟机系统磁盘空间的工具。autoremoveclean 命令则是用于删除不再需要的软件包和缓存文件。

执行以上命令后,我们再执行 sudo shutdown -h now 命令,等待虚拟机关闭即可。

示例二:使用 qemu-img 压缩虚拟磁盘

执行下面的命令,压缩虚拟机磁盘:

qemu-img convert -c -f qcow2 <原镜像文件>.qcow2 <新镜像文件>.qcow2

这个命令将会使用 qcow2 格式重新编码虚拟磁盘文件,从而压缩文件。<原镜像文件>.qcow2 是虚拟机磁盘镜像文件的名称,<新镜像文件>.qcow2 是新的压缩后磁盘镜像文件的名称。

等待命令执行完成后,我们更新 XML 配置文件,修改虚拟磁盘文件名并删除原始文件。

virsh edit <虚拟机名称>

找到磁盘镜像所在的设备,修改 <source file='原文件地址'/> 中的文件名为新的镜像文件名。

然后使用下面的命令删除原始文件:

rm <原镜像文件>.qcow2

重新启动虚拟机,使用 lsblk 命令可以查看磁盘是否压缩成功。

总结

KVM 虚机磁盘扩容和压缩是日常运维中的基本技能,上述步骤简明扼要,可以让大家迅速上手。需要注意的是,磁盘操作需要在关闭虚拟机后进行,而在操作磁盘后,需要及时更新虚拟机的 XML 配置文件,以保证正常启动虚拟机。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:KVM 虚机镜像扩容和压缩的操作 - Python技术站

(0)
上一篇 2023年5月24日
下一篇 2023年5月24日

相关文章

  • CentOS7-自动化部署web集群

    一、项目要求 1、创建role,通过role完成项目(可能需要多个role)2、部署nginx调度器(node2主机)3、部署2台lnmp服务器(node3,node4主机)4、部署mariadb数据库(node5主机) 主要用的ansible实现自动化部署,ansible的安装教程省略,控制节点安装ansible和Python,受控节点上只需要安装相同版本…

    Linux 2023年4月18日
    00
  • Linux ifconfig命令

    如果config是熟悉Linux网络配置的工具,是用来查询和配置Linux系统上的网络参数和接口信息的命令行工具。下面,我们来详细讲解 ifconfig 命令的作用与使用方法: 1. 安装 ifconfig 命令是Linux系统上的内置命令,即可用性非常高,一般情况下不需要安装。 2. 作用 ifconfig 用于查询和配置Linux系统上的网络参数和接口信…

    Linux 2023年3月28日
    00
  • linux mysql定时备份并压缩

    1.检查mysql备份命令有没有作用 在var目录下创建backup目录,在backup目录下创建mysql目录用于存放mysql备份文件 cd到/var/backup目录下 mysqldump -uroot -pwh5268925 zhaochao > mysql/zhaochao.sql 如果成功,在/var/backup/mysql下会有zhao…

    Linux 2023年4月11日
    00
  • VMware下Centos7桥接方式网络配置步骤详解

    VMware下Centos7桥接方式网络配置步骤详解 在VMware虚拟机中如果要连接外部网络,可以使用桥接方式。本文将详细讲解在VMware下使用桥接方式连接网络的配置步骤。 步骤一:打开网络设置 进入VMware虚拟机,打开网络适配器设置。 # 打开命令行工具,输入如下命令 sudo vi /etc/sysconfig/network-scripts/i…

    Linux 2023年5月24日
    00
  • linux下远程重启apache的方法

    以下是“Linux下远程重启Apache的方法”的完整使用攻略,包含两个示例说明。 步骤 远程登录到服务器。使用SSH客户端连接到服务器,例如PuTTY。 输入以下命令以检查Apache是否正在运行: bash sudo systemctl status apache2 如果Apache正在运行,则会显示“active (running)”状态。 输入以下命…

    Linux 2023年5月13日
    00
  • Linux安装Mycat

    1MyCat安装及启动 MyCat: MyCat的官方网站: http://www.mycat.org.cn/ 下载地址: https://github.com/MyCATApache/Mycat-download 已经更换为: http://dl.mycat.io/1.6-RELEASE/ 第一步:将Mycat-server-1.4-release-201…

    Linux 2023年4月13日
    00
  • linux centos7安装mysql8的教程

    下面是“linuxcentos7安装mysql8的教程”的完整攻略: 安装MySQL8 在CentOS 7上安装MySQL8前,需要先卸载已经安装的旧版本MySQL,卸载指令如下: sudo systemctl stop mysqld sudo yum remove mysql-server mysql mysql-libs sudo rm -rf /var…

    Linux 2023年5月14日
    00
  • scala用ssh2连接Linux

    这个需要安装库: import ch.ethz.ssh2.{Connection, Session, StreamGobbler} 首先用 ip 和 post 创建连接: val conn: Connection = new Connection(ipAddr, post) 判断这个连接是否连接上了,这个用了一个 Boolean 类型判断: def logi…

    Linux 2023年4月12日
    00
合作推广
合作推广
分享本页
返回顶部