kvm 是虛擬化技術的一個典型實現,功能非常強大,使用很方便。kvm 本身主要實現對 CPU 的虛擬化,內存和IO的虛擬化使用了開源軟件 qemu,qemu 是純軟件層面的虛擬化,其實就是個模擬器。kvm 要求 cpu 必須支持硬件虛擬化,可以通過 Linux 命令查看。
說到 kvm 必須提及 libvirt 程序集,它是用來管理 kvm 虛擬機的,當然其實也可以管理 xen 等其它虛擬化的虛擬機。libvirt 包括三部分:(1). libvirtd是後台服務程序;(2). libvirt 是管理虛擬機的 API 接口,可以通過 python c java 等語言來編寫程序管理虛擬機,比較典型的 virt-manager 就是使用 python 寫的可視化工具;(3). virsh 等命令行管理工具。
1. 實驗環境
操作系統:CentOS 6.4 x86_64 mini
宿主機:vmware workstation 虛擬機
2. 檢查宿主機處理器是否支持虛擬化
[root@kvm ~]# egrep -o 'vmx | svm' /proc/cpuinfo | wc -l
如果顯示數值是 0,則表示該 CPU 不支持虛擬化。
3. 配置或設置宿主機
CPU:2-4 core 開啟 cpu 虛擬化(bios 設置 或 vmware 設置)
內存:4-8 GB
硬盤:100 GB
4. 關閉 iptables 和 selinux
關閉 iptables 服務:
[root@kvm ~]# service iptables stop [root@kvm ~]# chkconfig iptables off
關閉 selinux:
[root@kvm ~]# setenforce 0 [root@kvm ~]# vi /etc/selinux/config SELINUX=disabled
1. 安裝 kvm 虛擬化相關軟件包
[root@kvm ~]# yum install -y kvm virt-* libvirt bridge-utils qemu-img
2. 查看 kvm 模塊是否加載到內核
[root@kvm ~]# lsmod | grep kvm_intel kvm_intel 53484 0 kvm 316506 1 kvm_intel
如果沒有加載,可以嘗試執行命令:modprobe kvm_intel ,不行的話,試試重啟宿主機。
3. 設置相關網絡
設置方式一:網橋模式。
[root@kvm ~]# cd /etc/sysconfig/network-scripts/ [root@kvm ~]# cp ifcfg-eth0 ifcfg-br0 [root@kvm ~]# vi ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes BOOTPROTO=none BRIDGE=br0 [root@kvm ~]# vi ifcfg-br0 DEVICE=br0 TYPE=Bridge ONBOOT=yes BOOTPROTO=static IPADDR=172.16.1.8 PREFIX=24 GATEWAY=172.16.1.1 DNS1=114.114.114.114 NAME=br0 # 重啟網絡 [root@kvm ~]# service network restart
設置方式二:NAT 模式。
暫 略。
4. 啟動 libvirtd 相關服務
[root@kvm ~]# /etc/init.d/libvirtd start [root@kvm ~]# /etc/init.d/messagebus restart
遇到錯誤:
[root@vip ~]# /etc/init.d/libvirtd start libvirtd: relocation error: libvirtd: ... version ... libdevmapper.so.1.02 [失敗]
解決:
[root@kvm ~]# yum upgrade device-mapper-libs
結果:
[root@kvm ~]# brctl show bridge name bridge id STP enabled interfaces br0 8000.000c29181c75 no eth0 virbr0 8000.525400c207c7 yes virbr0-nic
1. 創建虛擬機鏡像
關於虛擬機鏡像,有很多種類型:raw、qcow2、vmdk等,我們推薦使用 qcow2 格式的鏡像,因為 qcow2 格式的鏡像支持快照,使用的比較廣泛。在創建虛擬機之前需要手動去創建 qcow2 格式的鏡像磁盤文件,以供安裝虛擬機時使用。按照如下命令進行創建:
qemu-img create -f qcow2 -o preallocation=metadata /data/kvm/liwei01.qcow2 50G
2. 執行虛擬機的安裝
安裝方式一:通過網絡鏡像安裝,文本控制台,無vnc支持。
virt-install --name liwei01 --ram 1024 --vcpus 1 \ -f /data/kvm/liwei01.qcow2 --os-type linux \ --os-variant rhel6 --network bridge=br0 \ --graphics none --console pty,target_type=serial \ --location 'http://mirrors.163.com/centos/6.8/os/i386/' \ --extra-args 'console=ttyS0,115200n8 serial'
安裝方式二:通過網絡鏡像安裝,支持 vnc ,默認無文本控制台。
virt-install --name liwei01 --ram 1024 --vcpus 1 \ -f /data/kvm/liwei01.qcow2 --os-type linux \ --os-variant rhel6 --network bridge=br0 \ --graphics vnc,listen=0.0.0.0,port=5920 \ --location 'http://mirrors.163.com/centos/6.8/os/i386/'
安裝方式三:通過 iso 鏡像實現本地安裝,支持 vnc ,無文本控制台。
virt-install --name liwei01 --ram 1024 --vcpus 1 \ -f /data/kvm/liwei01.qcow2 --os-type linux \ --os-variant rhel6 --network bridge=br0 \ --cdrom CentOS-6.8-i386-minimal.iso \ --graphics vnc,listen=0.0.0.0,port=5920
安裝方式四:通過基礎鏡像模板快速安裝(拷貝)
創建鏡像文件:
[root@kvm ~]# qemu-img create -f qcow2 /data/kvm/liwei.qcow2 50G
# 通過 liwei.qcow2 安裝虛擬機 ... 安裝完畢.
[root@kvm ~]# cp /data/kvm/liwei.qcow2 /data/kvm/liwei01.qcow2
安裝命令:
# 以拷貝的 liwei01.qcow2 為模板進行安裝,安裝方式是從 liwei01.qcow2 鏡像啟動
[root@kvm ~]# virt-install --name liwei01 --ram 1024 --vcpus=1 \ --disk /data/kvm/liwei01.qcow2,format=qcow2,bus=virtio \ --network bridge=br0 --graphics vnc,listen=0.0.0.0,port=5904 \ --boot hd
說明:
本方式創建 img 鏡像的時候沒有指定 preallocation=metadata 選項,這樣存儲文件空間顯示比較小,方便拷貝,不加這個選項時,在 virt-install 時候需要在 --disk 選項後邊加上 bus=virtio,如果不加在安裝操作系統的時候似乎是識別不出來磁盤空間,會提示磁盤空間不足。采用這種方式安裝的速度非常快,其實就是從已經存在的操作系統鏡像啟動虛擬機並 define 一個新的虛擬機 liwei01,可以通過腳本快速創建出多個相同配置的虛擬機。當然可以在基礎鏡像中安裝公共的軟件包和設置相同的配置,這樣後續基於這個 img 安裝的虛擬機都有類似的配置,省去重復安裝軟件包的麻煩。
安裝方式五:通過基礎鏡像模板快速安裝(共享)
創建鏡像:
[root@kvm ~]# qemu-img create -f qcow2 -o preallocation=metadata /data/kvm/liwei.qcow2 50G
# 通過 liwei.qcow2 安裝虛擬機 ... 安裝完畢.
# 以 liwei.qcow2 鏡像為模板創建 liwei01.qcow2 鏡像
[root@kvm ~]# qemu-img create -f qcow2 -o backing_file=liwei.qcow2 liwei01.qcow2 10G
安裝命令:
[root@kvm ~]# virt-install --name liwei01 --ram 1024 --vcpus=1 \ --disk /data/kvm/liwei01.qcow2,format=qcow2,bus=virtio \ --network bridge=br0 --graphics vnc,listen=0.0.0.0,port=5904 \ --boot hd
說明:
在創建鏡像 liwei01.qcow2 指定了 backing_file=liwei.qcow2 選項,表示以 liwei.qcow2 為後端鏡像,以後對虛機 liwei01 的所有的寫操作都會記錄到 liwei01 鏡像,實際操作系統是在 liwei.qcow2 鏡像中,liwei.qcow2 鏡像是只讀的。也就是說後續以 liwei.qcow2 鏡像為後端的虛機都共享這個鏡像,而具體某個虛機的寫操作內容都要記錄到對應自己的鏡像文件中去。注意和方式4的區別。
3. 通過 vnc 或 文本控制台進行系統安裝
方式一:通過文本控制台進行管理安裝 virsh console liwei01 後續也能用此方式進行登陸管理虛擬機。
方式二:通過 vnc 客戶端進行連接, virsh vncdisplay liwei01 :20 客戶端通過url: 172.16.1.8:20 進行連接。
方式三:同方式二一樣,具體安裝過程與普通操作系統安裝過程一樣,過程略。
開機:virsh start vm
關機:virsh shutdown vm 如果不生效,需要在 vm 中執行:yum install -y acpid
強關:virsh destroy vm
刪除:virsh undefine vm
定義:virsh define vm
掛起:virsh suspend vm
恢復:virsh resume vm
虛擬機列表:virsh list
包含關機的虛機:virsh list --all
設置自動啟動:virsh autostart vm
關閉自動啟動:virsh autostart --disable vm
登陸虛機控制台:virsh console vm # 只對指定了console的虛機才管用,方式一
退出虛機控制台:ctrl + ]
將虛擬機 liwei01 克隆為虛擬機 liwei02
[root@kvm ~]# virt-clone --original liwei01 --name liwei02 --file /data/kvm/liwei02.qcow2
注意:克隆前需要先關閉虛擬機;克隆完畢,一般需要設置虛擬機的網絡。
1. 創建快照的條件
2. 創建快照
[root@kvm ~]# virsh snapshot-create liwei
3. 查看快照列表
[root@kvm ~]# virsh snapshot-list liwei # 可以通過 qemu-img 查看鏡像的快照信息 [root@kvm ~]# qemu-img info /data/kvm/liwei.img
4. 切換快照
[root@kvm ~]# virsh snapshot-revert liwei 1477285698
5. 查看當前快照
[root@kvm ~]# virsh snapshot-current liwei
6. 刪除快照
[root@kvm ~]# virsh snapshot-delete liwei 1477285698
7. 快照文件存儲位置
/var/lib/libvirt/qemu/snapshot
1. 虛擬機擴容磁盤,給現有磁盤增加容量
[root@kvm ~]# qemu-img resize /data/kvm/liwei.qcow2 +5G # 重啟虛擬機 reboot虛機不生效 [root@kvm ~]# virsh destroy liwei [root@kvm ~]# virsh start liwei
在虛擬機中使用 fdisk -l 查看,通過觀察block 塊 id 可以發現存儲空間多了,還必須將多余部分分區、格式化使用,默認使用 lvm 。
2. 給虛擬機添加磁盤
按照如下步驟:
注:可以嘗試不分區直接格式化,也可以嘗試使用 lvm 。
思路:首先得有鏡像文件(已有) + xml 配置文件
[root@kvm ~]# virsh dumpxml liwei > /etc/libvirt/qemu/liwei01.xml # 編輯配置文件,修改為適當的值 # 添加定義 virsh define /etc/libvirt/qemu/liwei01.xml virsh list --all #即可查到該虛擬機
如果要調整的 cpu 核數和內存超過安裝虛機時指定的最大值,則需要關閉虛機來修改最大值,動態調整的值不能超過設置最大值,擦,一般使用值和最大值都是保持一致,一起修改。所以在線動態修改沒什麼意義,推薦直接修改配置文件就 OK。
[root@kvm ~]# virsh edit liwei01 <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu>
重啟虛機 liwei01 就ok.
1. 添加虛擬機網卡
# 臨時命令生效 [root@kvm ~]# virsh attach-interface liwei --type bridge --source br0 # 修改虛機配置文件 [root@kvm ~]# virsh dumpxml liwei > /etc/libvirt/qemu/liwei.xml [root@kvm ~]# virsh define /etc/libvirt/qemu/liwei.xml
2. 刪除虛擬機網卡
[root@kvm ~]# virsh detach-interface liwei --type bridge --mac 52:54:00:14:86:cf
3. 指定網卡類型
暫 略。
幾個步驟:
1.關閉虛擬機 2.拷貝鏡像文件 3.拷貝配置文件 4.virsh define vm
待更新......
http://xxxxxx/Linuxjc/1181649.html TechArticle