Linux KVM 安装使用手册

网友投稿 847 2022-05-28

安装

前期准备

安装虚拟机软件

配置网络桥接

使用 virt-install 工具安装 guest 系统

安装

前期准备

安装虚拟机软件

配置网络桥接

使用 virt-install 工具安装 guest 系统

虚拟机配置文件

libvirtd 配置文件

查看 virsh 管理 qemu 虚拟机的信息

使用

查看所有虚拟机状态

查看指定虚拟机状态

手动启动虚拟机

手动关闭虚拟机

直接通过主机配置文档启动主机

关机虚拟机

重启虚拟机

手动挂起/恢复虚拟机

断电关闭虚拟机

设置随宿主启动(开机启动)

取消开机启动

删除虚拟机

导出(备份)虚拟机配置文件

编辑虚拟机配置文件

查看虚拟机磁盘信息

查看指定虚拟机使用磁盘

Linux KVM 安装使用手册

虚拟机迁移宿主物理服务器

获取虚机网卡接口

获取网卡实时信息

显示虚拟机的信息

获取虚拟机的UUID

获取虚拟机的ID

23、显示虚拟机的运行状态

编辑虚拟机的配置文件

virsh console连接虚机

为虚拟机添加一块qcow2磁盘

修改虚拟机内存及CPU大小

快照管理

虚拟机克隆

从本地虚拟机直接克隆

通过复制配置文件和硬盘文件克隆

安装

前期准备

确定机器有 VT

不知道芯片的生产厂商则输入:

egrep '(vmx|svm)' /proc/cpuinfo

如果flags: 里有 vmx 或者 svm 就说明支持 VT;如果没有任何的输出,说明你的 cpu 不支持,将无法成功安装 KVM 虚拟机。

2. 确保BIOS里开启VT:

Intel(R) Virtualization Tech [Enabled]

如有必要,还需在 BIOS 中开启 VT

安装虚拟机软件

安装相关的软件包

yum search kvm #使用search查寻KVM的软件包 yum install #kvm的软件包

也可通过这两种方法来安装,在 ISO 镜像中的 rpm 包和 yum 来

安装 KVM 有两种方式:

通过 YUM 安装,在有 INTERNET 接入的地方可以使用,使用方法比较简单。

安装 KVM 和 virtinst(一个创建虚拟机的工 具),我们运行

yum install kvm kmod-kvm qemu libvirt python-virtinst

然后重新启动系统:

Reboot

通过 CentOS 自带光盘中的 RPM 包进行安装

安装 KVM 需要以下一些包:

kmod-kvm x86_64 83-164.el5_5.15 kvm x86_64 83-164.el5_5.15 libvirt i386 0.6.3-33.el5_5.1 libvirt x86_64 0.6.3-33.el5_5.1 python-virtinst noarch 0.400.3-9.el5 qemu x86_64 0.9.0-4 所需的依存包为: bridge-utils x86_64 1.1-2 celt051 x86_64 0.5.1.3-0.el5 e4fsprogs-libs i386 1.41.9-3.el5 e4fsprogs-libs x86_64 1.41.9-3.el5 etherboot-zroms-kvm x86_64 5.4.4-13.el5.centos iscsi-initiator-utils x86_64 6.2.0.871-0.16.el5 libvirt-python x86_64 0.6.3-33.el5_5.1 log4cpp x86_64 1.0-9.el5 qcairo x86_64 1.8.7.1-3.el5 qffmpeg-libs x86_64 0.4.9-0.16.20080908.el5_5 qpixman x86_64 0.13.3-4.el5 qspice-libs x86_64 0.3.0-54.el5_5.1 xen-libs i386 3.0.3-105.el5_5.5 xen-libs x86_64 3.0.3-105.el5_5.5 xz-libs i386 4.999.9-0.3.beta.20091007git.el5 xz-libs x86_64 4.999.9-0.3.beta.20091007git.el5

将其放在一个文件夹内,使用 rpm –ivh *.rpm 命令来进行安装。或者使用 rpm -i ( or --install) options file1.rpm file2.rpm... fileN.rpm 将每个 RPM 包列出进行安装。

验证 KVM 是否安装完成

使用下列命令检查 KVM 是否成功安装

virsh -c qemu:///system list

将会显示如下结果:

[root@server1 ~]# virsh -c qemu:///system list Id Name State

软件包安装完毕后,加载 kvm 模块

modprobe kvm

检查模块是否加载成功,执行如下命令:

lsmod |grep kvm

如果显示两行,说明模块正确加载:

kvm_intel 47790 0 kvm 300762 1 kvm_intel

如果只显示一行,请检查

cpu 是否支持 VT 技术

bios 中是否将 cpu 的 VT 开启

接下来配置桥接网卡,网上有现成的脚本可以使用,这个是我在之前测试convirt时发现的,实际上是convirt的环境配置工具。

先将工具包下载下来下了(安装kvm系统可以上网)

wget --no-cache http://www.convirture.com/downloads/convirture-tools/2.0.1/convirture-tools-2.0.1.tar.gz

然后解压软件包:

tar zxvf convirture-tools-2.0.1.tar.gz #(这个一定要放到root目录里才行) /root/convirture-tools/install/managed_server/scripts/convirt-tool --bridge setup

执行完上述命令后,会自动将桥接网卡配置好,跑桥接自动好。

启动服务

/etc/init.d/libvirt-guests start /etc/init.d/libvirtd start

到此,kvm 虚拟化环境就全部配置完毕了

libvirt:使用最多的KVM虚拟化管理工具和应用程序接口,即通过 libvirt 调用 KVM 创建虚拟机,libvirt 是 KVM 通用的访问 API,其不但能管理 KVM,还能管理 VMware、Xen、Hyper-V、virtualBox 等虚拟化方案。

virsh:是一个常用的管理 KVM 虚拟化的命令行工具,常用语管理运行在单个宿主机上的虚拟机,virsh是一个使用C语言编写调用 libvirt API 的虚拟化管理命令行工具。

virt-manager:一个虚拟化管理图形软件,其底层也是调用 libvirt API 来完成对虚拟机的操作,包括虚拟机的创建、删除、启动、停止以及一些简单的监控功能等。

配置网络桥接

进入目录 /etc/sysconfig/network-scripts,复制一份原有的 ifcfg-eth0 为 ifcfg-br0

cp ifcfg-eth0 ifcfg-br0

修改 ifcfg-br0,内容如下:

DEVICE="br0" BOOTPROTO=static ONBOOT="yes" TYPE="Bridge" IPADDR=192.168.31.60 GATEWAY=192.168.31.1 NETMASK=255.255.255.0 DEFROUTE=yes

IPADDR、GATEWAY、NETMASK 根据自己的实际情况修改。

修改 ifcfg-eth0, 内容如下:

DEVICE="eth0" BOOTPROTO=none NM_CONTROLLED="no" ONBOOT="yes" TYPE="Ethernet" BRIDGE="br0" HWADDR=F8:DB:88:FF:99:E3 DEFROUTE=yes IPV4_FAILURE_FATAL=yes NAME="System eth0"

重启网络服务即可。

/etc/init.d/network restart

如果出现问题,关闭 NetworkManager 后重试。

chkconfig NetworkManager off service NetworkManager stop

使用 virt-install 工具安装 guest 系统

创建硬盘映像文件

使用 qemu-img 命令创建

qemu-img create -f raw /home/kvm_data/centos7.82C8G.img 100G

或使用 dd 命令创建

dd bs=1M count=8096 if=/dev/zero of=/var/lib/libvirt/images/test.img

qemu-img 是创建是文件格式是稀疏文件,优点是速度超快,由于是稀疏文件,性能可能会比第二种略差,通过如下命令查看详情

qemu-img info /var/lib/libvirt/images/test.img

输出为:注意其中 disk size 为 0

image: test.img file format: raw virtual size: 8.0G (8589934592 bytes) disk size: 0

通过iso文件安装系统

界面安装:需要通过 vnc 连接上去。

virt-install --name=vserver1 --ram 4096 --vcpus=2 --disk path=/home/kvm_data/centos7.8.img,size=100 --accelerate --cdrom /home/software/CentOS-7-x86_64-DVD-2003.iso --graphics vnc,listen=0.0.0.0 --network bridge=br0 --force --autostart --connect qemu:///system

命令行安装:不需要 vnc 连接上去。

virt-install --name=vserver1 --memory=4096,maxmemory=6144 --vcpus=2,maxvcpus=4 --os-type=linux --os-variant=rhel7 --location=/home/software/CentOS-7-x86_64-DVD-2003.iso --disk path=/home/kvm_data/centos7.8.img,size=10 --bridge=virbr0 --graphics=none --console=pty,target_type=serial --extra-args="console=tty0 console=ttyS0"

虚拟机配置文件

libvirtd 配置文件

配置文件位置:

/etc/libvirt/libvirtd.conf

日志配置:

#将日志级别设置为 1(调试) log_level = 1 #指定日志输出文件名称 log_outputs="1:file:/var/log/libvirt/libvirtd.log"

注意 :libvirtd. 日志文件可能会飞速增长。 用户应配置 logrotate ,否则您的 /var 文件系统最后会装满内容。

以上的日志的输出级别为 debug 级别.这个级别的日志是最多的,一般只在开发以及测试的时候使用。而在生产运行环境中,日志的级别为 info,warn,error,fatal. 以下前面的数字为他们的 level.

1 debug 2 info 3 warn 4 error 5 fatal

重启 libvirtd 。虚拟机 Guest 操作系统正在运行时可重启 libvirtd。

/etc/init.d/libvirtd restart

如果在目录下还是没发现日志文件,那么你可能需要使用一下命令来运行 libvirtd.

libvirtd --daemon --listen --config /etc/libvirt/libvirtd.conf

查看 virsh 管理 qemu 虚拟机的信息

在使用 virsh 管理 qemu 的虚拟机时候,也是有日志的输出的.

具体的 log 在目录 /var/log/livirt/qemu/ 下面,具体的 log 文件名与虚拟机名字关联.

使用

查看所有虚拟机状态

[root@server1 ~]# virsh list --all Id Name State ---------------------------------------------------- - centos7.0 shut off - centos7.0-2 shut off [root@server1 ~]#

查看指定虚拟机状态

[root@server1 ~]# virsh domstate centos7.0 shut off [root@server1 ~]#

手动启动虚拟机

[root@server1 ~]# virsh start centos7.0 Domain centos7.0 started [root@server1 ~]# virsh domstate centos7.0 running [root@server1 ~]#

手动关闭虚拟机

[root@server1 ~]# virsh shutdown centos7.0 Domain centos7.0 is being shutdown [root@server1 ~]# virsh domstate centos7.0 shut off [root@server1 ~]#

直接通过主机配置文档启动主机

virsh create /etc/libvirt/qemu/node1.xml

关机虚拟机

virsh shutdown node1

重启虚拟机

virsh reboot node1

手动挂起/恢复虚拟机

[root@server1 ~]# virsh suspend centos7.0 Domain centos7.0 suspended [root@server1 ~]# virsh resume centos7.0 Domain centos7.0 resumed [root@server1 ~]# virsh domstate centos7.0 running [root@server1 ~]#

断电关闭虚拟机

[root@server1 ~]#virsh destroy centos7.0

设置随宿主启动(开机启动)

[root@server1 ~]#virsh autostart centos7.0

取消开机启动

[root@server1 ~]#virsh autostart --disable centos7.0

删除虚拟机

[root@server1 ~]#virsh undefine centos7.0

导出(备份)虚拟机配置文件

[root@server1 ~]#virsh dumpxml centos6 > /home/vpsbak/centos6bak.xml

编辑虚拟机配置文件

配置文件位置是 /etc/libvirt/qemu 下,可以用 vim 进行编辑,但是建议使用 KVM 提供的命令进行编辑:

[root@server1 ~]#virsh edit centos7.0

查看虚拟机磁盘信息

[root@server1 ~]#qemu-img info vm01.img image: vm01.img file format: qcow2 virtual size: 10G (10737418240 bytes) disk size: 3.3G cluster_size: 65536 Format specific information: compat: 0.10

查看指定虚拟机使用磁盘

[root@server1 ~]#virsh domblklist vm01 目标 源 ------------------------------------------------ vda /home/vps/vm01.img vdb /home/vps/data.img hda

虚拟机迁移宿主物理服务器

备份虚拟机配置文件

[root@kvm6 vps] virsh dumpxml centos6 > /home/vpsbak/centos6.xml

关机,迁移配置文件和磁盘文件,配置文件路径是 /etc/libvirt/qemu

[root@kvm6 vps] scp /home/vpsbak/centos6.xml root@192.168.0.3:/etc/libvirt/qemu/ [root@kvm6 vps] scp /home/vpsdata/vps/centos6.qcow2 root@192.168.0.3:/data/vpsdata/vps

激活虚拟机配置文件

[root@server1 ~]#virsh define /etc/libvirt/qemu/centos6.xml

获取虚机网卡接口

domiflist(domain)显示网卡接口:

$ virsh domiflist vm1 Interface Type Source Model MAC ------------------------------------------------------- vnet0 network default rtl8139 52:54:00:0e:cb:48

获取网卡实时信息

domifstat(demo vnet0) 显示网卡信息 :

$ virsh domifstat vm1 vnet0 vnet0 rx_bytes 51575 vnet0 rx_packets 863 vnet0 rx_errs 0 vnet0 rx_drop 0 vnet0 tx_bytes 4543 vnet0 tx_packets 44 vnet0 tx_errs 0 vnet0 tx_drop 0

显示虚拟机的信息

dominfo(demo)显示虚拟机的信息

$ virsh dominfo vm1 Id: 4 Name: vm1 UUID: b961bd90-6445-4f61-9f14-77dd8c407cfb OS Type: hvm State: running CPU(s): 1 CPU time: 97.1s Max memory: 524288 KiB Used memory: 524288 KiB Persistent: yes Autostart: disable Managed save: no Security model: apparmor Security DOI: 0 Security label: libvirt-b961bd90-6445-4f61-9f14-77dd8c407cfb (enforcing)

获取虚拟机的UUID

domuuid (demo)显示虚拟机的id

$ virsh domuuid vm1 b961bd90-6445-4f61-9f14-77dd8c407cfb

获取虚拟机的ID

domid(id or name ) 根据名字得到id或根据id得到名字

$ virsh domid vm1 4 $ virsh domname 4 generic

23、显示虚拟机的运行状态

domstate (demo) 显示虚拟机的状态

$ virsh domstate vm1 running

domcontrol(demo) 返回虚拟机的状态ok or error

$ virsh domcontrol vm1 ok

编辑虚拟机的配置文件

edit (demo) 编辑主机的配置文件,可调整内存、CPU等配置.

$ virsh edit generic generic b961bd90-6445-4f61-9f14-77dd8c407cfb 524288 524288 1 hvm ……

virsh console连接虚机

# 连接命令 virsh console vm1

需要在虚机上做一下配置

centos 7

grubby --update-kernel=ALL --args="console=ttyS0" reboot

centos 6

# 执行如下脚本 #/bin/sh GRUB=/etc/grub.conf BOOT_GRUB=/boot/grub/grub.conf echo "ttyS0" >> /etc/securetty sed -i '/\tkernel/{s/$/ console=ttyS0/g}' ${GRUB} sed -i '/\tkernel/{s/$/ console=ttyS0/g}' ${BOOT_GRUB} echo 'S0:12345:respawn:/sbin/agetty ttyS0 115200' >> /etc/inittab

ubuntu

systemctl disable systemd-networkd-wait-online systemctl enable serial-getty@ttyS0.service systemctl start serial-getty@ttyS0.service

为虚拟机添加一块qcow2磁盘

查看磁盘大小与磁盘格式

查看磁盘格式和磁盘文件位置:

$ virsh edit generic

查看硬盘格式信息

$ qemu-img info /var/lib/libvirt/images/generic.qcow2 file format: qcow2 virtual size: 20G (21474836480 bytes) disk size: 2.3G cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: true refcount bits: 16 corrupt: false

添加一块qcow2磁盘

$ qemu-img create -f qcow2 test01_add.qcow2 2G

将新增的磁盘文件添加到虚拟机

$ virsh edit generic 添加如下内容:

启动虚拟机,分区、格式化、挂载磁盘

修改虚拟机内存及CPU大小

$ virsh edit generic generic b961bd90-6445-4f61-9f14-77dd8c407cfb 524288 524288 1

快照管理

创建快照

$ virsh snapshot-create-as generic snap1

查看快照

$ virsh snapshot-list generic Name Creation Time State ------------------------------------------------------------ snap1 2018-05-23 14:17:40 +0800 running

恢复快照

$ virsh snapshot-revert generic snap1

显示快照信息

$ virsh snapshot-info generic snap1 Name: snap1 Domain: generic Current: yes State: running Location: internal Parent: - Children: 0 Descendants: 0 Metadata: yes

删除快照

$ virsh snapshot-delete generic snap1

虚拟机克隆

现有本地虚拟机需要先停止

查看本地虚拟机

$ virsh list –all Id Name State ---------------------------------------------------- - generic shut off

从generic克隆一个虚拟机vm1

执行克隆操作,使用磁盘文件vm1.img

$ virt-clone -o generic -n vm1 -f /data/image/vm1.img

启动虚拟机

$ virsh start vm1

启动后修改主机名、IP等

查看现有虚拟机

$ virsh list –all Id Name State ---------------------------------------------------- 8 vm1 running

这里将从vm1克隆另一个虚拟机vm2

导出vm1虚拟机配置文件

$ virsh dumpxml vm1 > vm2.xml ```bash 4. 查看vm1磁盘文件所在位置:

$ virsh edit vm1

vm2 fe1f692d-34d5-4e0c-ab36-ba84eb024ee5 …… ……

定义vm2配置文件

$ virsh define vm2.xml Domain vm2 defined from vm2.xml

此时会看到vm2虚拟机已经生成

$ virsh list –all Id Name State ---------------------------------------------------- - vm2 shut off

启动vm3,重新更改主机名、IP等。

KVM Linux 虚拟化

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:[华为云在线课程][Linux磁盘存储和文件系统][第二章磁盘分区][学习笔记]
下一篇:MongoDB 第2章 MongoDB体系结构
相关文章