Zavier's Blog

在Linux下通过命令行部署KVM虚拟机

由于条件限制,一直没有机会在Linux下尝试安装kvm虚拟机,前几天刚好给笔记本安装了Ubuntu18.04,虽然个垃圾本,但是用来跑Linux是绰绰有余。而很多程序都不支持Linux,所以只能通过虚拟机安装Windows的方式来运行他们。


实验环境


操作系统:Ubuntu 18.04.1 LTS

宿主机:联想G400笔记本

CPU:i5-3230M

内存:8G


检查CPU是否支持虚拟化


cat /proc/cpuinfo |grep vmx


通过apt安装所需软件包


sudo apt install qemu-kvm bridge-utils libvirt virtinst


配置网桥


KVM客户机连接网络常见的有三种方式:

NAT模式:该方式是将主机作为路由器,充当客户机的网关,将客户机的外网流量NAT至主网卡从而使客户机能够访问互联网,该方式的缺点是外部网络无法连接到客户机,当然在宿主机上通过iptables来关闭nat并在上层路由器配好路由的话,是可以让外网来访问客户机的。

桥接物理网络模式:在该模式下,宿主机充当一台交换机,客户机通过宿主机(交换机)来获取上级DHCP分配的IP地址,此时客户机与宿主机处于同一网段内,外部网络以及宿主机都可以与客户机进行连接。

Host-Only模式:该模式与NAT模式类似,唯一不同的是只有宿主机才能与客户机建立连接。

我这里进行实验的网络配置为桥接模式,客户机能够直接与宿主机处于同一网段,方便访问。

Ubuntu/Debian系的操作系统,网卡的配置信息存在/etc/network/interfaces文件内或者在/etc/network/interfaces.d目录内。

建立桥接网络应先配置虚拟网桥,这里将网桥设备命名为br0

sudo nano /etc/network/interfaces

在文件下方加入选项

auto br0
iface br0 inet dhcp
bridge_ports enp2s0
bridge_stp off
bridge_fd 0

保存后重启网络即可

sudo systemctl restart networking


编辑虚拟机的VNC选项以便进入客户机控制台


sudo nano /etc/libvirt/qemu.conf

取消以下选项的注释,修改后保存

vnc_listen = "0.0.0.0"
vnc_password = "设置你的密码"


重新启动libvirtd


sudo /etc/init.d/libvirtd restart


创建虚拟磁盘


先创建一个目录用于存放虚拟机的安装镜像及磁盘文件

sudo mkdir -p /home/kvm/iso
sudo mkdir -p /home/kvm/instance

使用qemu-img命令创建一块大小为20G,格式为qcow2的虚拟磁盘,用于等会挂载到客户机上,名称可自定义

qemu-img create -f qcow2 /home/kvm/instance/instance01.qcow 20G


配置客户机并完成系统安装


首先下载镜像,这里演示的是安装CentOS6.10 64位

wget -P /home/kvm/iso/ http://mirrors.163.com/centos/6/isos/x86_64/CentOS-6.10-x86_64-minimal.iso

使用virt-install命令定义一台客户机

virt-install \
--name=instance01 \
--virt-type=kvm \
--hvm --ram=1024 \ 
--vcpus=1 \
--network bridge=br0,model=virtio \
--graphics vnc,port=5900 \
--disk path=/home/kvm/instance/instance01.qcow,bus=virtio  \
--os-type=linux \
--cdrom=/home/kvm/iso/CentOS-6.10-x86_64-minimal.iso

参数解读

--name:客户机名称,最后配置文件会存在/etc/libvirt/qemu/目录下
--virt-type:虚拟类型,一般是kvm,也可以是xen等等
--ram:分配给客户机的内存大小
--vcpus:分配给客户机的CPU个数
--network:网络配置,这里将网桥设备配置为br0,驱动为virtio
--graphics:VNC相关配置,必选,用于通过VNC进入客户机控制台并进行系统安装
--disk path:输入刚才生成的虚拟磁盘的路径,将虚拟磁盘挂载到客户机,驱动为virtio
--os-type:操作系统类型
--cdrom:输入系统iso镜像路径,用于系统安装

上一步骤的命令执行完毕后,客户机会立即启动,所以可以通过VNC客户端,连接相应的端口进行操作系统的安装


客户机的管理命令


在宿主机上,管理客户机的工具主要是virsh命令,常用命令有:

列出所有客户机

sudo virsh list --all
或者
sudo virsh --connect qemu:///system list --all

启动客户机

sudo virsh start 客户机名

关闭客户机

sudo virsh shutdown 客户机名

shutdown的方式往往不能够关闭虚拟机,所以应给客户机安装acpid并设为开机自启

sudo yum -y install acpid
/etc/init.d/acpid start 
chkconfig --add acpid

连接客户机控制台

sudo virsh console 客户机名

强行关闭一台客户机(从列表删除,可重新定义)

sudo virsh destroy 客户机名

从xml文件定义一台客户机,用于解决destroy后,客户机不在列表的问题

sudo virsh define /etc/libvirt/qemu/客户机名

彻底删除客户机

sudo virsh undefine 客户机名

挂起客户机

sudo virsh suspend 客户机名

恢复被挂起的客户机

sudo virsh resume 客户机名

使客户机在宿主机开机后自动启动

sudo virsh autostart 客户机名

取消客户机随宿主机的启动而启动

sudo virsh autostart --disable 客户机名



相关文章
在Linux下通过命令行部署KVM虚拟机2018年10月15日

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Copyright © 2017-2019 Zavier的博客.网站地图