【虚拟化】KVM常用命令操作(virsh磁盘管理)

2024-09-02 12:44

本文主要是介绍【虚拟化】KVM常用命令操作(virsh磁盘管理),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、KVM概述

1.1 KVM工具栈

1.2 libvirt架构概述

1.3 KVM磁盘格式介绍

1.4 KVM磁盘操作常见语法

1.5 qemu-img命令简介

1.6 libguestfs安装

二、虚拟机磁盘管理

2.1 查看虚拟机磁盘

2.2 创建虚拟机磁盘

2.3 扩容磁盘容量

2.4 查看虚拟机存储状态

2.5 快照

2.6 虚拟磁盘格式转化


一、KVM概述


1.1 KVM工具栈


上图所示主要描述了kvm的主要工具栈,从大的类别可以分为libvirt和qemu这两大类,其中libvirt中分virtual machine manager 和 virsh。virtual machine manager中的virt-manager是基于图形界面的管理,其他都是可以在命令行直接使用命令来管理虚拟机。

virsh是基于终端命令行管理。两者都是通过libvirt连接至libvirtd进行管理,对于qemu来说,它管理虚拟机上直接调用kvm内核中模块的API进行管理;

1.2 libvirt架构概述


libvirt是用来管理虚拟机或虚拟化功能的软件集合,主要包括:libvirt API,libvirtd进程和virsh工具集三部分。最初的目的是为不同的hypervisor提供统一的管理接口。

libvirtd该后台进程主要实现以下功能:

(1)远程代理所有remote client发送来的命令,由该进程监测执行;

(2)本地环境初始化libvirt服务的启停,用户connection的响应等;

(3)根据环境注册各种Driver(qemu, xen, storage…)的实现

查看libvirtd服务状态

 systemctl status libvirtd

如果libvirtd服务停止运行,那么你将不能管理虚拟机,也就是不能使用virt-manager等工具来管理虚拟机。

查看配置文件

虚拟机的所有配置是放置在一个xml文件中,位置在/etc/libvirt/qemu/目录中

[root@kvm ~]# ll /etc/libvirt/qemu
total 12
drwxr-xr-x. 2 root root   25 Aug  7 10:08 autostart
drwx------. 3 root root   42 Apr 28  2021 networks
-rw-------. 1 root root 3826 Aug  3 20:03 study01.xml
-rw-------. 1 root root 4737 Aug  7 10:08 study02.xml

1.3 KVM磁盘格式介绍


  • raw:⽼牌格式,指定多⼤空间就创建多⼤空间,直接占⽤指定⼤⼩的空间(分50G占⽤ 50G),性能上来说的话还是不错的,不⽀持快照功能。
  • cow:曾经qemu的写时拷⻉的镜像格式,⽬前由于历史遗留原因不⽀持窗⼝模式。从某种意义上来说是个弃子,还没得它成熟就胎死腹中,后来被qcow格式所取代。
  • qcow:⼀代的qemu的cow格式,刚刚出现的时候有⽐较好的特性,但其性能和raw格式对⽐还是有很⼤的差距,⽬前已经被新版本的qcow2取代。
  • qcow2:是openstack默认也是⽐较推荐的格式,⽂件⽐较⼩⽽且做快照也⽐较⼩,空间是动态增⻓,是⽬前⽐较主流的⼀种虚拟化镜像格式,经过优化,⽬前qcow2的性能上接近raw裸格式的性能。

常用镜像类型

特点/类型

raw

qcow2

KVM 默认

IO效率

较高

占用空间

压缩

不支持

支持

后端盘复用

不支持

支持

快照

不支持

支持

1.4 KVM磁盘操作常见语法


# 磁盘基本信息
virsh domblklist --details 虚拟磁盘名称# 磁盘容量调整
qemu-img resize 虚拟磁盘名称 +5G# 挂载磁盘
virsh attach-disk <虚拟机名称> --source <新磁盘名> --target <磁盘类型名> --persistent
注意:
磁盘类型名一般是 sda~ 或者 vda~,这里的 vda 不一定是磁盘内部的信息,而是kvm管理的名称# 卸载磁盘
virsh detach-disk <虚拟机名称> <磁盘类型名>

1.5 qemu-img命令简介


qemu-img是一个功能强大磁盘镜像管理工具,qemu-img --help 包括以下功能:

  • check:检查完整性
  • create:创建镜像
  • commit:提交更改
  • compare:比较
  • convert:转换
  • info:获取信息
  • map:映射
  • snapshot:快照管理
  • rebase:在已有的的基础上创建新的镜像
  • resize:调整大小
  • amend:修订镜像格式选项

1.6 libguestfs安装


libguestfs是一组使用于硬件虚拟化中旨在用于访问及修改磁盘映像的C语言库和配套工具。此工具可查看并编辑由libvirt所管理的虚拟机及其内部文件、为虚拟机撰写脚本、创建虚拟机等。

libguestfs几乎可访问任意类型的文件系统,包括:所有已知类型的Linux文件系统(ext2/3/4、XFS、btrfs等等)、任意类型的Windows 文件系统(VFAT及NTFS)、任意类型的macOS及BSD文件系统、LVM2卷宗管理、MBR及GPT磁盘分区、未格式化的硬盘、qcow2、VirtualBox VDI、VMWare VMDK、Hyper-V VHD/VHDX、文件、本地设备、CD/DVD ISO、SD卡或通过FTP、HTTP、SSH、iSCSI、NBD、GlusterFS、Ceph、Sheepdog等程序远程管理。

yum -y install libguestfs-tools-c
yum -y install libguestfs-tools

二、虚拟机磁盘管理


2.1 查看虚拟机磁盘

virsh list --all
virsh domblklist centos7.0
qemu-img info /kvm/virtual/centos7.qcow2

2.2 创建虚拟机磁盘

创建一块大小为10G的qcow2格式的虚拟磁盘:

qemu-img create -f qcow2 /kvm/virtual/centos7-test01.qcow2 10G

2.3 扩容磁盘容量

qcow2格式的磁盘只能加不能减,raw格式的盘可以减。我们给"centos7.0"虚拟机增加 10G 也就是总共40G的存储。

磁盘扩容

qemu-img resize /kvm/virtual/centos7.qcow2 +10G

如下图可以看到扩容成功

扩容完成操作参考:

【Linux】Wmware Esxi磁盘扩容_esxi 磁盘扩容-CSDN博客

2.4 查看虚拟机存储状态

 virt-df -h centos7.0

2.5 快照

# 给centos7.qcow2创建名为 centos7-snap-qcow2 快照
qemu-img snapshot -c centos7-snap-qcow2 /kvm/virtual/centos7.qcow2# 查看快照
qemu-img snapshot -l /kvm/virtual/centos7.qcow2# 删除
qemu-img snapshot -d centos7-snap-qcow2 /kvm/virtual/centos7.qcow2

2.6 虚拟磁盘格式转化

convert [-c] [-p] [-q] [-n] [-f fmt] [-t cache] [-T src_cache] [-O output_fmt] [-o options] [-s snapshot_name] [-S sparse_size] filename [filename2 [...]] output_filename

将fmt格式的filename镜像文件根据options选项转换为格式为output_fmt的名为output_filename的镜像文件。它支持不同格式的镜像文件之间的转换,比如可以用VMware用的vmdk格式文件转换为qcow2文件,这对从其他虚拟化方案转移到KVM上的用户非常有用。一般来说,输入文件格式fmt由qemu-img工具自动检测到,而输出文件格式output_fmt根据自己需要来指定,默认会被转换为与raw文件格式(且默认使用稀疏文件的方式存储以节省存储空间)。

示例如下 :

# -f指定将raw格式,转化为-O,qcow2格式, 后面跟着两个要转化的文件
qemu-img convert -f raw -O qcow2 study01.img study01.qcow2  # 将VMware的vmdk格式镜像转换为KVM可以使用的qcow2镜像
qemu-img convert my-vmware.vmdk my-kvm.img# 将一个raw镜像文件转化为qcow2格式的镜像。
qemu-img convert -O qcow2 rhel6u3.img rhel6u3-a.img

study02.qcow2 虚拟机磁盘格式为:qcow2

格式转换完成


第 21 章 使用离线工具进行客户机虚拟机磁盘访问 | Red Hat Product Documentation

这篇关于【虚拟化】KVM常用命令操作(virsh磁盘管理)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1129993

相关文章

Python 中的 with open文件操作的最佳实践

《Python中的withopen文件操作的最佳实践》在Python中,withopen()提供了一个简洁而安全的方式来处理文件操作,它不仅能确保文件在操作完成后自动关闭,还能处理文件操作中的异... 目录什么是 with open()?为什么使用 with open()?使用 with open() 进行

Linux ls命令操作详解

《Linuxls命令操作详解》通过ls命令,我们可以查看指定目录下的文件和子目录,并结合不同的选项获取详细的文件信息,如权限、大小、修改时间等,:本文主要介绍Linuxls命令详解,需要的朋友可... 目录1. 命令简介2. 命令的基本语法和用法2.1 语法格式2.2 使用示例2.2.1 列出当前目录下的文

基于Python和MoviePy实现照片管理和视频合成工具

《基于Python和MoviePy实现照片管理和视频合成工具》在这篇博客中,我们将详细剖析一个基于Python的图形界面应用程序,该程序使用wxPython构建用户界面,并结合MoviePy、Pill... 目录引言项目概述代码结构分析1. 导入和依赖2. 主类:PhotoManager初始化方法:__in

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

Python使用DrissionPage中ChromiumPage进行自动化网页操作

《Python使用DrissionPage中ChromiumPage进行自动化网页操作》DrissionPage作为一款轻量级且功能强大的浏览器自动化库,为开发者提供了丰富的功能支持,本文将使用Dri... 目录前言一、ChromiumPage基础操作1.初始化Drission 和 ChromiumPage

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

Redis中管道操作pipeline的实现

《Redis中管道操作pipeline的实现》RedisPipeline是一种优化客户端与服务器通信的技术,通过批量发送和接收命令减少网络往返次数,提高命令执行效率,本文就来介绍一下Redis中管道操... 目录什么是pipeline场景一:我要向Redis新增大批量的数据分批处理事务( MULTI/EXE