Linux KVM 安装使用手册

网友投稿 886 2022-05-28

安装

前期准备

安装虚拟机软件

配置网络桥接

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

安装

前期准备

安装虚拟机软件

配置网络桥接

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

虚拟机配置文件

libvirtd 配置文件

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

使用

查看所有虚拟机状态

查看指定虚拟机状态

手动启动虚拟机

手动关闭虚拟机

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

关机虚拟机

重启虚拟机

手动挂起/恢复虚拟机

断电关闭虚拟机

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

取消开机启动

删除虚拟机

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

编辑虚拟机配置文件

查看虚拟机磁盘信息

查看指定虚拟机使用磁盘

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

获取虚机网卡接口

获取网卡实时信息

显示虚拟机的信息

获取虚拟机的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

Linux KVM 安装使用手册

查看硬盘格式信息

$ 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体系结构
相关文章