centos下安装KVM虚拟机

本文详细介绍如何在CentOS 6和CentOS 7上部署KVM虚拟化环境,包括检查CPU虚拟化支持、桥接网络配置、安装KVM及相关组件、解决常见问题等关键步骤。同时提供使用virt-manager管理虚拟机的方法,以及克隆、备份虚拟机的具体操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

适用centos6和centos7

一.前期准备

1.确定机器有VT

终端输入命令:

grep -E -o '(vmx|svm)' /proc/cpuinfo

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

2.确保BIOS里开启VT:

Intel(R) Virtualization Tech [Enabled] 
使用如下命令确定

lsmod | grep kvm 
如果无相关信息,手动加载下
modprobe kvm-intel

二.桥接网络

使用桥接网络,虚拟机即可与其他机器互相访问。

安装下支持根据

yum install bridge-utils

1.复制ifcfg-em1 为 ifcfg-br0,并将ifcfg-br0改为如下配置

TYPE=Bridge
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.1.116
NETMASK=255.255.255.0
GATEWAY=192.168.1.1

2.原网卡ifcfg-em1只保留如下配置,其他都注释掉:

NAME=em1
DEVICE=em1
ONBOOT=yes
BRIDGE=br0

3.重启网络

systemctl restart network

三.安装kvm

1.安装kvm

 yum -y install libcanberra-gtk2 qemu-kvm.x86_64 qemu-kvm-tools.x86_64    libvirt.x86_64 libvirt-cim.x86_64 libvirt-client.x86_64 libvirt-java.noarch  libvirt-python.x86_64 libiscsi device-mapper-libs  dbus-devel  virt-clone tunctl virt-manager libvirt libvirt-python python-virtinst

2.安装x-windows,使用图形界面管理虚拟机

yum groupinstall "X Window System"
yum install "@X Window System"

3.安装中文字符,解决界面乱码问题

 yum install dejavu-lgc-sans-fonts
 yum groupinstall "Fonts" -y

4.启动kvm

 centos7 下
 systemctl start libvirtd 
 systemctl enable libvirtd 

 centos6 下
 service libvirtd start
 chkconfig libvirtd  on

5.错误集锦:

couldn't connect to accessibility bus failed to connect to socket /tmp/dbus
解决方法:
export NO_AT_BRIDGE=1

virGetHostname:1957 : getaddrinfo failed for 'test': Name or service not known
解决方法:
vim /etc/hosts
添加hostname  test 的本地解析
192.168.1.116 test

四.使用

1.使用virt-manager管理虚拟机,可以完成克隆,安装,开启,关闭等大部分的动作
如是ssh命令登录服务器,需加上XC参数。
如是在windows环境下通过putty登录服务器,需打开x-windows,方法如下:

在http://sourceforge.net/projects/xming/下载Xming,并安装运行。
putty.exe ==> Connection/SSH/X11 ==> X11 forwarding/Enable打勾即可,X dispaly location可以空着

2.创建预分配文件

qemu-img create -f qcow2 -o preallocation=metadata /data/test.qcow2 80G

这里也可以使用存储池来做,方便使用,步骤参考如下:

定义存储池
virsh pool-define-as optimg --type dir --target /opt/kvm

构建
virsh pool-build optimg

查看
virsh pool-list --all

开启
virsh pool-start optimg

开机自动启动
virsh pool-autostart optimg

3.让虚拟机开机自动启动

virsh list --all  查看虚拟机名称及状态
virsh autostart +虚拟机名称

设置后可在/etc/libvirt/qemu/autostart下看到已设置自动启动KVM配置文件链接

4.在桥接网络下给虚拟机做NAT
有种情况是:服务器有两张网卡,一张外网,一张内网。当我们给kvm桥接的是内网时,虚拟机只能访问内网,无法访问外网。这时就可以利用iptables做NAT,让虚拟机也能访问外网。

首先开启转发

echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.conf
sysctl -p

配置防火墙

#虚拟机ip 192.168.1.120 公网ip 1.1.1.1 公网网卡em1
iptables -t nat -A POSTROUTING -s 192.168.1.120 -o em1 -j SNAT --to 1.1.1.1
iptables -A FORWARD -d 192.168.1.120 -j ACCEPT
iptables -A FORWARD -s 192.168.1.120 -j ACCEPT
#注意新增的iptables -A FORWARD两条链要在下面这条之上
#-A FORWARD -j REJECT --reject-with icmp-host-prohibited
#如不想单独配置每个虚拟机的ip,可把192.168.1.120改为网段192.168.1.0/24

#保存配置
service iptables save

虚拟机的网关指向桥接ip,配置完成后虚拟机即可上网

GATEWAY=192.168.1.116

5.克隆虚拟机的网卡问题
如果虚拟机是centos6.x的,克隆虚拟机后会有mac地址冲突的问题,导致克隆出来的虚拟机无法启动网卡.
centos7没有这个问题.
简单的处理步骤如下

删除/etc/udev/rules.d/70-persistent-net.rules这个文件
将ifcfg-eth0文件中的mac地址和UUID这两行内容注释掉
重启虚拟机,网卡恢复正常。
如果还是无法启动,查看新产生的/etc/udev/rules.d/70-persistent-net.rules内容,并将网卡的配置文件改成相应的内容

6.虚拟机备份问题
采用qcow2格式的虚拟机镜像,通过scp备份到其他机器时,假如文件变成预分配的大小.比如预分配一个200G的qcow2文件,实际使用20G,备份文件变成200G时,可尝试用rsync的方式避免这个问题

rsync --progress --sparse -avhze 'ssh -p12220' centos6.6-x86-1.qcow2 root@192.168.1.100:/data/backups/kvm/

建议用存储池来放镜像,另外格式还是建议使用qcow2。

7.kvm克隆问题
除了使用系统自带的virt-lone外,也可以通过cp镜像文件来实现,方法如下:

关闭虚拟机
复制镜像文件
#cp -av source.img new.img
复制模板配置文件为new.xml
#cd /etc/libvirtd/qemu
#cp -av source.xml  new.xml
修改如下选项
修改虚拟机的名称,如:<name>new</name>
修改disk位置:<source file='/data1/vmdisk/new.img'/> 
修改uuid编号 ,如:<uuid>de8d962a-6334-a652-f66b-4da87d852343</uuid>
修改mac地址,如:<mac address='52:54:00:11:12:1f'/>
重启libvirt
#service libvirtd restart

8.快照使用

virsh snapshot-create-as --domain xxx  xxx-snap1 --disk-only --atomic --quiesce

这里需要注意的是,如果用了快照,镜像文件会变大.

9 转换镜像格式

查看镜像文件信息 
qemu-img info /var/lib/libvirt/images/ATE1.img

转换镜像文件

关闭虚拟机,将raw转换为qcow2 
qemu-img convert -f raw -O qcow2 old.raw new.qcow2 
修改配置文件 
vim /etc/libvirt/qemu/old.xml 
将disk的路径和type改下 
重启libvirt服务 
service libvirtd restart

10 在终端进入虚拟机
有时候想在终端上直接进入虚拟机,可以使用virsh console 命令。

进入:
virsh console + 虚拟机名称

退出:
按右ctrl + ]

11 Unable to read from monitor: Connection reset by peer
有时候宿主机重启后,再去开虚拟机会提示如上错误信息,使用如下命令处理

virsh managedsave-remove domain

重置完成后,再启动虚拟机即可.

转载信息:

转载自:http://blog.csdn.net/u012375924/article/details/47663233
作者:小卡车7
<think>好的,我需要帮助用户在CentOS系统上安装KVM虚拟机。首先,我得确认用户的具体需求是什么。用户提到的是CentOS,但CentOS有不同的版本,比如CentOS 7和CentOS 8,安装步骤可能有所不同。不过根据提供的引用内容,引用[1]提到了如何在CentOS 7上安装KVM,而引用[2]则指出CentOS 5.4之前的版本需要从extras仓库安装。因此,用户可能使用的是较新的CentOS版本,比如CentOS 7,所以应该优先参考引用[1]的指南。 接下来,我需要整理安装步骤。通常,安装KVM的流程包括以下几个步骤:检查硬件虚拟化支持、安装必要的软件包、启动并启用libvirtd服务、配置网络桥接(可选)、验证安装等。根据引用[1],可能需要使用特定的命令来安装KVM和相关工具,比如qemu-kvm、libvirt以及virt-install等。此外,用户可能还需要安装图形管理工具,如virt-manager,方便管理虚拟机。 需要注意的是,不同版本的CentOS可能在软件包名称或仓库配置上存在差异。例如,CentOS 7的软件源可能和CentOS 8有所不同。因此,在步骤中需要明确说明针对哪个版本。根据引用[1]中的指南,应该适用于CentOS 7。另外,引用[2]提到CentOS 5.4之前的版本需要从extras仓库安装,但用户可能不太可能还在使用这么旧的版本,所以主要参考CentOS 7的步骤。 另外,关于网络配置部分,默认情况下KVM会使用NAT网络,但如果用户需要桥接网络以获得更好的性能或直接访问物理网络,可能需要额外配置桥接接口。这部分可能需要用户有一定的网络配置知识,但根据用户的需求,可以提供一个基本的桥接配置方法。 最后,验证安装是否成功可以通过运行virsh命令检查libvirtd服务状态,或者使用virt-manager图形界面来创建虚拟机。同时,用户可能需要了解如何下载ISO镜像并安装客户机操作系统,这部分也可以简要提及,或提供相关参考链接。 现在需要将这些步骤结构化,确保每个步骤清晰,命令准确,并且引用正确的来源。同时,注意用户可能需要的是逐步指南,所以每个步骤要详细但不过于复杂。此外,需要检查是否有其他依赖项或常见问题,比如SELinux或防火墙设置,是否需要调整,这些也可以在注意事项中提及。 总结下来,步骤可能包括: 1. 检查CPU虚拟化支持 2. 安装KVM及相关软件包 3. 启动并启用libvirtd服务 4. 配置网络桥接(可选) 5. 验证安装 6. 创建虚拟机(示例命令) 每个步骤都需要对应的命令和说明,确保用户能顺利执行。同时,根据引用[1]和引用[2]的内容,确保命令的正确性。例如,安装KVM软件包时,CentOS 7使用yum安装,而CentOS 8可能使用dnf,但用户问题中提到的是CentOS,所以应统一使用yum命令,或者在适当的时候注明版本差异。 此外,需要注意权限问题,用户可能需要加入libvirt组,或者使用sudo执行命令。这些细节也需要在步骤中说明,避免用户遇到权限错误。 最后,生成相关问题,可能涉及KVM的管理、网络配置优化、性能调优等,帮助用户进一步学习。</think>### 分步指南:在CentOS 7下安装KVM虚拟机 #### 1. **检查硬件虚拟化支持** - 在终端运行以下命令,验证CPU是否支持虚拟化: ```bash egrep -c '(vmx|svm)' /proc/cpuinfo ``` 若输出值大于`0`,表示支持虚拟化[^1]。 - 确保BIOS中已启用虚拟化技术(如Intel VT-x或AMD-V)。 #### 2. **安装KVM及相关软件包** - 更新系统并安装必要组件: ```bash sudo yum update -y sudo yum install -y qemu-kvm libvirt virt-install bridge-utils virt-manager ``` 此命令安装KVM核心组件、虚拟机管理工具(`virt-install`)及图形界面(`virt-manager`)[^2]。 #### 3. **启动并启用libvirtd服务** - 启动服务并设置开机自启: ```bash sudo systemctl start libvirtd sudo systemctl enable libvirtd ``` - 验证服务状态: ```bash sudo systemctl status libvirtd ``` #### 4. **配置网络桥接(可选)** - 默认使用NAT网络,若需桥接网络: 1. 创建桥接配置文件`ifcfg-br0`: ```bash sudo vi /etc/sysconfig/network-scripts/ifcfg-br0 ``` 添加以下内容(假设物理网卡为`eth0`): ```plaintext DEVICE=br0 TYPE=Bridge BOOTPROTO=dhcp ONBOOT=yes DELAY=0 ``` 2. 修改物理网卡配置`ifcfg-eth0`,移除IP配置并绑定到桥接: ```plaintext DEVICE=eth0 ONBOOT=yes BRIDGE=br0 ``` 3. 重启网络服务: ```bash sudo systemctl restart network ``` #### 5. **验证安装** - 运行以下命令检查KVM模块是否加载: ```bash lsmod | grep kvm ``` 若输出包含`kvm_intel`或`kvm_amd`,则加载成功。 - 使用`virt-manager`图形界面创建虚拟机(需图形环境支持)。 #### 6. **通过命令行创建虚拟机示例** - 下载ISO镜像(如CentOS 8)至`/path/to/iso`。 - 执行安装命令: ```bash sudo virt-install \ --name=centos8-vm \ --ram=2048 \ --vcpus=2 \ --disk path=/var/lib/libvirt/images/centos8-vm.qcow2,size=20 \ --cdrom=/path/to/CentOS-8-x86_64.iso \ --os-type=linux \ --network bridge=br0 \ --graphics vnc ``` 此命令创建一个2核CPU、2GB内存、20GB磁盘的虚拟机,并通过VNC连接安装系统。 #### **注意事项** - **权限问题**:普通用户需加入`libvirt`组才能管理虚拟机: ```bash sudo usermod -aG libvirt $USER ``` - **防火墙**:若启用防火墙,需放行相关流量: ```bash sudo firewall-cmd --add-service={http,https,ssh} --permanent sudo firewall-cmd --reload ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值