【虚拟化】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操作PDF文档的主流库使用指南

《Python操作PDF文档的主流库使用指南》PDF因其跨平台、格式固定的特性成为文档交换的标准,然而,由于其复杂的内部结构,程序化操作PDF一直是个挑战,本文主要为大家整理了Python操作PD... 目录一、 基础操作1.PyPDF2 (及其继任者 pypdf)2.PyMuPDF / fitz3.Fre

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

MySQL 强制使用特定索引的操作

《MySQL强制使用特定索引的操作》MySQL可通过FORCEINDEX、USEINDEX等语法强制查询使用特定索引,但优化器可能不采纳,需结合EXPLAIN分析执行计划,避免性能下降,注意版本差异... 目录1. 使用FORCE INDEX语法2. 使用USE INDEX语法3. 使用IGNORE IND

在macOS上安装jenv管理JDK版本的详细步骤

《在macOS上安装jenv管理JDK版本的详细步骤》jEnv是一个命令行工具,正如它的官网所宣称的那样,它是来让你忘记怎么配置JAVA_HOME环境变量的神队友,:本文主要介绍在macOS上安装... 目录前言安装 jenv添加 JDK 版本到 jenv切换 JDK 版本总结前言China编程在开发 Java

Spring Boot Actuator应用监控与管理的详细步骤

《SpringBootActuator应用监控与管理的详细步骤》SpringBootActuator是SpringBoot的监控工具,提供健康检查、性能指标、日志管理等核心功能,支持自定义和扩展端... 目录一、 Spring Boot Actuator 概述二、 集成 Spring Boot Actuat

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

Python使用openpyxl读取Excel的操作详解

《Python使用openpyxl读取Excel的操作详解》本文介绍了使用Python的openpyxl库进行Excel文件的创建、读写、数据操作、工作簿与工作表管理,包括创建工作簿、加载工作簿、操作... 目录1 概述1.1 图示1.2 安装第三方库2 工作簿 workbook2.1 创建:Workboo

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配

JSONArray在Java中的应用操作实例

《JSONArray在Java中的应用操作实例》JSONArray是org.json库用于处理JSON数组的类,可将Java对象(Map/List)转换为JSON格式,提供增删改查等操作,适用于前后端... 目录1. jsONArray定义与功能1.1 JSONArray概念阐释1.1.1 什么是JSONA

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控