linux之怎么在使用脚本快速创建虚拟机?怎么从别的主机拷贝一个虚拟机过来?

Posted Tuki_a

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux之怎么在使用脚本快速创建虚拟机?怎么从别的主机拷贝一个虚拟机过来?相关的知识,希望对你有一定的参考价值。


平常我们建立虚拟机需要自己在虚拟化工具里手动一个一个的设置各种选项。使用脚本可以解放我们的双手,让我们不用手动 在虚拟化工具里选择各种选项去建立虚拟机,快速自动建立虚拟机

使用脚本快速创建虚拟机

可以man virt-install查看脚本书写模板
在这里插入图片描述

关于下文出现的脚本内容的一些解释:

test			检测的意思
-z				zero,即检测后边的值是否为空
&&				成立则执行紧跟的语句,否则继续往下走
||				不成立则执行紧跟的语句,否则继续往下走
反斜杠\\			意思是在shell里换行,但字符输出不会换行,注意在写脚本时后边不能有空格
$1				意思是脚本后面所跟的第一串字符
--memory 2048	内存大小,M单位
--vcpus 1		cpu核心数量
--disk 			硬盘设置
##size=8,bus=virtio,意为硬盘大小8G,硬盘用virtIO模式,走bus总线
--network		网络配置
--location		镜像位置
--os-variant	操作系统版本
&> /dev/null	意思是提示都扔垃圾箱,这样就不显示了,但在测试成功前最好先不要加,否则出问题都不知道哪儿错了
&				是打入后台运行,不占用shell
import			是引入快照的意思

建立虚拟机的脚本

先创建脚本
在这里插入图片描述
写入以下内容:
为了方便我们建立多个虚拟机,我们在脚本里使用$1来接收脚本后面所跟的第一串字符(即虚拟机名字),这样我们不用创建一次虚拟机改一次脚本!
##不建议直接复制,最好手敲一遍

#!/bin/bash
test -z $1 && {
    echo "Please input vmname following script"
    exit
}

test -e "/var/lib/libvirt/images/$1.qcow2" && {
    echo "$1 is exist"
    exit
}

qemu-img create -f qcow2 /var/lib/libvirt/images/$1.qcow2 8G -o lazy_refcounts=off

virt-install \\
    --name $1 \\
    --memory 2048 \\
    --vcpus 1 \\
    --disk /var/lib/libvirt/images/$1.qcow2,size=8,bus=virtio \\
    --network bridge=br0,model=virtio \\
    --location file:///isos/rhel8.2 \\
    --os-variant rhel8.2 &> /dev/null &

在这里插入图片描述
使用该脚本建立虚拟机:sh lucky_vm.sh 虚拟机名字
在这里插入图片描述

给虚拟机拍快照的脚本

先创建脚本
在这里插入图片描述
写入以下内容:
##不建议直接复制,最好手敲一遍

#!/bin/bash
test -z $1 && {
    echo "Please input vmname following script"
    exit
}

test -e "/var/lib/libvirt/images/$1.qcow2" && {
    echo "$1 is exist"
    exit
}

qemu-img create -f qcow2 -b /var/lib/libvirt/images/lucky.qcow2 /var/lib/libvirt/images/$1.qcow2

virt-install \\
    --name $1 \\
    --memory 2048 \\
    --vcpus 1 \\
    --disk /var/lib/libvirt/images/$1.qcow2,bus=virtio \\
    --network bridge=br0,model=virtio \\
    --import \\
    --os-variant rhel8.2 &> /dev/null &

在这里插入图片描述
使用该脚本建立虚拟机:sh lucky_node.sh 虚拟机名字
在这里插入图片描述

重建虚拟机的脚本

先创建脚本
在这里插入图片描述
写入以下内容:
##不建议直接复制,最好手敲一遍

#!/bin/bash
test -z $1 && {
    echo "Please input vmname following script"
    exit
}

test -e "/var/lib/libvirt/images/$1.qcow2" || {
    echo "$1 is not exist"
    exit
}

virsh destory $1

rm -fr /var/lib/libvirt/images/$1.qcow2

qemu-img create -f qcow2 -b /var/lib/libvirt/images/lucky.qcow2 /var/lib/libvirt/images/$1.qcow2

virsh start $1
virt-viewer $1 &

在这里插入图片描述
使用该脚本建立虚拟机:sh lucky_reset.sh 虚拟机名字
在这里插入图片描述

克隆别的主机的虚拟机

第一步:把要克隆的虚拟机(比如叫lucky)硬件信息文件和硬盘文件传到本主机上
		别的主机IP			硬盘文件/硬件信息文件						拷到本地相同目录
scp root@172.25.254.100:/var/lib/libvirt/images/lucky.qcow2 /var/lib/libvirt/images/lucky.qcow2
scp root@172.25.254.100:/etc/libvirt/qemu/lucky.xml /etc/libvirt/qemu/lucky.xml

第二步:在本机使用拷贝过来的文件创建虚拟机
cd /etc/libvirt/qemu/
virsh create lucky.xml			这种方式是临时的,一旦关闭就会消失在虚拟机列表里
virsh define lucky.xml			永久的,会一直在虚拟机列表里

两步搞定!

如果想删除该虚拟机:
virsh undefine lucky.xml		但这样不会删除硬盘文件需要手动删除硬盘文件
rm -fr /var/lib/libvirt/images/lucky.qcow2

以上是关于linux之怎么在使用脚本快速创建虚拟机?怎么从别的主机拷贝一个虚拟机过来?的主要内容,如果未能解决你的问题,请参考以下文章

linux系统虚拟机怎么设置网桥模式

怎么在安装linux虚拟机时自动设定?linux使用kickstart自动安装脚本安装系统

怎么在虚拟机Linux系统home目录下增加目录

vmware虚拟机linux怎么扩展硬盘大小

Linux系统中用脚本安装虚拟机及其管理,快照及虚拟机重置

怎样删除虚拟机下的Linux