【虚拟化】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

相关文章

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

使用Java填充Word模板的操作指南

《使用Java填充Word模板的操作指南》本文介绍了Java填充Word模板的实现方法,包括文本、列表和复选框的填充,首先通过Word域功能设置模板变量,然后使用poi-tl、aspose-words... 目录前言一、设置word模板普通字段列表字段复选框二、代码1. 引入POM2. 模板放入项目3.代码

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

Python内存管理机制之垃圾回收与引用计数操作全过程

《Python内存管理机制之垃圾回收与引用计数操作全过程》SQLAlchemy是Python中最流行的ORM(对象关系映射)框架之一,它提供了高效且灵活的数据库操作方式,本文将介绍如何使用SQLAlc... 目录安装核心概念连接数据库定义数据模型创建数据库表基本CRUD操作创建数据读取数据更新数据删除数据查

Go语言中json操作的实现

《Go语言中json操作的实现》本文主要介绍了Go语言中的json操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 一、jsOChina编程N 与 Go 类型对应关系️ 二、基本操作:编码与解码 三、结构体标签(Struc

在Node.js中使用.env文件管理环境变量的全过程

《在Node.js中使用.env文件管理环境变量的全过程》Node.js应用程序通常依赖于环境变量来管理敏感信息或配置设置,.env文件已经成为一种流行的本地管理这些变量的方法,本文将探讨.env文件... 目录引言为什么使php用 .env 文件 ?如何在 Node.js 中使用 .env 文件最佳实践引

Java 字符串操作之contains 和 substring 方法最佳实践与常见问题

《Java字符串操作之contains和substring方法最佳实践与常见问题》本文给大家详细介绍Java字符串操作之contains和substring方法最佳实践与常见问题,本文结合实例... 目录一、contains 方法详解1. 方法定义与语法2. 底层实现原理3. 使用示例4. 注意事项二、su

python库pydantic数据验证和设置管理库的用途

《python库pydantic数据验证和设置管理库的用途》pydantic是一个用于数据验证和设置管理的Python库,它主要利用Python类型注解来定义数据模型的结构和验证规则,本文给大家介绍p... 目录主要特点和用途:Field数值验证参数总结pydantic 是一个让你能够 confidentl

Java Stream流与使用操作指南

《JavaStream流与使用操作指南》Stream不是数据结构,而是一种高级的数据处理工具,允许你以声明式的方式处理数据集合,类似于SQL语句操作数据库,本文给大家介绍JavaStream流与使用... 目录一、什么是stream流二、创建stream流1.单列集合创建stream流2.双列集合创建str

Python正则表达式匹配和替换的操作指南

《Python正则表达式匹配和替换的操作指南》正则表达式是处理文本的强大工具,Python通过re模块提供了完整的正则表达式功能,本文将通过代码示例详细介绍Python中的正则匹配和替换操作,需要的朋... 目录基础语法导入re模块基本元字符常用匹配方法1. re.match() - 从字符串开头匹配2.