㈠ 如何在kvm服务器上创建虚拟机
创建虚拟机镜像
要在一台host上跑起一个虚拟机一般需要两个步骤:
第一步:创建虚拟机镜像
qemu-img
create
-f
raw
/images/vm1.raw
8G
qmeu-img创建的镜像是一个稀疏文件,也就是说刚创建出来的文件并没有8G,它会随着数据的增多慢慢增加,直到8G
第二步:启动虚拟机
kvm
/imges/vm1.raw
运行结果:
因为镜像里面没有任何内容,所以提示找不到可引导设备。
使用qemu-img管理镜像
qemu-img基本命令
上节介绍了使用qemu-img创建镜像,这一节将会介绍qemu-img在镜像管理上的强大功能。
qemu-img有很多命令,包括下面常用的,当然qemu-img
-h你懂得。
info
查看镜像的信息
create
创建镜像
check
检查镜像
convert
转化镜像的格式,(raw,qcow
……)
snapshot
管理镜像的快照
rebase
在已有的镜像的基础上创建新的镜像
resize
增加或减小镜像大小
创建镜像
qemu-img
create
-f
<fmt>
-o
<options>
<fname>
<size>
举例:
qemu-img
create
-f
raw
-o
size=4G
/images/vm2.raw
hzgatt@hzgatt:~/images$
ll
total
0-rw-r--r--
1
hzgatt
hzgatt
4.0G
6月
29
14:11
vm2.raw
hzgatt@hzgatt:~/images$
ll
-s
total
00
-rw-r--r--
1
hzgatt
hzgatt
4.0G
6月
29
14:11
vm2.raw
hzgatt@hzgatt:~/images$
qemu-img
info
vm2.raw
image:
vm2.raw
file
format:
raw
virtual
size:
4.0G
(4294967296
bytes)
disk
size:
0
虽然ls中看到文件的大小是4G,但是实际上磁盘大小是0。这就是稀疏文件
转化
将一个镜像文件转化为另外一种格式,qemu-img支持的格式可以看qemu-img
-h最后一行。
Supported
formats:
vvfat
vpc
vmdk
vdi
sheepdog
rbd
raw
host_cdrom
host_floppy
host_device
file
qed
qcow2
qcow
parallels
nbd
dmg
tftp
ftps
ftp
https
http
cow
cloop
bochs
blkverify
blkdebug
转化命令:
qemu-img
convert
-c
-f
fmt
-O
out_fmt
-o
options
fname
out_fname
-c:采用压缩,只有qcow和qcow2才支持
-f:源镜像的格式,它会自动检测,所以省略之
-O
目标镜像的格式
-o
其他选先
fname:源文件
out_fname:转化后的文件
看例子:
hzgatt@hzgatt:~/images$
qemu-img
convert
-c
-O
qcow2
vm2.raw
vm2.qcow2
hzgatt@hzgatt:~/images$
ll
-s
total
136K
0
-rw-r--r--
1
hzgatt
hzgatt
5.0G
6月
29
13:55
vm1.raw
136K
-rw-r--r--
1
hzgatt
hzgatt
193K
6月
29
14:22
vm2.qcow2
0
-rw-r--r--
1
hzgatt
hzgatt
4.0G
6月
29
14:11
vm2.raw
hzgatt@hzgatt:~/images$
qemu-img
info
vm2.qcow2
image:
vm2.qcow2
file
format:
qcow2
virtual
size:
4.0G
(4294967296
bytes)
disk
size:
136K
cluster_size:
65536
如果想看要转化的格式支持的-o选项有哪些,可以在命令末尾加上
-o
?
hzgatt@hzgatt:~/images$
qemu-img
convert
-c
-O
qcow2
vm2.raw
vm2.qcow2
-o
?
Supported
options:
size
Virtual
disk
size
backing_file
File
name
of
a
base
image
backing_fmt
Image
format
of
the
base
image
encryption
Encrypt
the
image
cluster_size
qcow2
cluster
size
preallocation
Preallocation
mode
(allowed
values:
off,
metadata)
增加减少镜像大小
注意:只有raw格式的镜像才可以改变大小
hzgatt@hzgatt:~/images$
qemu-img
resize
vm2.raw
+2GB
hzgatt@hzgatt:~/images$
ll
-s
total
136K
0
-rw-r--r--
1
hzgatt
hzgatt
5.0G
6月
29
13:55
vm1.raw
136K
-rw-r--r--
1
hzgatt
hzgatt
193K
6月
29
14:22
vm2.qcow2
0
-rw-r--r--
1
hzgatt
hzgatt
6.0G
6月
29
14:28
vm2.raw
hzgatt@hzgatt:~/images$
qemu-img
info
vm2.raw
image:
vm2.raw
file
format:
raw
virtual
size:
6.0G
(6442450944
bytes)
disk
size:
0
㈡ KVM:virt-install创建虚拟机
grep -E 'vmx|svm' /proc/cpuinfo
#-E grep的扩展模式
#当前cpu是否支持硬件虚拟化
lsmod | grep kvm
#检查是否加载kvm模块,kvm只是一个linux模块,在kvm安装完成后整个linux系统会变成一个hypervisor(虚拟机管理层)。而qemu和virt、virsh相当于是两个家族,qemu只支持命令行模式(创建、删除、管理等操作),virt-install创建虚拟机,virsh只能管理虚拟机(无法创建),virt-manager提供web界面。
总结来说,libvirt家族和qemu家族都可以实现对虚拟机的生命周期管理,同一个目的不一样的工具而已。
mkdir /home/vm
将CentOS-7-x86_64-Minimal-1810.iso上传到此目录下
virt-install -n centos3 -r 256 --disk /home/vm/ccc.img,format=qcow2,size=2 --network bridge=br0 --os-variant=rhel7.6 --cdrom /home/vm/CentOS-7-x86_64-Minimal-1810.iso --vnc --vncport=6666 --vnclisten=0.0.0.0
-n 虚拟机名字
-r 内存(默认单位MB)
--disk 制定磁盘(可以提前使用qemu-img创建,也可以在此处创建)
*使用qemu-img创建磁盘 qemu-img create -f qcow2 aaa.img 10G
--network 指定虚拟机使用的网络,这里使用br0,需要提前准备好此桥设备
--cdrom 指定镜像文件
--vnc 设置vnc,指定vnc监听端口和监听地址
#上述命令输入完成后直接回车即可
弹出上述告警框不用理会
此时查看宿主机打开端口,出现我们监听的6666端口
使用vnc客户端新建连接,ip地址填宿主机地址,端口6666,名称就是虚拟机名称
颜色级别设置成rgb222,然后点击OK
双击连接图标,进入安装界面
注意:
1、在执行virt-install时一定要仔细,别漏了任何一个参数。我就是少了--vnc这个参数导致vnc怎么也连不上
2、宿主机要跑虚拟机,确保cpu、内存资源足够,否则安装会出问题
㈢ 创建基于SRIOV的KVM虚拟机
本文来自微信公众号“ICT大融合”。
一、利用 iso 创建虚机
1. 安装环境:
适用于centos/redhat.
2. 安装准备:
yum -y install kvm
yum -y install qemu-kvmpython-virtinst libvirt libvirt-python virt-manager libguestfs-toolsbridge-utils virt-install
systemctl startlibvirtd.service
systemctl enablelibvirtd.service
3. 构建虚拟网络:
brctl addbr br0
brctl addif br0 ens6np0
注:ens6np0是netreonome CX-25G智能网卡,
[root@test4 vms]# ethtool -i ens6np0
driver: nfp
version: rev-2020.01.13.0820.a3cf8e9 (o-
firmware-version: 0.0.3.5 0.30 sriov-2.1.16.1nic
expansion-rom-version:
bus-info: 0000:02:00.0
4. 安装虚拟机
mkdir -p /home/vms/
virt-install --virt-type=kvm --name=centos88 --vcpus=2--memory=4096 --location=/home/CentOS-7-x86_64-DVD-1908.iso --diskpath=/home/vms/centos88.qcow2,size=40,format=qcow2 --network bridge=br0--graphics none --extra-args='console=ttyS0' –force
注:
安装镜像iso一定放在/home/或其他可访问目录,否则提示没有操作权限。
然后一路按照提示,设置相应参数,直到虚拟机构建完成。
安装完成之后,用virshlish查看虚拟机状态。
[root@test4 vms]# virsh list
Id Name State
----------------------------------------------------
2 centos88 running
以上是虚拟机的网卡是基于virtio并接入主机的bridge,用ps可以看到相应进程。
[root@test4 ~]# ps -e |grep kvm
15484 ? 00:00:38 qemu-kvm
15491 ? 00:00:00 kvm-pit/15484
18406 ? 00:00:14 qemu-kvm
18413 ? 00:00:00 kvm-pit/18406
[root@test4 ~]# ps -e |grep vhost
15486 ? 00:00:00 vhost-15484
18408 ? 00:00:00 vhost-18406
二、用通过镜像创建基于 SRIOV 虚拟机。
1. 创建vf :
echo 2 > /sys/class/net/ens6np0/device/sriov_numvfs
可以用如下命令查看,
lspci -kd 19ee:
lspci | grep -i ethernet
注意:19ee是netreonome的PCI vendor ID号。
2. 创建虚拟机镜像文件:
cp centos88.qcow2 centos7.200.qcow2
chown qemu:qemu centos7.200.qcow2
cp centos88.xml centos7.200.xml
3. 修改配置文件
vi centos7.200.xml
其中,uuid采用uuidgen 命令生成。
选项Interface进行修改,Mac地址随便改一个,不重复就行。关键是修改vf的PCI地址,用lspci获取。
virsh define centos7.200.xml
4. 创建磁盘:
qemu-img create /home/vms/centos200.img 40G
5. 启动虚机:
virsh start centos200
三、常见命令
virsh基本命令:
virsh list # 查看在运行的虚拟机
virsh mpxml vm-name # 查看kvm虚拟机配置文件
virsh start vm-name # 启动kvm虚拟机
virsh shutdown vm-name # 正常关机
virsh destroy vm-name # 非正常关机,强制关闭虚拟机(相当于物理机直接拔掉电源)
virsh undefine vm-name # 删除vm的配置文件
ls /etc/libvirt/qemu
# 查看删除结果,Centos-6.6的配置文件被删除,但磁盘文件不会被删除
virsh define file-name.xml # 根据配置文件定义虚拟机
virsh suspend vm-name # 挂起,终止
virsh resumed vm-name # 恢复被挂起的虚拟机
virsh autostart vm-name # 开机自启动vm
virsh console <虚拟机名称> # 连接虚拟机
virt-install参数:
–name指定虚拟机名称
–memory分配内存大小。
–vcpus分配CPU核心数,最大与实体机CPU核心数相同
–disk指定虚拟机镜像,size指定分配大小单位为G。
–network网络类型,此处用的是默认,一般用的应该是bridge桥接。
–accelerate加速
–cdrom指定安装镜像iso
–vnc启用VNC远程管理,一般安装系统都要启用。
–vncport指定VNC监控端口,默认端口为5900,端口不能重复。
–vnclisten指定VNC绑定IP,默认绑定127.0.0.1,这里改为0.0.0.0。
–os-type=linux,windows
–os-variant=rhel6
--name 指定虚拟机名称
--ram 虚拟机内存大小,以 MB 为单位
--vcpus 分配CPU核心数,最大与实体机CPU核心数相同
–-vnc 启用VNC远程管理,一般安装系统都要启用。
–-vncport 指定VNC监控端口,默认端口为5900,端口不能重复。
–-vnclisten 指定VNC绑定IP,默认绑定127.0.0.1,这里改为0.0.0.0。
--network 虚拟机网络配置
#其中子选项,bridge=br0 指定桥接网卡的名称。
–os-type=linux,windows
–os-variant=rhel7.2
--disk 指定虚拟机的磁盘存储位置
#size,初始磁盘大小,以 GB 为单位。
--location 指定安装介质路径,如光盘镜像的文件路径。
--graphics 图形化显示配置
#全新安装虚拟机过程中可能会有很多交互操作,比如设置语言,初始化 root 密码等等。
--extra-args 根据不同的安装方式设置不同的额外选项
㈣ 安卓开启kvm
创建KVM虚拟机_安卓kvm虚拟机可以用两种方法创建kvm虚拟机,一种是virt-manager管理工具创建,一种是命令行的方式。1.命令行方式创建kvm虚拟机。先创建qcow2格式的镜像文件,大小为20G。qemu-imgcreate-fqcow2/data/kvm/images/centos7.6×86.qcow20G输入命令进行虚拟机的安装:virt-install–name=centos7.6×86–vcpus=2–ram=2048–diskpath=/data/kvm/imag