kvm-创建虚拟机的入门实战
1、准备虚拟磁盘
1.1、需求
要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-8-x86_64.raw
1.2、qemu-img语法
qemu-img create -f 磁盘格式 磁盘名称 磁盘大小
1.3、创建10G raw格式硬盘
qemu-img create -f raw /opt/CentOS-8-x86_64.raw 10G
1.4、查看效果
root@localhost:~# ll -h /opt/ -rw-r--r-- 1 root root 10G May 20 17:13 CentOS-8-x86_64.raw
2、准备ISO镜像和VNC
2.1、下载ISO镜像
2.2、安装vnc
下载地址:https://www.realvnc.com/en/connect/download/viewer/
3、使用virt-install命令创建虚拟机
使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc来连接虚拟机,对其进行配置和查看进度。
3.1、virt-install创建虚拟机
3.1.1、创建虚拟机命令
virt-install --virt-type kvm --name CentOS-8-x86_64 --memory 2048 \ --cdrom=/opt/CentOS-7-x86_64-Minimal-2009.iso --disk=/opt/CentOS-8-x86_64.raw \ --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
3.1.2、参数解析
--virt-type kvm # 指定创建的虚拟机基于的虚拟化技术 --name CentOS-8-x86_64 # 指定创建虚拟机的名字,推荐"简洁" --ram 2048 # 指定创建虚拟机的内存大小 --cdrom=XX.iso # 指定创建虚拟机使用的系统镜像 --disk path=XX.raw # 指定创建虚拟机使用的虚拟磁盘 --network network=default # 指定创建虚拟机使用的网络类型 --graphics vnc,listen=0.0.0.0 # 指定访问虚拟机使用的客户端配置信息 --noautoconsole # 禁用配置的客户端自动连接虚拟机
3.2、使用vnc连接查看进度或配置
3.2.1、填写链接的IP地址
通过vnc客户端连接到安装界面,kvm虚拟机的默认端口从5900开始,输入虚拟机的宿主机ip地址192.168.X.X,然后点击“connect”效果如下:
注意:
要在创建虚拟机命令执行前打开终端界面
退出全屏的快捷键:Ctrl+Alt+Shift+F
3.2.2、连接成功界面
下面跟我们安装操作系统一样
3.3、操作系统安装流程
3.3.1、修改网口命令为ethx开头
1、选择安装Centos条目
光标移动到“Install Centos7 ...”,
2、通过给内核传递参数,配置网卡
按【Tab键】,编辑配置,在末尾追加 net.ifnames=0 biosdevname=0,编辑完毕后,直接按【Enter】
3.3.2、选择系统的语言
3.3.3、进入配置界面
3.3.4、查看网口是否修改为eth0
3.3.5、查看硬盘大小是不是我们分配的10G
3.3.6、设置root密码
3.3.7、重启虚拟机【注意:这里重启不会自动拉起虚拟机,需要virsh start name_xxxx开启虚拟机】
4、开启虚拟机
4.1、问题点
kvm中虚拟机是不会重启的,需要在宿主机系统中,使用命令开启虚拟机
4.2、开启虚拟机
# 查询虚拟机的名字 root@localhost:/opt# virsh list --all Id Name State ---------------------------------- - CentOS-8-x86_64 shut off # 开启虚拟机 virsh start CentOS-8-x86_64 注意: 每次关闭虚拟机后,再次开启虚拟机,虚拟机的id都会自动的变化
4.3、检查虚拟机的IP地址
4.3.1、启用eth0网口
ifup eth0
4.3.2、查询IP地址
4.3.3、查看路由信息
可以看到:操作方式是跟正常操作linux系统的方式是一致的。
4.4、宿主机检查
4.4.1、宿主机检查网络
root@localhost:/opt# ifconfig vnet0 vnet0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet6 fe80::fc54:ff:fe45:ae83 prefixlen 64 scopeid 0x20<link> ether fe:54:00:45:ae:83 txqueuelen 1000 (Ethernet) RX packets 720 bytes 49263 (49.2 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 4899 bytes 1017421 (1.0 MB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 效果:虚拟机启动后,当前系统中,多出来了一个网卡vnet0,这个vnet网卡没有ipv4的地址
4.4.2、宿主机检查进程
root@localhost:/opt# ps -aux | grep -i centos libvirt+ 6633 0.9 8.0 4465336 651128 ? Rl 18:39 1:22 /usr/bin/qemu-system-x86_64 -name guest=CentOS-8-x86_64,debug-threads=on -S -object {"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain-1-CentOS-8-x86_64/master-key.aes"} -machine pc-q35-7.2 ,usb=off,dump-guest-core=off,memory-backend=pc.ram -accel kvm -cpu host,migratable=on -m 2048 -object {"qom-type":"memory-backend-ram","id":"pc.ram","size":2147483648} -overcommit mem-lock=off -s ... 效果:虚拟机,本质上就是在宿主机系统上的一个kvm进程,管理虚拟机跟管理进程基本一样
4.4.3、注意:libvirtd服务即使停止不会影响虚拟机正常运行
我的libvirtd服务即使停止了,它不会影响虚拟机的正常运行但是就不能使用virsh来管理虚拟机了