【KVM虚拟化】· virsh文件管理

这篇具有很好参考价值的文章主要介绍了【KVM虚拟化】· virsh文件管理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【KVM虚拟化】· virsh文件管理

目录

🍁离线访问工具应用场景

🍁离线命令

🍂virt­-inspector

🍂virt-cat

🍂virt-edit

🍂virt-df

🍂virt-copy-out

🍂virt-copy-in

🍂guestfish

🍂guestmount

🍁管理虚拟磁盘

🍂虚拟磁盘类型

🍂KVM支持的虚拟磁盘类型

🍂qemu-img命令

🍂后备差异虚拟磁盘

🍂磁盘格式转换

🍂调整虚拟磁盘大小

🍁管理磁盘快照

🍂快照语法格式

🍂创建磁盘快照并查看

🍂恢复快照

🍂删除快照并查看


   🦐博客主页:大虾好吃吗的博客

   🦐专栏地址:KVM虚拟化专栏

       通过文件管理可以直接查看、修改、复制虚拟机的内部文件。例如,当系统因为配置文件无法启动时,可以直接修改虚拟机的文件。虚拟机磁盘文件主要有raw和qcow2格式。raw格式性能最好,速度最快,它的缺点就是不支持一些新的功能,如支持镜像,zlib磁盘压缩,AES加密等。要使用镜像功能,磁盘格式必须为qcow2。

        raw格式的话,速度稍微快点,在高版本的qemu-kvm中,几乎不比qcow2的格式快,而qcow2格式节省空间,可动态增长,在公有云中广泛使用,建议使用qcow2。所有有时候,我们需要将raw格式的磁盘转换成qcow2格式(qemu-img convert -f raw -O qcow2 /kvm/myvm01.img /kvm-/vmtest01.qcow2)。

离线访问工具应用场景

  1. 观看或下载位于虚拟机磁盘中的文件

  2. 编辑或上传文件到虚拟机磁盘

  3. 读取或写入的虚拟机配置

  4. 准备新的磁盘映像,其中包含文件、目录、文件系统、分区、逻辑卷和其他选项

  5. 拯救和修复客户无法启动或需要更改启动配置的虚拟机

  6. 监控虚拟机的磁盘使用情况

  7. 根据组织安全标准审计虚拟机的合规性

  8. 通过克隆和修改模板来部署虚拟机

  9. 读取CD和DVD ISO和软盘映像

离线命令

需要注意的是,确保虚拟机是关闭状态下,否则会报错

virt­-inspector

显示os版本、内核、驱动、挂载点、应用等等,但是很少使用,执行后需要等一会。

[root@kvmserver ~]# virt-inspector /kvm/img/vm01.qcow2
[root@kvmserver ~]# virt-inspector --format=qcow2 -a /kvm/img/vm01.qcow2 | more

virt-cat

类似于cat命令,参数:-a 需要指定虚拟机储存文件;-d 需要指定虚拟机名称,用法相同。

[root@kvmserver ~]# virt-cat -a /kvm/img/vm01.qcow2 /etc/hostname
vm01
[root@kvmserver ~]# virt-cat -d myvm01 /etc/hostname
vm01

virt-edit

        类似于vim,执行命令后在文本编辑器内修改文件内容。例如在下面修改主机名,原主机名为vm01,修改后主机名为myvm01,通过virt-cat命令查看主机名已经修改成功。

[root@kvmserver ~]# virt-edit -d myvm01 /etc/hostname 
myvm01          #修改添加主机名称
[root@kvmserver ~]# virt-cat -d myvm01 /etc/hostname
myvm01

virt-df

类似于df -h用于查看虚拟机磁盘信息

[root@kvmserver ~]# virt-df -h -d myvm01
Filesystem                                Size       Used  Available  Use%
myvm01:/dev/sda1                         1014M       105M       909M   11%
myvm01:/dev/centos/root                   6.2G       1.2G       5.0G   20%

virt-copy-out

        类似于scp命令,把虚拟机中的文件远程复制到宿主机中。例:把虚拟机中的passwd命令复制到当前路径,查看是否存在。

[root@kvmserver ~]# virt-copy-out -d myvm01 /etc/passwd ./
[root@kvmserver ~]# ls 
anaconda-ks.cfg  passwd

virt-copy-in

        类似于scp命令,把宿主机中的文件远程复制到虚拟机中。例:在宿主机中创建一个test文件,复制给虚拟机,通过virt-cat命令查看是否成功。

[root@kvmserver ~]# echo "this is a test" > test.txt
[root@kvmserver ~]# virt-copy-in -d myvm01 test.txt /opt/
[root@kvmserver ~]# virt-cat -d myvm01 /opt/test.txt
this is a test

guestfish

        可以查看、编辑和删除镜像内的文件,但是局限性很大,ls,cd等命令不能使用,推荐使用挂载的方式。

语法格式:

guestfish [--ro|--rw] -i -a 虚拟机磁盘文件

guestfish [--ro|--rw] -i -d 虚拟机名称

【KVM虚拟化】· virsh文件管理

guestmount

        在一些使用场景中,直接把虚机镜像文件挂接在本地系统中,也是一个简便的办法。

guestmount -d 虚拟机名 -m 磁盘路径 --rw 挂载点

        如果事先不知道虚机内部分区的路径信息,则可以使用参数-i来让guestmount自己决定使用哪一个磁盘路径,挂载后,进入mnt目录下就是myvm01的根目录,可以进行正常操作。

[root@kvmserver ~]# guestmount -d myvm01 -i --rw /mnt
[root@kvmserver ~]# cd /mnt
[root@kvmserver mnt]# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr

将/mnt下的挂载进行卸载

[root@kvmserver ~]# guestunmount /mnt
[root@kvmserver ~]# ls /mnt
[root@kvmserver ~]# 

管理虚拟磁盘

虚拟化项目中存储的注意事项

  1. 存储的性能几乎总是虚拟化的瓶颈

  2. 通过多个磁盘驱动以分布磁盘I/O来实现存储解决方案

  3. 驱动器的速度越快越好,考虑SSD与机械磁盘的混合使用

  4. 考虑部署集中化的SAN/NFS来实现高可用性和实时迁移

虚拟磁盘类型

1. 固定 :Fixed

        在配置时,指定磁盘大小;不管在虚拟磁盘上实际存储多少数据,都将占用相同大小主机磁盘空间。

2. 动态 :Dynamic

        增长到最大容量,但是只根据需求使用更多的空间。

3. 差异(差分盘) :Differencing

        因为创建是差异磁盘,所以只保存变更的数据,类似于lvm的快照;例如,将操作系统安装在父盘,然后创建差异化磁盘来执行进一步配置,桌面虚拟化使用很多。

KVM支持的虚拟磁盘类型

        raw: 这并非是一种真正的磁盘格式,而是代表虚拟机所使用的原始镜像它并不存储元数据,因此可以作为保证虚拟机兼容性的候选方案。然而,也正因为它不存储元数据,因此不能支持某些高级特性,比如快照和压缩等格式简单,容易转化为其他的格式。需要文件系统的支持才能支持sparse file。

        qcow2:按需进行分配磁盘空间,不管文件系统是否支持;支持快照;支持zlib的磁盘压缩;支持AES的加密。

        vmdk(virtual machine disk):VMware环境当中默认使用的磁盘格式。

        vhd\vhdx(virtual Hard Disk):微软默认采用的文件格式

还有很多磁盘类型,这里就不一一介绍,可以通过下面命令查看KVM所支持的磁盘类型。

[root@kvmserver ~]# qemu-img --help | grep Supported
Supported formats: vvfat vpc vmdk vhdx vdi ssh sheepdog rbd raw host_cdrom host_floppy host_device file qed qcow2 qcow parallels nbd iscsi gluster dmg tftp ftps ftp https http cloop bochs blkverify blkdebug

qemu-img命令

它是QEMU的磁盘管理工具,在qemu-kvm源码编译后就会默认编译好qemu-img这个二进制文件。qemu-img也是QEMU/KVM使用过程中一个比较重要的工具,qemu-img工具的命令行基本用法如下:

qemu-img command [command options]

qemu-img常用功能命令:

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

创建虚拟磁盘,默认是创建raw格式的磁盘

[root@kvmserver ~]# qemu-img create test1.img 1G
Formatting 'test1.img', fmt=raw size=1073741824 
[root@kvmserver ~]# qemu-img info test1.img
image: test1.img
file format: raw					#默认raw格式
virtual size: 1.0G (1073741824 bytes)
disk size: 0						#创建的是sparse模式

创建qcow2格式磁盘

[root@kvmserver ~]# qemu-img create -f qcow2 test2.qcow2 1G
Formatting 'test2.qcow2', fmt=qcow2 size=1073741824 encryption=off cluster_size=65536 lazy_refcounts=off 
[root@kvmserver ~]# qemu-img info test2.qcow2 
image: test2.qcow2
file format: qcow2
virtual size: 1.0G (1073741824 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false

创建qcow2格式磁盘时,可以指定选项,通过-o参数,常用参数主要有:

  1. backing_file 指定后端镜像文件

  2. backing_fmt 设置后端镜像的镜像格式

  3. encryption 设置加密

  4. cluster_size 设置簇大小,取值在512到2M之间,默认是64K

  5. preallocation 预分配模式 (allowed values: off, metadata, falloc,full)

(1)off 缺省策略,既不使用预分配策略

(2)metadata 分配元数据,预分配后的虚拟磁盘仍然属于稀疏模式类型磁盘

(3)full 分配所有磁盘空间并置零,预分配后的虚拟磁盘属于厚盘(非稀疏映像类型)

(4)falloc 分配文件的块并标示它们的状态为未初始化,创建速度快

例如:

[root@kvmserver ~]# qemu-img create -f qcow2 test3.qcow2 1G -o preallocation=full
Formatting 'test3.qcow2', fmt=qcow2 size=1073741824 encryption=off cluster_size=65536 preallocation='full' lazy_refcounts=off 
[root@kvmserver ~]# qemu-img info test3.qcow2
image: test3.qcow2
file format: qcow2
virtual size: 1.0G (1073741824 bytes)
disk size: 1.0G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false

后备差异虚拟磁盘

VMware中称之为链接克隆,节省空间。

存储与基础镜像(父)磁盘的变化

  1. 基础镜像(父)磁盘不会改变

  2. 差异磁盘隔离变化

  3. 多个差异磁盘可以使用相同的基础镜像(父)磁盘

优点:标准化基础镜像,节省空间

缺点:增加了开销,较差的性能 (尤其是vmware虚拟机中的试验环境,要等待很久才能启动)

首选,需要拥有一个基础虚拟磁盘,可以通过安装一个全新的虚拟机得到,然后将各种使用的基本软件设置好。

一、创建差异虚拟磁盘

vm01.qcow2是父磁盘文件,vm01_ln.qcow2是链接文件名称。

[root@kvmserver ~]# qemu-img create -f qcow2 -o backing_file=/kvm/img/vm01.qcow2 /kvm/img/vm01_ln.qcow2
Formatting '/kvm/img/vm01_ln.qcow2', fmt=qcow2 size=8589934592 backing_file='/kvm/img/vm01.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off

查看

可以看到我上面没有设置磁盘大小,通过下面查看却定义了8G,而磁盘文件大小只有196K。

[root@kvmserver ~]# qemu-img info /kvm/img/vm01_ln.qcow2
image: /kvm/img/vm01_ln.qcow2
file format: qcow2
virtual size: 8.0G (8589934592 bytes)
disk size: 196K
cluster_size: 65536
backing file: /kvm/img/vm01.qcow2
Format specific information:
    compat: 1.1
    lazy refcounts: false

然后根据差异磁盘创建虚拟机 (强烈建议通过修改配置文件)如果修改配置文件的话,只需要修改主机名,uuid值,及mac地址即可。

下面两种方式都来一遍吧,先修改配置文件。

[root@kvmserver ~]# cd /etc/libvirt/qemu/
[root@kvmserver qemu]# ls
autostart  myvm01.xml  myvm02_clong.xml  myvm02.xml  networks
[root@kvmserver qemu]# cp myvm01.xml myvm01_ln1.xml
[root@kvmserver qemu]# uuidgen 				#生成一个随机uuid给虚拟机使用
c9274ef3-6b23-4649-badb-b0a726dc1f9a
[root@kvmserver qemu]# vim myvm01_ln1.xml 
#找到下面三列并修改,指定虚拟机的名称、uuid、mac地址
  <name>vm01</name>
  <uuid>c9274ef3-6b23-4649-badb-b0a726dc1f9a</uuid>
  <mac address='52:54:00:58:33:00'/>
[root@kvmserver qemu]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     myvm01                         shut off
 -     myvm02                         shut off
 -     myvm02_clong                   shut off

[root@kvmserver qemu]# virsh define /etc/libvirt/qemu/myvm01_ln1.xml 
Domain vm01 defined from /etc/libvirt/qemu/myvm01_ln1.xml

[root@kvmserver qemu]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     myvm01                         shut off
 -     myvm02                         shut off
 -     myvm02_clong                   shut off
 -     vm01                           shut off

最后可以看到vm01主机已经创建出来了,但是能不能开机,能不能正常使用呢?下面来测试一下,先启动虚拟机,等待开机后尝试连接。

[root@kvmserver qemu]# virsh start vm01
Domain vm01 started

[root@kvmserver qemu]# virsh console vm01
myvm01 login: root
Password: 
Last login: Fri Apr 21 17:25:42 on ttyS0
[root@myvm01 ~]# ls

        经过等待,看来不是白等的,我尝试了一些操作,都没问题。链接克隆完成,下面再来一个安装方式克隆,这个就比较耗时间了,因为需要加载配置文件。

二、先创建一个父磁盘

[root@kvmserver ~]# qemu-img create -f qcow2 -o backing_file=/kvm/img/vm01.qcow2 /kvm/img/vm01_ln1.qcow2
Formatting '/kvm/img/vm01_ln1.qcow2', fmt=qcow2 size=8589934592 backing_file='/kvm/img/vm01.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off

创建虚拟机文件,等候加载配置文件,加载完毕登录即可。

[root@kvmserver ~]# virt-install --import -n vm02 -r 1024 --disk /kvm/img/vm01_ln1.qcow2  --nographics

        来查看一下都有哪些虚拟机吧,在宿主机命令行下执行;vm01是通过修改配置文件得到的克隆机,vm02是通过install得到的克隆机,myvm01和myvm02是正常创建的虚拟机,而myvm02_clong是完整克隆的到的虚拟机。

[root@kvmserver ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 14    vm01                           running
 15    vm02                           running
 -     myvm01                         shut off
 -     myvm02                         shut off
 -     myvm02_clong                   shut off

总结:两种方式可以使用相同的方式生成多个虚拟机,但是第二种较慢不推荐使用,而第一种只需要修改配置文件,从新定义虚拟机直接登录就可以启动。

磁盘格式转换

语法格式:

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

例:转换test1.img原格式为raw修改后格式为qcow2。

[root@kvmserver ~]# qemu-img info test1.img 
image: test1.img
file format: raw
virtual size: 1.0G (1073741824 bytes)
disk size: 0
[root@kvmserver ~]# qemu-img convert -f raw -O qcow2 test1.img test1.qcow2
[root@kvmserver ~]# qemu-img info test1.qcow2 
image: test1.qcow2
file format: qcow2
virtual size: 1.0G (1073741824 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false

调整虚拟磁盘大小

语法格式:

resize [-q] filename [+ | -]size

  1. 操作之前一定要做好数据备份

  2. 增加文件大小后,需要在客户机中使用fdisk、parted等分区工具进行相应的操作才能真正让客户机使用到增加后的镜像空间

  3. 缩小镜像之前,要在客户机中保证里面的文件系统有空余空间,否则会数据丢失。

  4. qcow2不支持缩小镜像的操作。

[root@kvmserver ~]# qemu-img info test1.qcow2 
image: test1.qcow2
file format: qcow2
virtual size: 1.0G (1073741824 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
[root@kvmserver ~]# qemu-img resize test1.qcow2 +1G
Image resized.
[root@kvmserver ~]# qemu-img info test1.qcow2 
image: test1.qcow2
file format: qcow2
virtual size: 2.0G (2147483648 bytes)
disk size: 260K
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false

管理磁盘快照

磁盘快照

  1. 对磁盘数据进行快照

  2. 主要用于虚拟机备份等场合

内存快照

  1. 对虚拟机的内存/设备信息进行保存

  2. 该机制同时用于休眠恢复、迁移等场景

  3. 主要使用virsh save(qemu migrate to file)实现,只能对运行的虚拟机进行

检查点快照

  1. 同时保存虚拟机的磁盘快照和内存快照

  2. 用于将虚拟机恢复到某个时间点

  3. 可以保证数据的一致性

快照语法格式

snapshot [-q] [-l | -a snapshot | -c snapshot | -d snapshot] filename

'-a' 切换到某一指定快照点

'-c' 创建一个快照

'-d' 删除一个快照

'-l' 列出指定域的所有快照文章来源地址https://www.toymoban.com/news/detail-440723.html

创建磁盘快照并查看

[root@kvmserver ~]# qemu-img snapshot -c a1 /kvm/img/vm01.qcow2 
[root@kvmserver ~]# qemu-img snapshot -l /kvm/img/vm01.qcow2 
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         1682069915             260M 2023-04-21 05:38:35   00:13:58.698
2         a1                        0 2023-04-21 09:28:08   00:00:00.000

恢复快照

[root@kvmserver ~]# qemu-img snapshot -a a1 /kvm/img/vm01.qcow2 

删除快照并查看

[root@kvmserver ~]# qemu-img snapshot -d 2 /kvm/img/vm01.qcow2 
[root@kvmserver ~]# qemu-img snapshot -l /kvm/img/vm01.qcow2 
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         1682069915             260M 2023-04-21 05:38:35   00:13:58.698

到了这里,关于【KVM虚拟化】· virsh文件管理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • kvm虚拟化

    虚拟化是云计算的基础。简单的说,虚拟化使得在一台物理的服务器上可以跑多台虚拟机,虚拟机共享物理机的 CPU、内存、IO 硬件资源,但逻辑上虚拟机之间是相互隔离的。 物理机我们一般称为宿主机(Host),宿主机上面的虚拟机称为客户机(Guest)。 那么 Host 是如何将自

    2024年01月17日
    浏览(57)
  • kvm网络虚拟化介绍

    在QEMU中,主要给出了客户机提供了4种不同的网络配置方案: 1、基于网桥(Bridge)的虚拟化网卡模式 2、基于NAT的虚拟网络模式 3、QEMU内置的用户网络模式 4、直接分配网络设置模式 网桥和NAT是基于linux-bridge实现的软件虚拟网络模式,QEMU是QEMU软件虚拟的网络模式,第四种网络模

    2024年02月14日
    浏览(54)
  • 【KVM虚拟化环境部署】

    1、装系统时手动选择安装 2、CentOS 7 最小化安装 安装好CentOS 7后,去设置里面点击处理器,将右边虚拟化引擎勾上 添加一块硬盘 分区并格式化 创建虚拟机,本例使用iso镜像 选择镜像路径

    2024年02月12日
    浏览(44)
  • 什么是KVM虚拟化

    维基百科关于虚拟化的定义是:“In computing,virtualization refers to the act of creating a virtual(rather than actual)version of something,including virtual computer hardware platforms,storage devices,and computer network resources。”(在计算机领域,虚拟化指 创建某事物的虚拟(而非实际)版本,包括虚拟的

    2023年04月08日
    浏览(48)
  • KVM虚拟化ubuntu

    KVM(Kernel-based Virtual Machine)是一种基于Linux内核的虚拟化技术,它将Linux内核作为虚拟机的底层操作系统,利用硬件虚拟化支持创建和管理虚拟机。KVM虚拟化技术被广泛应用于云计算、虚拟化服务器、虚拟化桌面等场景。 KVM虚拟化技术的主要特点包括: 1.硬件虚拟化支持:

    2024年02月10日
    浏览(45)
  • 【KVM虚拟化】· 图形化KVM安装linux

    目录 🍁虚拟化技术 🍂KVM的整体结构 🍂KVM 的功能列表 🍂KVM 工具集合 🍁安装kvm虚拟化功能 🍁创建虚拟机    🦐博客主页:大虾好吃吗的博客    🦐专栏地址:KVM虚拟化专栏 全虚拟化 半虚拟化 硬件辅助的虚拟化 从GUI到Linux内核,包括以下五个组件: virt-manager一个用来

    2024年02月01日
    浏览(49)
  • 【KVM虚拟化】· 命令行KVM安装linux

    目录 🍁基础本环境配置 🍁添加lvm卷 🍁qemu-img创建磁盘文件 🍂创建raw格式 🍂创建虚拟机 🍂转换格式为qcow2 🍁virt-install命令参数 🍁案例操作    🦐博客主页:大虾好吃吗的博客    🦐专栏地址:KVM虚拟化专栏 最小化安装centos系统,勾选虚拟化功能。   修改网卡信息,

    2024年02月04日
    浏览(52)
  • VirtualBox 部署 KVM 虚拟化

    KVM(Kernel-based Virtual Machine)是一种开源的虚拟化技术,它是Linux内核的一部分。KVM通过将Linux内核转换为Hypervisor,允许在同一物理主机上运行多个虚拟机实例,每个实例可以独享一部分系统资源。 KVM的工作原理是将Linux内核扩展为虚拟化管理程序,它直接在硬件上运行,并提

    2024年02月11日
    浏览(46)
  • KVM虚拟化基本操作

    虚拟化软件是可以让一台物理主机建立与执行一至多个虚拟化环境的软件,虚拟化将硬件、操作系统和应用程序一同封装一个可迁移的虚拟机档案文件中。 安装位置分类 目前从Hypervisor(虚拟机管理程序)安装位置分类,虚拟化层面包括安装在硬件层上、安装在宿主操作系统层

    2024年01月25日
    浏览(48)
  • 虚拟化技术KVM入门学习

      虚拟化[Virtualization]技术最早出现在 20 世纪 60 年代的 IBM ⼤型机系统,在70年代的 System370 系列中逐渐流⾏起来,这些机器通过⼀种叫虚拟机监控器[Virtual Machine Monitor,VMM]的程序在物理硬件之上⽣成许多可以运⾏独⽴操作系统软件的虚拟机[Virtual Machine]实例。随着近年多核

    2024年02月10日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包