之前写过一篇关于CentOS 5.8中安装KVM的博客,今天在CentOS6.5中操作了一遍,感觉彼此有一点小差别,现在把大致的步骤写一下:
首先操作系统为:CentOS 6.5最小化安装
之前需要:确认自身的CPU是否支持虚拟化
egrep 'vmx|svm' /proc/cpuinfo
并在主板的BIOS中设置CPU虚拟的功能开启
需要安装的组包为:Virtualization ,Virtualization Client
以及桌面环境的组包:X Window System,Desktop
yum -y groupinstall "X Window System" "Desktop"
如果采用命令行安装的话,可以忽略这一步
yum -y groupinstall "Virtualization" "Virtualization Client" yum -y install libvirt service libvirtd start #启动服务 chkconfig libvirtd on #设置开机启动
检查KVM模块是否成功载入
lsmod | grep kvm kvm kvm_intel #(此行没有显示是因为CMOS中没开启虚拟化,或者CPU不支持)
查看KVM是否成功安装:
[root@localhost ~]# virsh -c qemu:///system list Id Name State ----------------------------------
安装网卡桥接的软件包:
yum -y install bridge-utils tunctl
修改网卡配置:
在/etc/sysconfig/network-scripts/路径下:
cp ifcfg-eth0 ifcfg-eth0.bak cp ifcfg-eth0 ifcfg-br0
修改ifcfg-br0文件
#cat ifcfg-br0 DEVICE=br0 TYPE=Bridge BOOTPROTO=static IPADDR=192.168.0.251 NETMASK=255.255.255.0 GATEWAY=192.168.0.1 HWADDR=74:D4:35:20:68:51 ONBOOT=yes #cat ifcfg-eth0 DEVICE=eth0 ONBOOT=yes BRIDGE=br0 BOOTPROTO=none
然后重启网络:
#service network restart
通过ifconfig命令检查br0是否成功启用
使用virt-install安装guest (无桌面环境)
当你的CentOS没有桌面环境时,可以使用virt-install命令安装,如: 执行完以上命令,如果没有错误的话,就会打开虚拟系统安装界面。
#virt-install \ --name=v1 --ram=512 --vcpus=1 --cdrom=/media/CentOS_6.2_final.iso --os-type=rhel6 --disk /var/lib/libvirt/imgages/v1.img,size=8,bus=virtio,cache=writeback --network bridge=br0,model=virtio
下面对上面的命令进行解读
--name 给虚拟机起个名字
--ram 分配给虚拟机的内存,单位MB
--vcpus 分配给虚拟机的cpu个数
--cdrom 指定安装文件的全路径
--disk 指定虚拟机img文件路径,如果虚拟机使用lvm分区,这里就指向到lvm的分区就行
size 虚拟机文件大小,单位GB
bus 虚拟机磁盘使用的总线类型,为了使虚拟机达到好的性能,这里使用virtio
cache 虚拟机磁盘的cache类型
--network bridge 指定桥接网卡
model 网卡模式,这里也是使用性能更好的virtio
--graphics 图形参数
主机的克隆:
virt-clone -o vm_231 -n vm_232 -f /data/vm_232.img
选项:
-o 指定模板
-n 指定克隆的新机的名称
-f 指定克隆机的虚拟磁盘存放的路径
解决virsh console vm_231无法连接进主机的情况
1、打开虚拟机;
2、ssh进该虚拟机,需改下列文件
修改 /boot/grub/menu.lst 在 kernel 行最后添加 console=ttyS0,115200
修改 /etc/inittab 添加 co:2345:respawn:/sbin/mingetty ttyS0 115200 vt100
修改 /etc/securetty 到最后添加 ttyS0
重启就好了,可以看见从进入内核引导后的全部过程。
原理
修改 menu.1st 让内核吧输出输出至 ttyS0
在inittab里加一个ttyS0在系统启动时会生成一个ttyS0来接收内核的数据
还有在 securetty里面要有不然也出不来。