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

Posted

tags:

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

现在再来说一说关于批量建立虚拟机的问题。根据不同的需要和要求,用guestfish 或者 virt-customize 都可以来实现,只是具体命令不一。我觉得后者比较更加的灵活和容易。因为virt分为customize,edit,builder,append,好多功能于一体,然后还可以互相套用。

我的这个脚本只是创建了硬盘并带有系统和更改的文件参数,却并没有建立vm。因为这个不是重点,导入进去就好了

假如有个场景里面,你要创建50 台虚拟机,并且各自需要自己的固定IP地址而不是DHCP自动分配,(假如要是自动分配的话,那就非常简单了,就是克隆50次,然后再直接import进去就好了)还有主机名。我认为简单的方法就是,先做一台样板机,是符合你的要求的。然后呢,写个脚本复制/clone那个硬盘50次,并且更改每个主机的ip,subnet,boot type,hostname等

看下我写的脚本:
#this is the script to create batched vms,
#it includes two parts,copy disks and modify vms‘ifcfg-eth0.
#created by Vincent
#!/bin/bash
path=/etc/sysconfig/network-scripts/ifcfg-eth0
while read line
do
ip=echo $line|awk ‘{print $1}‘
name=echo $line|awk ‘{print $2}‘
cp /vm/vm3.qcow2 /vm/${name}.qcom2
virt-customize -a /vm/${name}.qcom2 --append-line $path:IPADDR=$ip --append-line $path:NETMASK=255.255.255.0 --edit $path:s/BOOTPROTO=dhcp/BOOTPROTO=none/
done < /vm/list.txt
echo "${name}is done"

这个脚本很简单,用while read来做,加上主机名和IP地址都是已知,就直接导进来即可。假如要都是规律的话并且麻烦一点的话,100台主机IP,还有100个以kvm为前缀的主机都用for循环来做并且写在while read之前。然后用paste这个命令合成一个文件,再导入到while read里就可以了。如果再升级一点的或就直接改成函数,现在没啥时间,以后再说。

在这里我用的是virt-customize,因为后面可以加上edit这个扩展命令,因为呢这个命令可以带一个类似于sed的工具,也可以说是perl。 基本上sed的规则都可以实用。正是用这个命令更改了ifcfg-eth0 里面的 bootproto。list这个文件夹里面又有具体IP,主机名。

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

虚拟化进阶管理

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

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

kvm虚拟机磁盘扩容

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

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