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来管理虚拟机了

 

posted @ 2023-05-20 21:03  小粉优化大师  阅读(806)  评论(0编辑  收藏  举报