• libguestfs知识点


    libguestfs 是一组 Linux 下的 C 语言的 API ,用来访问虚拟机的磁盘映像文件。其项目主页是http://libguestfs.org/ ,
    该工具包内包含的工具有virt-cat、virt-df、virt-ls、virt-copy-in、virt-copy-out、virt-edit、guestfs、guestmount、
    virt-list-filesystems、virt-list-partitions等工具,具体用法也可以参看官网。该工具可以在不启动KVM guest主机的情况下,
    直接查看guest主机内的内容,也可以直接向img镜像中写入文件和复制文件到外面的物理机,当然其也可以像mount一样,支持挂载操作

    1、libguestfs-tools的安装
    由于在rpm源里直接有该包,所以可以直接通过yum进行安装:

    yum -y install libguestfs-tools

    2、常用命令行
    virt-ls 命令
    virt-ls可以列出虚拟机中目录下的文件或目录,用法如下
    virt-ls [--options] -d domname dir [dir ...]----->options值类似平常的ls 的参数
    virt-ls [--options] -a disk.img [-a disk.img ...] dir [dir ...]

    virt-ls -d centos2 /etc/------>centos2是domain域名,domname可以通过virsh list得到
    可以像使用ls一样加一些参数,如-l等,具体请看virt-ls --help
    virt-ls -l -d centos6.5 /root #查看目录,-l 表示以长格式显示

    virt-what 命令
    virt-what可以用来检测当前系统是不是一个虚拟机,如果不是虚拟机,执行virt-what将不会有任何输出,如果是虚拟机,它会打印一系列关于虚拟机的’facts’(如kvm)
    virt-what命令由同名包提供,要命令需要先安装(yum -y install virt-what)

    virt-top 命令 显示虚拟机状态
    virt-top命令由同名软件包提供,和top命令相似,只是进程换成了虚拟机
    yum -y install virt-top
    virt-top

    virt-cat 命令
    virt-cat可以查看虚拟机中文件的内容,用法如下
    virt-cat [--options] -d domname file [file ...]
    virt-cat [--options] -a disk.img [-a disk.img ...] file [file ...]
    virt-cat -d centos2 /etc/passwd
    domname可以通过virsh list得到
    也可以对虚拟机的磁盘文件操作
    virt-cat -a /opt/images/centos2.img /etc/passwd

    virt-edit 命令
    这个命令可以修改虚机或者镜像里面的内容
    virt-edit [--options] -d domname file [file ...]
    virt-edit [--options] -a disk.img [-a disk.img ...] file [file ...]

    例如
    virt-edit -d centos2 /etc/passwd 前提是虚拟机关机的情况
    它会用vim打开文件,编辑完保存即可修改虚拟机内的文件内容
    也可以直接对虚拟机的磁盘文件进行操作
    virt-edit -a /opt/images/centos2.img /etc/passwd

    Note: 如果虚拟机正在运行,使用第一种方式修改它的文件会有下面的报错
    Libguestfs: error: error: domain is a live virtual machine.
    Writing to the disks of a running virtual machine ca cause disk corruption.
    Either use read-only access, or if the guest is running the guestfsd daemon
    specify live access. In most libguestfs tools these options are --ro or
    --live respectively. Consult the documentation for further information.
    但直接对虚拟机磁盘镜像文件操作不会有这个提示,并且可以修改成功

    virt-copy-out 命令
    virt-copy-out这个命令可以把虚拟机里的文件复制出来, 用法如下
    virt-copy-out -d domname file|dir [file|dir ...] localdir
    virt-copy-out -a disk.img file|dir [file|dir ...] localdir
    例子
    virt-copy-out -d centos2 /etc/passwd .
    可以是多个文件或目录
    mkdir tmp
    virt-copy-out -d centos2 /etc /home /root/.bashrc tmp
    也可以直接对虚拟机磁盘文件操作,只需要将-d domname换成-a path_of_disk_file

    virt-copy-in
    virt-copy-in是将文件复制到虚拟机里面,用法和virt-copy-out基本相同,这里只举一个例子
    virt-copy-in -d centos2 test.txt /opt/
    如果虚拟机正在运行,上面的命令也会报错

    virt-df 命令 查看虚拟机或者镜像挂载情况
    virt-df [--options] -d domname file [file ...]
    virt-df [--options] -a disk.img [-a disk.img ...] file [file .]
    virt-df -d CentOS2
    virt-df -a /opt/images/centos2.img
    virt-df -d centos6.6

    guestmount 分区挂载
    guestmount -d centos6.6 -i /media/
    [root@e3 ~]# ll /media/ #挂载虚拟机硬盘到本地/media

    virt-resize
    virt-resize可以调整虚拟机磁盘的大小,调整或删除任何分区
    virt-resize不可以就地调整磁盘,不应该对正在运行的虚拟机进行磁盘调整,为了确保一致性,调整先需要关闭虚拟机
    virt-resize调整的过程非常慢,从35G的磁盘进行扩展需要差不多10分钟
    virt-resize调整所花的时候只和开始磁盘的大小有关,从35G扩展到40G和扩展到135G所花的时间差不多
    如果你使用qcow2磁盘格式,个人建议先转成raw,调整完后再转回去,因为直接对qcow2做调整,比较35G的qcow2磁盘镜像文件可能只有1G大小(ls查看),
    通过virt-resize调整后就会变成35G大小了(ls查看)(也可能是我的方法不对),先转成raw调整完大小后再转回去可以避免这个问题

  • 相关阅读:
    DataPipeline CTO陈肃:驱动软件国产化,客户需求是核心引擎
    DataPipeline王睿:业务异常实时自动化检测 — 基于人工智能的系统实战
    Q&A系列一:DataPipeline常见问题回答
    下篇丨数据融合平台DataPipeline的实际应用场景
    上篇丨数据融合平台DataPipeline的应用场景
    这些传统数据集成的痛,你还在经历吗?
    ETL的两种架构——ETL架构和ELT架构优劣势对比
    2020即将到来,看完这篇帮你详细了解数据策略
    DataPipeline丨「自定义」数据源,解决复杂请求逻辑外部数据获取难题
    SQLI-LABS LESS 1-LESS 22
  • 原文地址:https://www.cnblogs.com/potato-chip/p/9031838.html
Copyright © 2020-2023  润新知