系统为centos 6.4 64位 最小化安装  服务器为dell R720,所以网卡为em0,在vmware作为练习安装学习,同样可以,命令行不是为了显的牛B,而是不用考虑桌面兼容性和其他原因的影响

一、查看是否支持虚拟化

vmware开启方式虚拟化方式如下图,虚拟机下面可以用VNC连接安装系统,如果服务器在idc机房,因为和公司网络不在一个网段,所以vnc是连不上去的,另外kvm和桌面系统兼容性不清楚,有发生过卡死的情况,所以还是命令行,下面是一步一步的 操作过程,按着步骤肯定可以!

确定服务器是否支持虚拟化,如果没有查到,在bios里面开启

CentOS命令行安装配置KVM详细教程_ 安装 KVM


关闭selinux  SELINUX=disabled

vmx属于inter处理器,svm属于amd处理器

egrep 'vmx|svm' /proc/cpuinfo

flags       :fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflushdts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lmconstant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperfpni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pciddca sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx lahf_lm ida aratxsaveopt pln pts dts tpr_shadow vnmi flexpriority ept vpid


二、安装kvm包

yum  groupinstall "Development Tools"
yum  groupinstall "Virtualization" "Virtualization Client" "Virtualization Platform"

virtualization //提供虚拟机的环境,主要包含qumu-kvm

virtualization-client//管理和安装虚拟机实例的客户端,主要有python-virtinst,virt-manager,virt-viewer

virtualization-platform//提供访问和控制虚拟客户端的接口,主要有libvirt,libvirt-client

安装完成后重启系统


三、检查安装后是否加载模块

lsmod|grep kvm

kvm_intel              53484  12

kvm                   316506  1 kvm_intel

查看kvm正常运行

/etc/init.d/libvirtd start
chkconfig libvirtd on
  
virsh -c qemu:///system list  
 Id    Name                           State
service libvirtd status 
libvirtd (pid  2944) is running...
 
chkconfig --list libvirtd
libvirtd        0:off   1:off   2:off   3:on    4:on    5:on    6:off


四、配置网卡为桥接

这里只是配置一个网卡,配置多个网卡方法一样,现在em1可以理解为交换机,其他guest都链接上面

yum install bridge-utils.x86_64 acpid -y

brctl show
bridge name	bridge id		STP enabled	interfaces
virbr0		8000.525400fe8dd9	yes		virbr0-nic

cp /etc/sysconfig/network-scripts/ifcfg-em1 /etc/sysconfig/network-scripts/ifcfg-br0

cat /etc/sysconfig/network-scripts/ifcfg-em1
 
DEVICE=em1
TYPE=Ethernet
UUID=****
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
BRIDGE=br0
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System em1"
HWADDR=****
cat /etc/sysconfig/network-scripts/ifcfg-br0 
 
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
IPADDR=****
PREFIX=**
GATEWAY=****
DNS1=114.114.114.114
DOMAIN=114.114.114.114
DEFROUTE=yes
NAME="System br0"
service network restart
service acpid start  #电源管理

#查看网络连接

brctl show 
bridge name bridge id        STP enabled    interfaces
br0         8000.74867af0c7a0   no          em1
virbr0      8000.525400cbfade   yes         virbr0-nic


检查ip转发是否开启

cat /etc/sysctl.conf |grep ip_forward
net.ipv4.ip_forward = 1
如果没有开启,则
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
 
/sbin/sysctl -p


两块网卡配置道理一样,

# service network restart           #重启时候要等半分钟
Shutting down interface em1:  bridge br0 does not exist!
                                                           [  OK  ]
Shutting down interface em2:                               [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface em1:                                 [  OK  ]
Bringing up interface em2:                                 [  OK  ]
Bringing up interface br0:                                 [  OK  ]
Bringing up interface br1:                                 [  OK  ]
# brctl show
bridge name	bridge id		STP enabled	interfaces
br0	        8000.74867af0db38	no		em1
							vnet0
br1	        8000.74867af0db39	no		em2
							vnet1
virbr0		8000.525400fe8dd9	yes		virbr0-nic


五、配置自己的安装镜像(此步骤可略过)

为什么要自己配置源呢,因为至少现在centos6.5以下版本的源在sohu,163都被删了,问题是能找到自己系统版本的源

自己搭系统的iso服务器(http)

下载CentOS-6.5-x86_64-minimal.iso

mkdir /data
cd /data
wget http://mirrors.sohu.com/centos/6.5/isos/x86_64/CentOS-6.5-x86_64-minimal.iso 
mkdir /mnt/cdrom


mount -o loop -t iso9660 /data/CentOS-6.5-x86_64-minimal.iso /mnt/cdrom
cp -r /mnt/cdrom /root/centos

修改这个文件,需要强制保存 wq!

vim /root/centos/.treeinfo   
[p_w_picpaths-x86_64]
initrd = p_w_picpaths/pxeboot/initrd.img
kernel = isolinux/vmlinuz
[p_w_picpaths-x86_64]
kernel = isolinux/vmlinuz
initrd = isolinux/initrd.img


安装配置httpd

yum install httpd 

#只需要修改httpd.conf的292、318两行,welcome.conf 第8行

vim /etc/httpd/conf/httpd.conf
 
#DocumentRoot "/var/www/html"
DocumentRoot "/mnt/cdrom"  
<Directory />
   Options indexes FollowSymLinks
   AllowOverride none
</Directory>
<Directory "/mnt/cdrom ">        

 
vim /etc/httpd/conf.d/welcome.conf
 
 <LocationMatch "^/+$">
   Options +Indexes
   ErrorDocument 403 /error/noindex.html
</LocationMatch>

service httpd start

开启iptables80端口,在浏览器输入ip即可查看,下面用URL安装,需要打开iptables的80端口,并且ip_forward要开启,

CentOS命令行安装配置KVM详细教程_  命令_02

 

六、安装kvm guest0

mkdir /var/kvm/

按照第五步安装方式:

virt-install -v -n bbotte -r 4096 --vcpus=4 --location=/root/centos --nographics --virt-type=kvm --disk path=/var/kvm/bbotte.img,size=80,sparse -w bridge:br0 --extra-args='console=tty0  console=ttyS0,115200n8' --connect qemu:///system

kvm名称:bbotte

内存:4G(如果宿主机内存小的话,guest就小点,要不会出错误提醒)

cpu:4颗

虚拟磁盘路径:/var/kvm/bbotte.img

磁盘大小:80G


没有做第五步操作,用搜狐源安装方式:

virt-install -v -n bbotte -r 4096 --vcpus=4 -l http://mirrors.sohu.com/centos/6.5/os/x86_64/  --nographics --virt-type=kvm --disk path=/var/kvm/bbotte.img,size=80,sparse -w bridge:br0 --extra-args='console=tty0 console=ttyS0,115200n8' --connect qemu:///system

下面即开始命令行下安装

1,选择语言

CentOS命令行安装配置KVM详细教程_  命令_03

2,选择安装方式,这里是自己配置的http,所以选URL

CentOS命令行安装配置KVM详细教程_ 安装 KVM_04

3,为主机配置ip地址

CentOS命令行安装配置KVM详细教程_  命令_05

CentOS命令行安装配置KVM详细教程_centos_06

4,输入安装的url,这里是http://ip,Tab到ok即可

CentOS命令行安装配置KVM详细教程_ 安装 KVM_07

5,在这里如果启用VNC的话安装会很方便,虚拟机做实验建议启用,连接IDC的服务器还要选命令行,因为ssh连接机房的服务器,网卡还没启动,启动vnc后会连不上现在的guest0

  windows 64位 vnc下载链接为 http://pan.baidu.com/s/1GSxHW 

CentOS命令行安装配置KVM详细教程_  命令_08

6,检测磁盘,现在为80G

CentOS命令行安装配置KVM详细教程_centos_09

7,设置时区,把utc取消,这里选 Asia/Chongqing

CentOS命令行安装配置KVM详细教程_centos_10

8,格式化硬盘Use entire dirve, 格式化后4分钟就安装成功

CentOS命令行安装配置KVM详细教程_centos_11

CentOS命令行安装配置KVM详细教程_ 安装 KVM_12

9,安装后重启

CentOS命令行安装配置KVM详细教程_ 安装 KVM_13

10,登录系统

CentOS命令行安装配置KVM详细教程_centos_14

11,查看磁盘分区,系统自动分区的结果

CentOS命令行安装配置KVM详细教程_centos_15

七、配置内网和外网

设置两块网卡,一块为外网,一块为内网(如果本来就是两个网口,两根网线,已经设置了两个网卡,下面就不用自己设置了,直接编辑网卡配置文件即可)

cp/etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth1

编辑eth1网卡

cat /etc/sysconfig/network-scripts/ifcfg-eth0
 
DEVICE="eth0"
BOOTPROTO="static"
BROADCAST="****"
GATEWAY="****"
IPADDR="****"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
NETMASK="255.255.255.240"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
NAME="System eth0"
HWADDR=****
cat /etc/sysconfig/network-scripts/ifcfg-eth1
 
DEVICE="eth1"
BOOTPROTO="static"
IPADDR="192.168.*.*"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
NETMASK="255.255.255.0"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
NAME="System eth1"
rm /etc/udev/rules.d/70-persistent-net.rules


配置后关机

shutdown -h now


把宿主机的httpd关闭

service httpd stop


virsh edit bbotte


复制eth0内容,把MAC,slot两个地方做修改,MAC地址只需修改不同即可,一般修改最后一位

<interface type='bridge'>
      <mac address='****'/>
      <sourcebridge='br0'/>
      <modeltype='virtio'/>
      <address type='pci'domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </interface>


启动kvm的guest

virsh start bbotte    #启动guest0
virsh console bbotte  #连接gues0
virsh destroy bbotte  #暂停guest bbotte
virsh undefine bbotte #删除guest bbotte
virsh list            #查看正在运行的guest
virsh edit bbotte     #编辑guest bbotte的配置文件,可以调整cpu数量,内存大小,网卡

进入guest后,设置一下网络

vim /etc/resolv
nameserver 114.114.114.114


此时,可以ping通外网和内网

shutdown -h now


怎样退出guest

exit  #退出登陆

会弹出一个仍然让你登陆的页面,同时按 Ctrl+ ] 即可

八、克隆一个guest虚拟机

原版克隆一个用于备份

virt-clone --connect qemu:///system --original=bbotte --name=bbotte2 --file=/var/kvm/bbotte2.img


virt-clone --connect qemu:///system --original=bbotte --name=bbotte2 --file=/var/kvm/bbotte2.qcow2 (如果在克隆前已经创建了虚拟磁盘,会有一个提示,后面需加参数覆盖)


再启动guest0

virsh start bbotte

到此,KVM guest0安装完毕


附:KVM的快照

因为创建的.img文件比较稳定,不容易出错,所以上面是.img的格式。不过需要做快照的话还得qcow2,下面是qcow2的guest创建命令

qemu-img create -f qcow2  -o size=100G,preallocation=metadata /var/kvm/bbotte.qcow2
qemu-img info -f qcow2 /var/kvm/bbotte.qcow2

 

virt-install -v -n bbotte -r 2048 --vcpus=4 --location=/root/centos --nographics --virt-type=kvm --disk  path=/var/kvm/bbotte.qcow2,device=disk,format=qcow2,bus=virtio,cache=writeback,size=100 -w bridge:br0 --extra-args='console=tty0 console=ttyS0,115200n8' --connect qemu:///system


两块网卡为下:

virt-install -v -n bbotte -r 4096 --vcpus=4 --location=/root/centos --nographics --virt-type=kvm --disk  path=/var/kvm/bbotte.qcow2,device=disk,format=qcow2,bus=virtio,cache=writeback,size=100 -w bridge:br0 -w bridge:br1 --extra-args='console=tty0 console=ttyS0,115200n8' --connect qemu:///system


kvm名称:bbotte

内存:2G

cpu:4颗

磁盘文件名称:bbotte.qcow2

虚拟磁盘路径:/var/kvm/bbotte.qcow2

磁盘大小:100G


安装完毕,查看安装的guest磁盘文件信息

# qemu-img info /var/kvm/test.qcow2 
p_w_picpath: /var/kvm/test.qcow2
file format: qcow2                       #磁盘格式
virtual size: 150G (161061273600 bytes)  #guest系统磁盘看到的是150G
disk size: 16G                           #实际占用磁盘空间为16G
cluster_size: 65536


guest在启动的时候就可以做快照,不过要注意的是快照的时候是暂时的休克,ping不通外网的

# virsh list
 Id    Name                           State
----------------------------------------------------
 30    test                          running
# virsh snapshot-create test
Domain snapshot 1414228727 created


此时快照已经生成,

# qemu-img info /var/kvm/test.qcow2 
p_w_picpath: /var/kvm/test.qcow2
file format: qcow2                       #磁盘格式
virtual size: 150G (161061273600 bytes)  #guest系统磁盘看到的是150G
disk size: 16G                           #实际占用磁盘空间为16G
cluster_size: 65536
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         1414228727             786M 2014-10-25 17:18:47  677:36:07.930


或者用这个命令查看快照

qemu-img snapshot -l /var/kvm/test.qcow2

快照的配置文件默认在 /var/lib/libvirt/qemu/snapshot/test/1414228727.xml

如果需要恢复快照,那么把guest停止,再恢复

virsh snapshot-revert test 1414228727(快照的TAG)

完事需要把时间同步为准确的时间

ntpdate 0.asia.pool.ntp.org ;hwclock -w