深入探索KVM虚拟化技术:全面掌握虚拟机的创建与管理

安装KVM

开启cpu虚拟化

注意:务必开启虚拟机CPU虚拟化,否则无法嵌套虚拟机

不开启后期报错

安装KVM

配置yum源 --》安装KVM

[root@cloud ~]# mount /dev/cdrom /mnt/

mount: /mnt: WARNING: device write-protected, mounted read-only.

[root@cloud ~]# vim /etc/yum.repos.d/

[root@cloud ~]# vim /etc/yum.repos.d/

bak/ cloud.repo

[root@cloud ~]# vim /etc/yum.repos.d/cloud.repo

[root@cloud ~]# yum clean all

14 files removed

[root@cloud ~]# yum repolist all

repo id repo name status

AppStream AppStream enabled

BaseOS BaseOS enabled

[root@cloud ~]# yum grouplist

AppStream 316 MB/s | 5.7 MB 00:00

BaseOS 455 MB/s | 2.2 MB 00:00

Available Environment Groups:

Server

Minimal Install

Workstation

Custom Operating System

Installed Environment Groups:

Server with GUI

Virtualization Host

Installed Groups:

Container Management

Headless Management

Available Groups:

.NET Core Development

RPM Development Tools

Development Tools

Graphical Administration Tools

Legacy UNIX Compatibility

Network Servers

Scientific Support

Security Tools

Smart Card Support

System Tools

[root@cloud ~]# yum groupinstall -y "Virtualization*" ### 安装的软件包组

Last metadata expiration check: 0:01:01 ago on Sat 05 Aug 2023 03:08:26 PM CST.

No match for group package "insights-client"

No match for group package "centos-release-eula"

Dependencies resolved.

==============================================================

Package Arch Version Repo Size

==============================================================

Installing group/module packages:

virt-install noarch 2.2.1-3.el8 AppStream 99 k

virt-top x86_64 1.0.8-32.el8 AppStream 729 k

virt-viewer x86_64 7.0-9.el8 AppStream 397 k

virt-who noarch 0.27.6-1.el8 AppStream 247 k

Installing dependencies:

python3-suds noarch 0.7-0.8.94664ddd46a6.el8 AppStream 242 k

Installing Environment Groups:

Virtualization Host

Installing Groups:

Virtualization Hypervisor

Virtualization Platform

Virtualization Client

Virtualization Tools

Base

Core

Standard

Transaction Summary

==============================================================

Install 5 Packages

Total size: 1.7 M

Installed size: 6.2 M

Downloading Packages:

Running transaction check

Transaction check succeeded.

Running transaction test

Transaction test succeeded.

Running transaction

Preparing : 1/1

Installing : python3-suds-0.7-0.8.94664ddd46a6. 1/5

Installing : virt-who-0.27.6-1.el8.noarch 2/5

Running scriptlet: virt-who-0.27.6-1.el8.noarch 2/5

Installing : virt-viewer-7.0-9.el8.x86_64 3/5

Installing : virt-top-1.0.8-32.el8.x86_64 4/5

Installing : virt-install-2.2.1-3.el8.noarch 5/5

Running scriptlet: virt-install-2.2.1-3.el8.noarch 5/5

Verifying : python3-suds-0.7-0.8.94664ddd46a6. 1/5

Verifying : virt-install-2.2.1-3.el8.noarch 2/5

Verifying : virt-top-1.0.8-32.el8.x86_64 3/5

Verifying : virt-viewer-7.0-9.el8.x86_64 4/5

Verifying : virt-who-0.27.6-1.el8.noarch 5/5

Installed products updated.

Installed:

python3-suds-0.7-0.8.94664ddd46a6.el8.noarch

virt-install-2.2.1-3.el8.noarch

virt-top-1.0.8-32.el8.x86_64

virt-viewer-7.0-9.el8.x86_64

virt-who-0.27.6-1.el8.noarch

Complete!

可以通过桌面化图标打开或者命令行

[root@cloud ~]# virt-manager

检查环境是否正常

[root@cloud ~]# ifconfig

ens160: flags=4163 mtu 1500

inet 192.168.129.141 netmask 255.255.255.0 broadcast 192.168.129.255

inet6 fe80::4b45:520e:3195:48b4 prefixlen 64 scopeid 0x20

ether 00:0c:29:9b:91:4d txqueuelen 1000 (Ethernet)

RX packets 339 bytes 60656 (59.2 KiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 201 bytes 23207 (22.6 KiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73 mtu 65536

inet 127.0.0.1 netmask 255.0.0.0

inet6 ::1 prefixlen 128 scopeid 0x10

loop txqueuelen 1000 (Local Loopback)

RX packets 48 bytes 4080 (3.9 KiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 48 bytes 4080 (3.9 KiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

### 有正常

virbr0: flags=4099 mtu 1500

inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255

ether 52:54:00:bd:e4:f0 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 0 overruns 0 carrier 0 collisions 0

KVM图形化创建虚拟机

上传ISO

创建虚拟机

加载镜像

配置内存

添加磁盘

能否手工指定存储路径呢?

在指定的路径下首先创建虚拟机所用的磁盘

添加物理磁盘 --> 分区 --> 格式化 --> 挂载 --> 创建磁盘

[root@cloud /]# fdisk /dev/nvme0n2

Welcome to fdisk (util-linux 2.32.1).

Changes will remain in memory only, until you decide to write them.

Be careful before using the write command.

Command (m for help): n

Partition type

p primary (0 primary, 0 extended, 4 free)

e extended (container for logical partitions)

Select (default p):

Using default response p.

Partition number (1-4, default 1):

First sector (2048-41943039, default 2048):

Last sector, +sectors or +size{K,M,G,T,P} (2048-41943039, default 41943039):

Created a new partition 1 of type 'Linux' and of size 20 GiB.

Partition #1 contains a LVM2_member signature.

Do you want to remove the signature? [Y]es/[N]o: p

Do you want to remove the signature? [Y]es/[N]o: y

The signature will be removed by a write command.

Command (m for help): p

Disk /dev/nvme0n2: 20 GiB, 21474836480 bytes, 41943040 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disklabel type: dos

Disk identifier: 0x87cd3c01

Device Boot Start End Sectors Size Id Type

/dev/nvme0n2p1 2048 41943039 41940992 20G 83 Linux

Filesystem/RAID signature on partition 1 will be wiped.

Command (m for help): w

The partition table has been altered.

Calling ioctl() to re-read partition table.

Syncing disks.

[root@cloud /]# mkfs.xfs /dev/nvme0n2p1

meta-data=/dev/nvme0n2p1 isize=512 agcount=4, agsize=1310656 blks

= sectsz=512 attr=2, projid32bit=1

= crc=1 finobt=1, sparse=1, rmapbt=0

= reflink=1

data = bsize=4096 blocks=5242624, imaxpct=25

= sunit=0 swidth=0 blks

naming =version 2 bsize=4096 ascii-ci=0, ftype=1

log =internal log bsize=4096 blocks=2560, version=2

= sectsz=512 sunit=0 blks, lazy-count=1

realtime =none extsz=4096 blocks=0, rtextents=0

[root@cloud /]# mkdir /kvm

[root@cloud /]# cd kvm/

### qcow2为磁盘格式

[root@cloud kvm]# qemu-img create -f qcow2 /kvm/centos1.qcow2 20g

Formatting '/kvm/centos1.qcow2', fmt=qcow2 size=21474836480 cluster_size=65536 lazy_refcounts=off refcount_bits=16

[root@cloud kvm]# ls

centos1.qcow2

创建成功

安装完成

查看虚拟机

[root@cloud ~]# virsh list

Id Name State

----------------------------------------------------

3 centos7.0-2 running

KVM命令行创建虚拟机

创建磁盘

[root@cloud kvm]# qemu-img create -f qcow2 /kvm/os1.qcow2 20g

Formatting '/kvm/os1.qcow2', fmt=qcow2 size=21474836480 cluster_size=65536 lazy_refcounts=off refcount_bits=16

[root@cloud kvm]# ls

os1.qcow2

### 之后,通过图形化创建虚拟机的时候可以选择刚才手工创建的存储磁盘 centos701.qcow2

通过命令行创建虚拟机

### 其实就是把前面图形化点击的步骤转换成了命令行操作。

[root@cloud kvm]# virt-install \

> --name centos702 \

> --memory 2048 \

> --vcpus 1 \

> --disk path=/kvm/os1.qcow2 \

> --location /data/CentOS-7-x86_64-DVD-2009.iso \

> --network network=default \

> --noautoconsole

Starting install...

Retrieving file vmlinuz... | 6.5 MB 00:00:00

Retrieving file initrd.img... | 53 MB 00:00:00

Domain installation still in progress. You can reconnect to

the console to complete the installation process.

### 创建成功

[root@cloud kvm]# virsh list

Id Name State

----------------------------------------------------

3 centos7.0-2 running

4 centos702 running

手动安装虚拟机

KVM命令行创建虚拟机-kickstart全自动安装

注意:CentOS 8 版本是没有 kickstart 工具的,可以使用 CentOS 7 版本生成配置文件给 8 版本使用。

使用Centos7生成cfg文件

yum install -y system-config-kickstart.noarch --安装工具

system-config-kickstart --启动工具,注意禁用udev命名规则 net.ifnames=0 biosdevname=0

进行配置,最后导出 xxx.cfg 文件

yum install -y httpd --安装apache

systemctl start httpd --启动apache服务,注意关闭防火墙

将工具生成好的配置文件保存。

### 关闭防火墙

[root@cloud html]# systemctl stop firewalld.service ### 临时关闭

[root@cloud html]# systemctl disable firewalld.service ### 禁止启用

Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.

Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

[root@cloud ~]# yum install -y httpd ### 安装httpd

[root@cloud ~]# systemctl start httpd ### 开启服务

[root@cloud ~]# cd /var/www/html/ ### 开启服务后,会自动生成目录 /var/www/html/

[root@cloud html]# mv /data/ks01.cfg . ### 将centos7通过工具生成的cfg文件放到html目录下

[root@cloud html]# ls

ks01.cfg

### 使用虚拟机 ip + 目录文件 直接访问

# 例如 http://192.168.129.141/ks01.cfg

使用Centos8自动安装

### 创建磁盘

[root@cloud html]# qemu-img create -f qcow2 /kvm/centos703.qcow2 20g

Formatting '/kvm/centos703.qcow2', fmt=qcow2 size=21474836480 cluster_size=65536 lazy_refcounts=off refcount_bits=16

[root@cloud html]# ls /kvm/

centos703.qcow2 os1.qcow2

### 如果有错误,会在安装过程中卡住

[root@cloud ~]# virt-install \

> --name centos703 \ ### 虚拟机名称

> --memory 2048 \ ### 内存

> --vcpus 1 \ ### cpu

> --disk path=/kvm/centos703.qcow2 \ ### 磁盘

> --location /data/CentOS-7-x86_64-DVD-2009.iso \ ### 镜像

> --network network=default \ ### 网络

> --noautoconsole \

> -x ks=http://192.168.129.141/ks/ks01.cfg ### 也可以使用本地文件 ks=/data/ks01.cfg

Starting install...

Retrieving file vmlinuz... | 6.5 MB 00:00:00

Retrieving file initrd.img... | 53 MB 00:00:00

Domain installation still in progress. You can reconnect to

the console to complete the installation process.

### 使用本地文件,二选其一即可

[root@cloud ~]# virt-install --name centos703 --memory 2048 --vcpus 1 --disk path=/kvm/centos703.qcow2 --location /data/CentOS-7-x86_64-DVD-2009.iso --network network=default --noautoconsole -x ks=/data/ks01.cfg

#### 之后即可使用图形化界面进行查看自动化安装

有个问题?虽然是通过命令行可以进行全自动安装,但是因为有图形化界面,所以便于观察虚拟机的具体信息。如果没有图形化界面呢?安装过程及安装完成后根本不知道虚拟机的ip地址,也不知道进行到哪一步了,这时候怎么办?

在kickstart文件中添加 console=ttyS0

bootloader --append="net.ifnames=0 biosdevname=0 console=ttyS0" --location=mbr

并通过 virsh console xxx 方式连接到虚拟机里面,相当于插上了一根console线。

### 添加 console=ttyS0

[root@cloud ~]# vim /data/ks01.cfg

...

# System timezone

timezone Asia/Shanghai

# System bootloader configuration

# bootloader --append="net.ifnames=0 biosdevname=0" --location=mbr

bootloader --append="net.ifnames=0 biosdevname=0 console=ttyS0" --location=mbr

# Clear the Master Boot Record

zerombr

....

[root@cloud ~]# qemu-img create -f qcow2 /kvm/os333.qcow2 20g

[root@cloud ~]# virt-install --name centos705 --memory 2048 --vcpus 1 --disk path=/kvm/os333.qcow2 --location /data/CentOS-7-x86_64-DVD-2009.iso --network network=default --noautoconsole -x ks=/data/ks01.cfg

Starting install...

Retrieving file vmlinuz... | 6.5 MB 00:00:00

Retrieving file initrd.img... | 53 MB 00:00:00

Domain installation still in progress. You can reconnect to

the console to complete the installation process.

[root@cloud ~]# virsh console centos705

Connected to domain centos705

Escape character is ^]

CentOS Linux 7 (Core)

Kernel 3.10.0-957.el7.x86_64 on an x86_64

localhost login: root

Password:

### ctrl + ] 退出

如果安装文件中没有加入,也可在后续虚拟机中加入

[root localhost ]# cd /etc/def auu lt/

[root localhost default]# ls

grub nss useradd

[root localhost default]# vi grub a

GRUB TIMEOUT=5

GRUB DISTRIBUTOR="S(sed 's, release .*5, ,g'’/etc/system-re lease )"

GRUB DEFAULT-saved

GRUB DISABLE SUBMENU=true

GRUB_ TERMINAL OUTPUT="'conso le'

# GRUB CMDL INE L INUX= crashkerne l=auto rd . lum. lu=centos/root rd. lum. lu=centos/swap rhgb quiet"

### 加入到此处 console=ttyS0

GRUB CMDL INE L INUX= crashkerne l=auto rd . lum. lu=centos/root rd. lum. lu=centos/swap rhgb quiet console=ttyS0"

GRUB_ DISABLE RECOUERY="'true"

[root localhost default]# grub2-mkconfig -o /boot/grub2/grub.cfg

[root localhost default]# reboot

测试

[root@cloud ~]# virsh console centos7.0

Connected to domain centos7.0

Escape character is ^]

CentOS Linux 7 (Core)

Kernel 3.10.0-1160.el7.x86_64 on an x86_64

localhost login: root

Password:

Last login: Sat Aug 5 06:42:12 on tty1

[root@localhost ~]#

KVM基本命令总结

[root@cloud ~]# virsh --help 查看帮助

[root@cloud ~]# virsh list --all 列出所有虚拟机(包括正在运行的和关闭的)

[root@cloud ~]# virsh list 列出所有虚拟机(仅运行中的)

[root@cloud ~]# virsh start centos705 --启动虚拟机

[root@cloud ~]# virsh shutdown centos705 -- 关闭虚拟机

[root@cloud ~]# virsh reboot centos705 --重启虚拟机

### 如果虚拟机关不了,强制关闭,非正常关闭

[root@cloud ~]# virsh destroy centos705

### 清除配置

[root@cloud ~]# virsh undefine centos705

# 移除软件包

[root@localhost ~]# yum groupremove -y "Virtualization*"

[root@localhost ~]# rpm -qa | grep virtualization

[root@localhost ~]# systemctl list-units | grep virtualization

[root@localhost ~]# lsmod | grep virtualization

Intel 奔腾双核 T4200网友点评
摩飞酸奶机怎么样MR1009使用评测家电测评2025/06/06 12:08:19收藏