Kvm安裝及本地Yum源搭建
0.查看Linux運行級別
[root@kvm ~]# runlevel
1.更換yum源
http://mirrors.aliyun.com/
1.1.選擇centos、epel鏡像
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
1.2.修改默認yum源
[root@kvm ~]# cd /etc/yum.repos.d/
[root@kvm yum.repos.d]# vi yum.sh
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
[root@kvm yum.repos.d]# sh yum.sh
1.3.清除yum緩存
[root@kvm yum.repos.d]# yum clean all
1.4.生成緩存
[root@kvm yum.repos.d]# yum makecache
2.安裝kvm命令
[root@kvm ~]# yum install qemu-kvm
qemu/模擬器,具備模擬加速功能
libvirt:操作和管理KVM虛機的虛擬化 API,使用 C 語言編寫,可以
由 Python,Ruby, Perl, PHP, Java 等語言調用。可以操作包括 KVM,
vmware,XEN,Hyper-v, LXC 等 Hypervisor。
• Virsh:基於 libvirt 的 命令行工具 (CLI)
• Virt-Manager:基於 libvirt 的 GUI 工具
3.安裝虛擬化管理工具
[root@kvm ~]# yum -y install virt-manager libvirt libvirt-python python-virtinst bridge-utils
yum -y install httpd(安裝Apache服務器) createrepo(創建私有云窗口的軟件) reposync(創建同步的軟件)
[root@kvm ~]# yum -y install httpd createrepo reposync
[root@kvm ~]# netstat -natp
3.1.查看yum源中倉庫
[root@kvm html]# yum repolist
3.2.搭建本地yum源
3.2.1搭建本地yum源會節約大量的出口帶寬
[root@kvm yum.repos.d]# yum -y install yum-utils
yum-utils中有個命令是同步命令reposync 用來同步遠程的yum repository
3.2.2參考reposync的幫助,直接把想要同步的yum源直接定位到希望下載的某個目錄,
[root@kvm yum.repos.d]# reposync --help
-d 來刪除本地老舊, yum 源已經不存的安裝包
3.2.3開始自動更新 yum 源到本地文件夾
[root@kvm html]# reposync --repoid=base
[root@kvm html]# reposync --repoid=epel
3.2.4啓動Apache服務
[root@kvm ~]# service httpd start
3.3.訪問本地YUM源
http://192.168.230.88/base/
3.4.創建本地Yum源的倉庫
reposync自動同步想要的yum源到指定的路徑,因爲每次同步後,內容可能有所改變,所以需要重新執行createrepo命令重新創建YUM倉庫
[root@kvm ~]# createrepo --help
[root@kvm ~]# cretaerepo --update /var/www/html/base/
3.5.使用本地Yum源
[root@kvm yum.repos.d]# vi /etc/yum.repos.d/CentOS-Base.repo
http://192.168.230.88/base/
4.Kvm內核模塊
kvm嵌入到了Linux內核中去
[root@kvm ~]# lsmod | grep kvm
如果kvm沒有嵌入到Linux內核中
可以通過命令強制嵌入到Linux內核中
[root@kvm ~]# modprobe kvm
[root@kvm ~]# modprobe kvm-intel
5.在kvm中創建虛擬機
5.1.創建虛擬機磁盤
[root@kvm kvmtest]# qemu-img create -f qcow2 /kvmtest/centos-6.5.qcow2 10G
5.2.上傳centos鏡像文件
5.3.yum源刪除衝突軟件
[root@kvm kvmtest]# yum -y install virt-install
[root@kvm kvmtest]# yum -y remove virt-install
5.4.創建虛擬機
[root@kvm kvmtest]# virt-install --virt-type kvm --name centos-6.6 --ram 1024 \
> --vcpus 1 \
> --cdrom=/kvmtest/CentOS-6.6-x86_64-minimal.iso \
> --disk /kvmtest/centos-6.6.qcow2,format=qcow2 \
> --network network=default \
> --graphics vnc,listen=0.0.0.0 --noautoconsole \
> --os-type=linux --os-variant=rhel6
ERROR Failed to connect socket to '/var/run/libvirt/libvirt-sock': No such file or directory
出現錯誤
5.4.1.出錯是因爲libvirted服務沒有啓動
[root@kvm kvmtest]# service libvirtd start
Starting libvirtd daemon: [ OK ]
[root@kvm kvmtest]# service libvirtd status
libvirtd (pid 1951) is running...
[root@kvm kvmtest]# chkconfig libvirtd on
[root@kvm kvmtest]# virt-install --virt-type kvm --name centos-6.5 --ram 1024 \
> --vcpus 1 \
> --cdrom=/kvmtest/CentOS-6.5-x86_64-minimal.iso \
> --disk /kvmtest/centos-6.5.qcow2,format=qcow2 \
> --network network=default \
> --graphics vnc,listen=0.0.0.0 --noautoconsole \
> --os-type=linux --os-variant=rhel6
virt-install --virt-type kvm --name centos-6.5 --ram 1024 \
--vcpus 1 \
--cdrom=/kvmtest/CentOS-6.5-x86_64-minimal.iso \
--disk /kvmtest/centos-6.5.qcow2,format=qcow2 \
--network network=default \
--graphics vnc,listen=0.0.0.0 --noautoconsole \
--os-type=linux --os-variant=rhel6
5.5.打開遠程網絡連接軟件
5.6.進入虛擬機交互終端
[root@kvm kvmtest]# virsh
5.6.1.啓動虛擬機
virsh # start centos-6.5
virsh # list --all
發現多了一個橋接設備
[root@kvm kvmtest]# brctl show
5.6.2.進入虛擬機交互終端
發現無法用鍵盤操作的原因是中文輸入法對這個工具產生了干擾
5.6.3.編寫kvm虛擬機的配置文件
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
[root@localhost ~]# service network restart
[root@localhost ~]# ifconfig
5.6.4.virsh交互終端命令
• virsh list # 顯示本地活動虛擬機
• virsh start openSuse # 啓動名字爲ubuntu的非活動虛擬機
• virsh create ubuntu.xml # 創建虛擬機(創建後,虛擬機立即執行,成爲活
動主機)
• virsh suspend openSuse # 暫停虛擬機
• virsh resume ubuntu # 啓動暫停的虛擬機
• virsh shutdown ubuntu # 正常關閉虛擬機
• virsh destroy ubuntu # 強制關閉虛擬機
• virsh dominfo openSuse # 顯示虛擬機的基本信息
• virsh dumpxml openSuse # 顯示虛擬機的當前配置文件
• virsh setmem ubuntu 51200 # 給不活動虛擬機設置內存大小
• virsh setvcpus ubuntu 4 # 給不活動虛擬機設置cpu個數
• virsh edit ubuntu # 編輯配置文件(一般用在剛定義完VM)
[root@kvm kvmtest]# cd /etc/libvirt/
[root@kvm libvirt]# ll
total 48
-rw-r--r-- 1 root root 518 May 11 2016 libvirt.conf
-rw-r--r-- 1 root root 12963 May 11 2016 libvirtd.conf
-rw-r--r-- 1 root root 1176 May 11 2016 lxc.conf
drwx------ 2 root root 4096 Jan 14 09:38 nwfilter
drwx------ 3 root root 4096 Jan 14 16:55 qemu
-rw-r--r-- 1 root root 14998 May 11 2016 qemu.conf
virsh # vcpuinfo 2
virsh # edit 2
6.CPU虛擬化
一個 KVM 虛機即一個 Linux qemu-kvm 進程,與其他Linux 進程一樣被Linux 進程調度器調度。
• KVM虛機包括虛擬內存、虛擬CPU和虛機I/O設備,其中,內存和CPU的虛擬化由KVM內核模塊負責實現,I/O 設備的虛擬化由QEMU負責實現。
• KVM戶機系統的內存是qumu-kvm進程的地址空間的一部分。
• KVM虛機的vCPU作爲線程運行在qemu-kvm進程的上下文中。
7.CPU硬件情況
[root@kvm libvirt]# numactl --hardware
8.管理VM(重啓,關閉)
要通過xshell對kvm虛擬機進行管理的話
要在虛擬機上安裝acpid
[root@localhost ~]# yum install acpid
[root@localhost ~]# service acpid start
[root@localhost ~]# chkconfig acpid on
virsh # shutdown 2
virsh # list
Id Name State
----------------------------------------------------
virsh # list --all
Id Name State
----------------------------------------------------
- centos-6.5 shut off
virsh # vcpuinfo centos-6.5
[root@kvm ~]# iptables -t nat -S