Ubuntu 下 KVM 虚拟机创建
记上周末折腾 KVM 搭建好环境以后,这周终于有时间尝试创建虚拟机试试,我用的系统是ubuntu-16.04-server-amd64
,所以安装途中的坑都以这个为准。
我的新书《LangChain编程从入门到实践》 已经开售!推荐正在学习AI应用开发的朋友购买阅读!
虚拟机创建
设置权限
为了让非 root 用户可以直接使用 virsh 命令管理虚拟机,需要将普通用户加入到 kvm 和 libvirt 用户组中,重新登录就会使新的用户组成员生效了:
1 | $ sudo adduser <youruser> kvm |
注意: 添加到 libvirtd 用户组可能遇到错误 error : virPidFileAcquirePath:422 : Failed to acquire pid file '/var/run/libvirtd.pid': Resource temporarily unavailable
解决:
1 | mv /var/run/libvirtd.pid /var/run/libvirtd.pid.old |
使用 virt-install 创建虚拟机
新手第一次推荐使用图形化界面创建虚拟机,建议使用 MobaXterm 连接服务器,原生支持x11,所以直接在shell中运行virt-manager就可以了。(我是直接在宿主机操作的,然后销毁,用 virsh-install 又尝试了一遍,毕竟 CLI 才是常态😂)
注意:
- 选择英文系统,后面安装阶段会出现一个只有中文系统才存在的bug,没有找到解决的方案
- 分区磁盘选项:选择向导-使用整个磁盘并设置LVM(这里开个坑,另起一篇详解LVM)
其他步骤按照提示就可以了
1 | $ virt-install \ |
常用操作
1 | # 查看虚拟机描述文进(xml文件) |
更改虚拟机名
1 | # 关闭虚拟机 |
虚拟机生命周期管理
1 | # 虚拟机开机/关机 |
启用 virsh console 终端访问
使用 ssh 登录到 KVM 里的某个 ubuntu 16.04 虚机 ssh [email protected]
在 ubuntu 虚机里配置串口信息,执行下面的两个命令来启用虚机里的串口访问,这样就可以使用virsh console
来创建出一个新的连接
1 | $ sudo systemctl enable [email protected] |
virt-clone 虚机克隆工具
Options(一些基本的选项):
–version:查看版本
-h,–help:查看帮助信息
–connect=URI:连接到虚拟机管理程序 libvirt 的URI
General Option(一般选项):
-o ORIGINAL_GUEST, –original=ORIGINAL_GUEST:原来的虚拟机名称
-n NEW_NAME, –name=NEW_NAME:新的虚拟机名称
–auto-clone:从原来的虚拟机配置自动生成克隆名称和存储路径。
-u NEW_UUID, –uuid=NEW_UUID:克隆虚拟机的新的UUID,默认值是一个随机生成的UUID
Storage Configuration(存储配置):
-f NEW_DISKFILE, –file=NEW_DISKFILE:指定新的虚拟机磁盘文件
–force-copy=TARGET:强制复制设备
–nonsparse:不使用稀疏文件复制磁盘映像
Networking Configuration:(网络配置)
-m NEW_MAC, –mac=NEW_MAC:设置一个新的mac地址,默认是一个随机的mac
1 | virt-clone --connect=qemu:///system -o ubuntuvm1 -n ubuntuvm2 -f /var/lib/libvirt/images/ubuntuvm2.img |
查看确认
1 | $ virsh list --all |
MAC 地址
1 | sudo grep "mac address" /etc/libvirt/qemu/ubuntuvm* |
其他工具
virt-v2v
virt-v2v是虚机格式迁移工具,将外部虚拟化平台上的虚拟机转化到KVM平台上运行,它可以读取在VMware、Xen和其他虚拟机管理程序上运行的Windows和Linux虚拟机。
virt-top
类似于linux系统下的top命令,可以显示所有虚拟机CPU、内存等使用情况,该工具需要单独安装sudo apt-get install virt-top
安全工具sVirt
参考链接
Ubuntu 下 KVM 虚拟机创建