CentOS6.5 安裝KVM虛擬機
vnc安裝
因為安裝系統(tǒng)還是需要圖形界面去進行相關操作的,所以我們先配置一個vncserver方便我們的后續(xù)操作。
- 檢查VNC服務狀態(tài)
rpm -qa | grep vnc
- 安裝
yum install vnc *vnc-server*
- 編輯配置文件
vim /etc/sysconfig/vncservers
VNCSERVERS=”1:root”
VNCSERVERARGS[1]=”-geometry 800x600”
- 設置VNCServer遠程連接密碼
vncpasswd
- 啟動vncserver服務
/etc/init.d/vncserver start
service vncserver restart
執(zhí)行完畢會在root宿主目錄下生成.vnc開頭的隱藏目錄,該目錄下面的文件就是root用戶的VNC桌面配置文件。
- 打開xstartup配置桌面
vim /root/.vnc/xstartup
將最后一行改為
gnome &
使用GNOME桌面
- 開啟防火墻VNCServer端口
vi /etc/sysconfig/iptables
/etc/init.d/iptables restart
添加
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5901 -j ACCEPT
PS: 置VNC服務開機啟動用下面的命令:
chkconfig vncserver on
安裝KVM
- 查看cpuinfo信息
cat /etc/redhat-release
grep -E "svm|vmx" /proc/cpuinfo
egrep '(vmx|svm)' /proc/cpuinfo
如果輸出的結果包含VMX,它是Intel處理器虛擬機技術標志:如果包含SVM,它是AMD處理器虛擬機技術的標志,如果你什么都沒有得到,那應你的系統(tǒng)并沒有支持虛擬化的處理,不能使用KVM,另處linux發(fā)行版本必須在64bit環(huán)境中才能使用KVM。
關閉SElinux
vi /etc/sysconfig/selinux
SELINUX=disabled
安裝kvm
yum install qemu-kvm qemu-kvm-tools virt-manager libvirt -y
yum -y install kvm python-virtinst libvirt bridge-utils virt-manager qemu-kvm-tools virt-viewer virt-v2v
kvm:linux內核的一個模塊,模塊不需要安裝,只需要加載
qemu:虛擬化軟件,可以虛擬不同的CPU,支持異構(x86的架構可以虛擬化出不是x86架構的)
qemu-kvm:用戶態(tài)管理kvm,網(wǎng)卡,聲卡,PCI設備等都是qemu來管理的
- 查看狀態(tài)
lsmod | grep kvm
查看內核中kvm的狀態(tài)
- 啟動libvirt
service libvirtd start
/etc/init.d/libvirtd restart
配置網(wǎng)絡橋接
- 禁用網(wǎng)絡管理器
chkconfig |grep NetworkManager
chkconfig NetworkManager off
service NetworkManager stop
和橋接有沖突,要關閉service
- 創(chuàng)建橋接設備及關聯(lián)網(wǎng)卡到橋接設備上
virsh iface-bridge eth0 br0
修改eth0為物理網(wǎng)口,br0為橋接網(wǎng)口配置文件
cat ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPV6INIT=no
ONBOOT=yes
IPADDR=192.168.1.66
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DELAY=0
cat ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
BRIDGE=br0
BOOTPROTO=none
IPV6INIT=no
ONBOOT=yes
這里配置成橋接方式,實際上本機的數(shù)據(jù)包發(fā)送是通過br0發(fā)送的,br0的TYPE是Bridge,其它的信息跟配置一個物理網(wǎng)卡一樣,本機的eth0通過橋接到br0(通過BRIDGE指定)進行通信,它根本不需要配置IP信息,實際上數(shù)據(jù)發(fā)送還是通過本機的物理網(wǎng)卡。
重啟網(wǎng)絡
service network restart
查看橋接網(wǎng)絡
brctl show
bridge name bridge id STP enabled interfaces
br0 8000.0021cc6b6f2c no eth0
virbr0 8000.525400ac7ebe yes virbr0-nic
接口eth0通過br0進行橋接。virbr0-nic通過virbr0進行橋接,這個是默認的設置,當使用NAT時使用。
- 修改 qemu.conf 配置
vi /etc/libvirt/qemu.conf
vnc_listen = "0.0.0.0"
user = "root"
group = "root"
dynamic_ownership = 0
重啟libvirtd服務
service libvirtd restart
新建用于存放虛擬機相關文件的目錄
mkdir /kvm/vm
一定要開放文件夾權限
創(chuàng)建虛擬機
virt-install --name centos --ram 1024 --vcpus=1 --disk path=/opt/vm/centos6.5-1.img,size=15 --network bridge=br0 --os-variant=rhel6 --cdrom /kvm/CentOS6.5_64.iso --vnclisten=10.xx.140.43 --vncport=5901 --vnc
virt-install --name=centos64 --ram 1024 --vcpus=1 --disk path=/var/lib/libvirt/images/centos64.img,size=10 --accelerate --cdrom /mnt/CentOS64.iso --graphics vnc,pass
virt-install --name CentOS-7.1-x86_64 --virt-type kvm --ram 1024 --cdrom=/opt/CentOS-7.1-x86 --cdrom=/opt/CentOS-7.1-x86_64.iso --disk path=/opt/CentOS-7.1-x86_64.raw --nehics vnc,listen=0.0.0.0 --notwork network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
-n(Name):指定虛擬機的名稱
--memory(--raw):指定內存大小
--cpu:指定cpu的核數(shù)(默認為1)
--cdrom:指定鏡像
--disk:指定磁盤路徑(即上文創(chuàng)建的虛擬磁盤)
--virt-type:指定虛擬機類型(kvm,qemu,xen)
--network:指定網(wǎng)絡類型
qemu-img info centos.img
可以使用vnc查看管理所創(chuàng)建虛擬機
第一個默認是ip:5901,第二個是5902
如果創(chuàng)建的虛擬機是靜態(tài)ip,且配置好后可以可以嘗試以下步驟來自檢:
chmod +w /etc/sysconfig/network-scripts/ifcfg-eth0
ifconfig eth0 10.xx.123.22/16 up
ping 10.xx.255.254
ping 10.xx.140.43
此時百度應該是ping不通的這里設置一下
vi /etc/resolv.conf
添加
nameserver 114.114.114.114
`route add default gw 10.xx.255.254'
這時候應該就OK了!
問題及解決方法
libvirt dead but subsys locked
按照大部分解決方案都沒有起作用后,嘗試重新安裝libvirt后可以正常工作。
所以建議先關閉selinux,然后再安裝libvirt服務。
- KVM中宿主機通過console連接客戶機出現(xiàn)
virsh console centos : Connected to domain vm01 Escape character is ^]
利用vnc或宿主機的桌面進入客戶機vm01中添加參數(shù)
2.1添加ttyS0的安全許可,允許root登錄:
echo "ttyS0" >> /etc/securetty
2.2 在/etc/grub.conf文件中為內核添加參數(shù):
console=ttyS0
注意:
console=ttyS0一定要放在kernel這行中(大約在第16行),不能單獨一行,即console=ttyS0是kernel的一個參數(shù),不是單獨的,如下(往右拉進度條,在最后):
kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=VolGroup/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=VolGroup/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet console=ttyS0
2.3 在/etc/inittab中添加agetty:
S0:12345:respawn:/sbin/agetty ttyS0 115200
2.4 重啟客戶機:
reboot
2.5對于centos 7
在虛機里運行
grubby --update-kernel=ALL --args="console=ttyS0"
reboot
即可
kvm基本使用操作:
生成kvm虛擬機:virt-install
查看在運行的虛擬機:virsh list
查看所有虛擬機:virsh list --all
查看kvm虛擬機配置文件:virsh dumpxml name
啟動kvm虛擬機:virsh start name
正常關機:virsh shutdown name
非正常關機(相當于物理機直接拔掉電源):virsh destroy name
刪除:virsh undefine name(徹底刪除,找不回來了,如果想找回來,需要備份/etc/libvirt/qemu的 xml文件)
根據(jù)配置文件定義虛擬機:virsh define file-name.xml
掛起,終止:virsh suspend name
恢復掛起狀態(tài):virsh resumed name
編輯kvm的xml文件,更改虛擬機配置
- 配置虛擬機的cpu
1.1 方法一:
更改cpu的最大值,當然熱添加的個數(shù)不能超過最大值
virsh edit CentOS-7.1-x86_64 <vcpu placement='auto' current="1">4</vcpu>
當前為1,自動擴容,最大為4
重啟虛擬機
virsh shutdown CentOS-7.1-x86_64
virsh start CentOS-7.1-x86_64
cpu的熱添加(cpu只支持熱添加,不支持熱減少)
virsh setvcpus CentOS-7.1-x86_64 2 --live
kvm版本較高,并不需要echo "1"到/sys/devices/system/cpu/cpu1/online 進行激活,自動可以激活。
cat /sys/devices/system/cpu/cpu1/online
1
1.2 方法二:
安裝的時候指定virt-install --vcpus 5 --vcpus 5,maxcpus=10,cpuset=1-4,6,8 --vcpus sockets=2,cores=4,thread=2
2.更改內存`o