虚机安装及一些基本操作
先下载虚机配置文件geshifei-vm1.xml:链接: https://pan.baidu.com/s/15wXohrZxFti4NwmK8XEyIg 提取码: 1234注意,这只是从 libvirt 的数据库里去掉了这台虚机,虚机的磁盘文件还在,如果确认不用了,可以通过“六”节将磁盘文件也删除。
一、打开BIOS中的SVM

安装qemu之前,要确保打开了svm control。
二、host机安装qume、libvirt
host机器信息如下
[root@hadoop03 ~]# uname -a
Linux bclinux-21-10-u4 6.15.7 #1 SMP PREEMPT_DYNAMIC Mon Oct 20 16:33:54 CST 2025 x86_64 x86_64 x86_64 GNU/Linux
1,安装qemu
yum install qemu --allowerasing
2,安装libvirt
yum install libvirt-daemon libvirt-daemon-kvm qemu-kvm virt-install
3,启动libvirtd
[root@hadoop03 ~]# systemctl start libvirtd && systemctl enable libvirtd
[root@hadoop03 ~]#
4,检查libvirtd状态
[root@hadoop03 ~]# systemctl status libvirtd
● libvirtd.service - Virtualization daemon
Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2025-09-18 11:17:07 CST; 2s ago
TriggeredBy: ● libvirtd-ro.socket
● libvirtd.socket
● libvirtd-admin.socket
Docs: man:libvirtd(8)
https://libvirt.org
Main PID: 6058 (libvirtd)
Tasks: 21 (limit: 32768)
CGroup: /system.slice/libvirtd.service
├─ 4401 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper
├─ 4402 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper
└─ 6058 /usr/sbin/libvirtd --timeout 120
Sep 18 11:17:07 hadoop03 systemd[1]: Starting Virtualization daemon...
Sep 18 11:17:07 hadoop03 systemd[1]: Started Virtualization daemon.
Sep 18 11:17:07 hadoop03 dnsmasq[4401]: read /etc/hosts - 12 names
Sep 18 11:17:07 hadoop03 dnsmasq[4401]: read /var/lib/libvirt/dnsmasq/default.addnhosts - 0 names
Sep 18 11:17:07 hadoop03 dnsmasq-dhcp[4401]: read /var/lib/libvirt/dnsmasq/default.hostsfile
[root@hadoop03 ~]#
启动libvirtd后,ifconfig应该能看到virbr0。
- 没有virbr0,按第5步执行
- 有virbr0,按第7步执行
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:29:fb:19 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 2 overruns 0 carrier 0 collisions 0
5,检查“default”网络是否存在
虚拟机xml中定义了<source network='default'/>,libvirt 会去查找一个名为 “default” 的网络,如果找不到该虚拟网络,就不会创建virbr0网桥设备。
[root@hadoop03 ~]# virsh net-list --all
Name State Autostart Persistent
--------------------------------------------
default active yes yes
- virsh net-list --all中没有“default”,按第6步执行
- virsh net-list --all中没有“default”,按第7步执行
6,创建“default”网络
vim /etc/libvirt/qemu/networks/default.xml,新建文件:
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
virsh net-edit default
or other application using the libvirt API.
-->
<network>
<name>default</name>
<uuid>74c467fd-c8f1-4339-826e-31eaadb317d6</uuid>
<forward mode='nat'/>
<bridge name='virbr0' stp='on' delay='0'/>
<mac address='52:54:00:29:fb:19'/>
<ip address='192.168.122.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.122.2' end='192.168.122.254'/>
</dhcp>
</ip>
</network>
启动default网络:
virsh net-define /tmp/default.xml
virsh net-start default
virsh net-autostart default
此时ifconfig就能看到virbr0设备了。
7,开启转发规则
[root@hadoop03 ~]# sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
三、准备虚机的iso文件
把linux系统镜像文件拷贝到 /var/lib/libvirt/images/ 目录,比如我的环境:
[root@hadoop03 ~]# ls /var/lib/libvirt/images/
BCLinux-21.10U4-dvd-x86_64-250520.iso
四、创建虚机
1,定义虚机
通过网盘分享的文件:geshifei-vm1.xml
链接: https://pan.baidu.com/s/1NMk3WEGHgCE8-oebWkFGsw 提取码: 1234
[root@hadoop03 ~]# virsh define /home/geshifei/geshifei-vm1.xml
Domain 'geshifei-vm1' defined from /home/geshifei/geshifei-vm1.xml
2,创建虚机的磁盘
[root@hadoop03 ~]# qemu-img create -f qcow2 /var/lib/libvirt/images/bclinux.qcow2 40G
Formatting '/var/lib/libvirt/images/bclinux.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=42949672960 lazy_refcounts=off refcount_bits=16
3,启动虚机
[root@hadoop03 ~]# virsh start geshifei-vm1
Domain 'geshifei-vm1' started
通过后面的“虚机状态”命令,应处于“running”状态,注意此时虚机还没有系统。
4,安装虚机系统
如果虚机的boot分区(xml中的boot dev)已经安装过系统,就不需要再安装了。删除虚机,并不会删除bclinux.qcow2磁盘,所以只要这块盘安装过系统,新虚机可以直接用,不需要再次安装系统,略过第本节。
<domain type='kvm'>
<name>geshifei-vm1</name>
<uuid>3781fd54-111e-40b4-81f0-902bd92f91d7</uuid>
……
<os>
<type arch='x86_64' machine='pc-q35-6.2'>hvm</type>
<boot dev='hd'/> 这里是启动分区
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/bclinux.qcow2'/> 这里是虚机的磁盘
4.1 设置cdrom启动
[root@hadoop03 ~]# EDITOR=vim virsh edit geshifei-vm1
将<boot dev='hd'/> 改成<boot dev='cdrom'/>
4.2 查看虚机端口
[root@hadoop03 ~]# virsh vncdisplay geshifei-vm1
:0
表示虚拟机 VNC 图形界面正在宿主机的端口 5900 上监听。
| 输出 | 含义 |
| :0 | VNC 服务的显示编号为 0,对应 TCP 端口 5900(5900 + 显示号) |
| :0 | 显示编号为 1,对应 TCP 端口 5901 |
| … | 以此类推 |
4.3 重启虚机
virsh destroy geshifei-vm1 强制关闭虚机
virsh start geshifei-vm1 启动虚机
因为前面设置了boot dev='cdrom',所以重启会进入cdrom的安装界面。
4.4 vnc登陆虚机
linux系统可通过vncview命令、windows系统可通过RealVNC Viewr软件,登陆虚机。
vncviewer host机器ip:5900
此时会弹出下面的安装界面,正常安装虚机的系统即可。

安装完成后,记得通过EDITOR=vim virsh edit geshifei-vm1命令,将<boot dev='cdrom'/> 改回<boot dev='hd'/> 。然后重新启动虚机,就会运行安装在虚机磁盘上的系统。
五,删除虚机
1,关闭虚机
virsh shutdown geshifei-vm1
或
virsh destroy geshifei-vm1 (强制删除)
2,删除虚拟机定义(xml配置)
[root@hadoop03 ~]# virsh undefine geshifei-vm1
Domain 'geshifei-vm1' has been undefined
注意,这只是从 libvirt 的数据库里去掉了这台虚机,虚机的磁盘文件还在,如果确认不用了,可以通过“六”节将磁盘文件也删除。
六、删除虚机的磁盘文件
系统中长时间使用,可能有一些虚机已经被删除,但遗留一些磁盘文件,需删除这些遗留的磁盘文件,增大host系统磁盘空用空间。
1,确认有哪些虚机
[root@hadoop03 ~]# virsh list --all
Id Name State
-------------------------------
geshifei-vm1 shut off
2,确认现存虚机使用的文件
[root@hadoop03 ~]# virsh domblklist geshifei-vm1
Target Source
-------------------------------------------------------------------------
vda /var/lib/libvirt/images/bclinux.qcow2
sda /var/lib/libvirt/images/BCLinux-21.10U4-dvd-x86_64-250520.iso
3,查看存储池中有哪些磁盘文件
[root@hadoop03 ~]# ls -lh /var/lib/libvirt/images/
total 73G
-rw-r--r-- 1 qemu qemu 3.9G May 30 14:09 BCLinux-21.10U4-dvd-x86_64-250520.iso
-rw------- 1 root root 7.4G Sep 23 11:21 bclinux-clone-1.qcow2
-rw------- 1 root root 7.4G Sep 23 11:16 bclinux-clone-2.qcow2
-rw-r--r-- 1 root root 7.4G Sep 23 10:24 bclinux.qcow2
在这个例子中,bclinux-clone-1.qcow2、bclinux-clone-2.qcow2已经没人使用了,可以删除掉。
[root@hadoop03 ~]# rm -rf /var/lib/libvirt/images/bclinux-clone-1.qcow2
[root@hadoop03 ~]# rm -rf /var/lib/libvirt/images/bclinux-clone-2.qcow2
七、虚机信息
1,虚机状态
[root@hadoop03 ~]# virsh list --all
Id Name State
---------------------------
1 geshifei-vm1 running
2,虚机mac
[root@hadoop03 ~]# virsh domiflist geshifei-vm1
Interface Type Source Model MAC
-------------------------------------------------------------
vnet1 network default virtio 52:54:00:81:1f:01
3,虚机ip
[root@hadoop03 ~]# virsh net-dhcp-leases default
Expiry Time MAC address Protocol IP address Hostname Client ID or DUID
---------------------------------------------------------------------------------------------------------
2025-09-23 11:16:29 52:54:00:85:77:9b ipv4 192.168.122.47/24 - -
4,虚机磁盘文件
[root@hadoop03 ~]# virsh domblklist geshifei-vm1
Target Source
-------------------------------------------------------------------------
vda /var/lib/libvirt/images/bclinux.qcow2
sda /var/lib/libvirt/images/BCLinux-21.10U4-dvd-x86_64-250520.iso
八、host ssh免密登陆guest
1,检查host的SSH密钥对
host机器中,主目录中已经有id_rsa.pub(已经有公钥了),按第3步执行。
[root@hadoop03 ~]# ls ~/.ssh/
authorized_keys id_rsa id_rsa.pub
2,生成rsa密钥
ssh-keygen -t rsa
3,将公钥复制到远程服务器
host中的公钥复制到guest,在host中执行下面的命令。
ssh-copy-id root@虚机ip
4,验证免密登录
ssh root@虚机ip uname -a
九、虚机克隆
1,配置源虚机环境
在clone前,需将guest环境配置好,该装的软件及环境参数都准备好,以后以此虚机做clone,新虚机就不需要再配置了。可通过下面命令登陆虚机进行配置。
ssh root@虚机ip
2,关闭源虚机
virsh shutdown geshifei-vm1
# 等待状态变成 shut off,可以用下面命令确认
virsh list --all
# 如果关不掉,可以强制
virsh destroy geshifei-vm1
3,克隆虚机
virt-clone --original geshifei-vm1 --name geshifei-vm2 --auto-clone
4,启动源虚机和新虚机
virsh start geshifei-vm1
virsh start geshifei-vm2
clone完成后 ,可通过“七”节中的命令查询虚机信息。
十、修改虚机配置
EDITOR=vim virsh edit geshifei-vm1虚机名称
改完后,重启虚机。
更多推荐


所有评论(0)