前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >KVM--libguestfs-tools工具介绍(九)

KVM--libguestfs-tools工具介绍(九)

作者头像
Kevin song
发布2022-06-07 18:17:57
2.6K0
发布2022-06-07 18:17:57
举报
文章被收录于专栏:运维监控日志分析

概述

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等程序远程管理。libguestfs无需root权限。

libguestfs的功能由guestfish外壳(Shell)提供。若虚拟机无法启动,则可使用援救外壳virt-rescue进行修复。现有工具将普通的Unix命令作为样板使用,如工具virt-cat及virt-tar。

libguestfs-tools工具常用命令介绍

1,首先确认libguestfs-tools工具是否安装

代码语言:javascript
复制
[root@kvm-node1 ~]# yum install libguestfs-tools
[root@kvm-node1 ~]# rpm -qa|grep libguestfs-tools
libguestfs-tools-1.40.2-10.el7.noarch
libguestfs-tools-c-1.40.2-10.el7.x86_64
[root@kvm-node1 ~]# 
[root@kvm-node1 ~]# vir
virsh                    virt-diff                virt-log                 virt-tail
virt-alignment-scan      virt-edit                virtlogd                 virt-tar-in
virt-builder             virt-filesystems         virt-ls                  virt-tar-out
virt-builder-repository  virt-format              virt-make-fs             virt-viewer
virt-cat                 virt-get-kernel          virt-manager             virt-what
virt-clone               virt-host-validate       virt-pki-validate        virt-win-reg
virt-copy-in             virt-index-validate      virt-rescue              virt-xml
virt-copy-out            virt-inspector           virt-resize              virt-xml-validate
virt-customize           virt-install             virt-sparsify            
virt-df                  virtlockd                virt-sysprep

命令格式:-d采用域名的方式,-a是直接获取磁盘文件方式

代码语言:javascript
复制
virt-df  [--options] -d domname
virt-df [--options] -a disk.img [-a disk.img ...]

2,virt-cat命令,查看虚拟机内部文件,类似于cat(开关机都可以)

代码语言:javascript
复制
[root@kvm-node1 ~]# virt-cat -d vm01 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
chrony:x:997:995::/var/lib/chrony:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin

3,virt-edit命令,编辑虚拟机内部的文件,类似于vi编辑器(注意:虚拟机必须处于关机状态)

代码语言:javascript
复制
[root@kvm-node1 ~]# virt-edit -d node01 /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

4,virt-df命令,查看虚拟机内部的磁盘使用情况,类似于df -h命令,(开关机都可以)

代码语言:javascript
复制
[root@kvm-node1 ~]# virt-df -h vm01
Filesystem                                Size       Used  Available  Use%
vm01:/dev/sda1                            497M       146M       351M   30%
vm01:/dev/centos/root                      10G       1.7G       8.3G   18%
[root@kvm-node1 ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 14    win10                          running
 34    vm01                           running
 -     node01                         shut off
 -     node02                         shut off
 -     node03                         shut off

5,virt-filesystems命令,也是查看磁盘的使用情况,和virt-df命令类似(开关机都可以)

代码语言:javascript
复制
[root@kvm-node1 ~]# virt-filesystems  -d vm01
/dev/sda1
/dev/centos/root

6,virt-copy-out命令,直接复制虚拟机里面的磁盘文件到本地磁盘上,类似于cp命令,分为拷贝文件和拷贝目录:

代码语言:javascript
复制
#拷贝虚拟机vm01中的磁盘文件到本地目录/opt下(拷贝文件)
[root@kvm-node1 ~]# virt-copy-out -d vm01 /etc/passwd   /opt   
#拷贝虚拟机vm01中的目录/opt目录到本地/opt下(拷贝目录)
[root@kvm-node1 ~]# virt-copy-out -d vm01 /opt   /opt      
#验证    
[root@kvm-node1 ~]# ls  /opt/
opt  passwd  rh

7,直接读取磁盘文件中的内容

代码语言:javascript
复制
[root@kvm-node1 opt]# virt-copy-out -a /kvm/img/vm01.qcow2  /etc/sysconfig/network-scripts/ifcfg-ens3  /opt/111/
[root@kvm-node1 opt]# cat  /opt/111/ifcfg-ens3
# Generated by dracut initrd
NAME="ens3"
DEVICE="ens3"
ONBOOT=yes
NETBOOT=yes
UUID="40339ace-a4a9-4a8a-abf8-0b956713e628"
IPV6INIT=yes
BOOTPROTO=dhcp
TYPE=Ethernet

8,virt-copy-in命令,直接虚拟化平台上本地磁盘到虚拟机磁盘上,类似于cp (虚拟机必须处于关机状态,开机验证)

代码语言:javascript
复制
[root@kvm-node1 opt]# virt-copy-in -d vm01 /opt/passwd  /mnt/
[root@kvm-node1 opt]# virsh start vm01
Domain vm01 started

登录虚拟机验证

代码语言:javascript
复制
[root@kvm-node1 opt]#virsh  console  vm01 
[root@localhost mnt]# ls
passwd
[root@localhost mnt]# pwd
/mnt

如果出现报错:"/usr/bin/virt-copy-in: line 19: exec: guestfish: not found"原因是没有安装guestfish造成的,可以先安装执行此命令yum install guestfish -y

案例分享

kvm虚拟机忘记root密码、修改root密码

1、宿主机安装kvm管理工具libguestfs-tools

代码语言:javascript
复制
yum install libguestfs-tools

2、查看宿主机上所有的kvm虚拟机

代码语言:javascript
复制
virsh list --all

3、执行virt-edit命令需要停掉虚拟机

代码语言:javascript
复制
virsh shutdown vm01

4、通过virt-edit命令可以直接在宿主机修改kvm虚拟机的 /etc/shadow文件,

代码语言:javascript
复制
virt-edit vm01 /etc/shadow
  1. 替换密码串,密码串可以从已知密码的linux系统中复制替换
  2. openssl 生成密码

openssl passwd -1 -salt 'hello' '123456'

注意:"123456"不是密码而是密码的长度

5、重启kvm虚拟机验证密码

代码语言:javascript
复制
virsh start vm01
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源搬运工宋师傅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档