一. QEMU,KVM,QEMU-KVM
QEMU 提供一系列的硬件模拟设备 (CPU, 网卡, 磁盘等), 客户机指令都需要 QEMU 翻译, 因而性能较差. KVM 是 linux 内核提供的虚拟化, 可以用来进行 vCPU 的创建与运行, 虚拟内存的地址空间分配, 指令执行效率较高, 但缺少 IO 设备的虚拟化. QEMU-KVM 就是 KVM 与 QEMU 的结合, KVM 负责 CPU 虚拟化 + 内存虚拟化, QEMU 模拟其它 IO 设备.
二. 安装并创建虚拟机
安装 qemu-kvm 软件
faramita2016@linux-l9e6:~> zypper install qemu-kvm // Ubuntu 系统使用 apt-get install qemu-kvm
创建 qcow2 格式虚拟机磁盘文件
faramita2016@linux-l9e6:~> qemu-img create -f qcow2 vdisk.img 5G // 磁盘大小 5G
使用 debian 镜像安装虚拟机, order=dc 优先使用 CD-ROW(d), 后使用硬盘 (c), 内存默认 128m, 使用 - m 512 指定
faramita2016@linux-l9e6:~> qemu-kvm -cpu host -cdrom debian-9.4.0.iso -hda vdisk.img -boot order=dc
三. 设置虚拟机使用网桥 bridge 模式
宿主机中执行, qemu-bridge-helper 增加当前用户可执行权限, 用来自动添加网络后端 tap 设备
faramita2016@linux-l9e6:~> sudo chmod o+x /usr/lib/qemu-bridge-helper
宿主机中执行,-net nic 为虚拟机创建 nic 网卡 (网络前端),-net bridge 指定宿主机中使用网桥 (网络后端)
faramita2016@linux-l9e6:~> qemu-kvm -cpu host -hda vdisk.img -net nic -net bridge,br=br0 // 指定网桥 br0
虚拟机中执行, 编辑 / etc/network/interfaces, 设置静态 IP
- root@debian:~# vi /etc/network/interfaces
- # The primary network interface
- allow-hotplug ens3
- #iface ens3 inet dhcp
iface ens3 inet static
- address 10.0.0.8
- netmask 255.0.0.0
- gateway 10.0.0.1
- root@debian:~# ifup ens3 // 打开 ens3 网络接口, ifdown 关闭网络接口
- root@debian:~# /etc/init.d/networking restart // 重启网络服务
虚拟机中执行, 编辑 / etc/resolv.conf, 设置 DNS
- root@debian:~# vi /etc/resolv.conf
- nameserver 8.8.8.8 // Google DNS
四. 设置虚拟机为非图形模式
虚拟机中执行, 编辑 / etc/default/grub 文件, 添加 console=ttyS0 启动参数
- root@debian:~# vi /etc/default/grub
- GRUB_DEFAULT=0 // 默认启动项
- GRUB_TIMEOUT=0 // 默认菜单项停留时间
- GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
- GRUB_CMDLINE_LINUX_DEFAULT="quiet" // 默认内核启动参数
- GRUB_CMDLINE_LINUX="console=ttyS0" // 手动添加内核启动参数, 添加 console=ttyS0
虚拟机中执行, 更新 grub 配置, 并重启
- root@debian:~# update-grub
- root@debian:~# shutdown -h now
a. 宿主机中执行, 添加 - nographic 参数创建虚拟机, 当前 shell 前台创建虚拟机
faramita2016@linux-l9e6:~> qemu-kvm -cpu host -hda vdisk.img -net nic -net bridge,br=br0 -nographic
b. 宿主机中执行, 添加 - display none -daemonize 参数创建虚拟机, 当前 shell 后台创建虚拟机
faramita2016@linux-l9e6:~> qemu-kvm -cpu host -hda vdisk.img -net nic -net bridge,br=br0 -display none -daemonize
五. 以只读方式启动虚拟机
a. 创建一个快照
用 qemu-img 命令创建一个原始镜像的快照
faramita2016@linux-l9e6:~> qemu-img create -f qcow2 -b vdisk.img snapshot.img
使用快照文件启动虚拟机
faramita2016@linux-l9e6:~> qemu-kvm -cpu host -hda snapshot.img -net nic -net bridge,br=br0 -nographic
b. 使用临时快照
原理: 创建一个临时快照, 虚拟机启动之后, 自动删除快照文件
faramita2016@linux-l9e6:~> qemu-kvm -cpu host -hda vdisk.img -net nic -net bridge,br=br0 -snapshot -nographic
来源: https://www.cnblogs.com/faramita2016/p/9200648.html