虚拟磁盘访离线访问工具----guestfish(1of2)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了虚拟磁盘访离线访问工具----guestfish(1of2)相关的知识,希望对你有一定的参考价值。

    前几天搞定了磁盘创建的种种问题,现在就要搞明白在不运行虚拟机的情况下如何修改里面的文件,并且结合脚本来批量创建虚拟机。
    离线访问工具有很多种,比较出名的就是guestfish了,因为功能非常的强大,比如离线改密码,编辑文件,上传文件等等。今天我要说的主要是集中在脚本里面的应用。
    因为这个对我来说是一个全新的工具,由于不是很熟悉,走了很多弯路,我是基于要写脚本的情况下才来研究这个工具。详细了解的话可以去libguestfs.org。
    这个工具是需要安装一些 4个packages,好像是在linux6之后的版本本身就自带了,只是版本高低的问题。现在最高的版本是1.39.5。然后我的版本是1:1.36.10-6.el7_5.2,之前版本很低,所以有些工具的option会不太一样,过会会提到。packages分别是:libguestfs.x86_64,libguestfs-java.x86_64 ,libguestfs-tools.noarch ,libguestfs-tools-c.x86_64 。
    guestfish是一个基于libguestfs API的交互的shell,里面有一些和shell相同的命令,还有一些是它独有的,并且还支持脚本运行。这里我要说的一个命令就是 “ECHO”。 我们都知道在shell变成里面,你要往一个文件里面写入一些东西但是你又不想用vi编辑,然后你就用echo重定向到文件里面,很多情况下会用到脚本里面。比如说:echo “aaa” >>/tmp/example.txt.这个命令恰恰不完全支持在guestfish里面。但是它有自己的synopsis,这个要配合write来用。就是为了搞明白这个,花了2天的时间。我查了好多文档和网站,没有人详细说过这个命令,可能不是很重要把。然后我又顺腾摸瓜,查到另一个相似的命令就是virt-customize。这个命令也是很强大,你装了上述的包,还有一些kvm的libvirt的包,基本上就有了。
    现在要说一下我想做的东西,就是我想离线修改我虚拟机里的ip地址,subnet。手动修改就太麻烦了,那我就用guestfish的命令
    #guestfish --rw -a /vm/bb1.qcow2 -i << EOF
    <! echo write-append /etc/sysconfig/network-scripts/ifcfg-eth0 192.168.2.1
EOF
    我刚才也说过,有个类似的命令是通过virt-customize:
    virt-customize -a /vm/bb1.qcom2 --append-line :IPADDR=$ip --append-line $path:NETMASK=255.255.255.254
    下篇文章我会写一下我自己理解的批量创建vms,在网上我看到一些高手写的自动化创建,但是都年代久远了,现在又好多新的命令,会更有效的服务于我们。

以上是关于虚拟磁盘访离线访问工具----guestfish(1of2)的主要内容,如果未能解决你的问题,请参考以下文章

虚拟化进阶管理

Openstack Queen版本之guestfish修改centos7云镜像解决ssh无法连接VM实例

解决kvm虚拟机直接访问宿主机器上面某个磁盘问题

kvm虚拟机磁盘扩容

挂载NTFS分区,离线安装NTFS-3G(Linux挂载NTFS格式磁盘的方法)

为何用了锐起客户端,虚拟磁盘无法访问