1. 程式人生 > >KVM虛擬機配置筆記

KVM虛擬機配置筆記

mct all mdk cdrom XML 創建 sysconf ns2 machine

KVM 全稱是 Kernel-Based Virtual Machine。也就是說 KVM 是基於 Linux 內核實現的,KVM有一個內核模塊叫 kvm.ko,只用於管理虛擬 CPU 和內存。

在 x86 平臺上最熱門運用最廣泛的虛擬化方案莫過於 KVM 了。其中雲計算框架 OpenStack 對 KVM 支持得也最好,我們的教程也理所當然選擇 KVM 作為 實驗環境的 Hypervisor。

◆安裝KVM虛擬機◆

1.配置宿主機為網橋

cd /etc/sysconfig/network-scripts

cp -a ifcfg-eno16777728 ifcfg-br0

vim ifcfg-br0

TYPE=Bridge
DEVICE=br0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.13
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=114.114.114.114

reboot

2.宿主機的軟件安裝和配置

yum install -y qemu-kvm libvirt virt-install bridge-utils

3.安裝完畢之後,檢查模塊是否已經加載

lsmod | grep kvm

4.執行下列命令開啟虛擬機

systemctl start libvirtd.service 
systemctl enable libvirtd.service


◆KVM的創建及管理◆

創建並實現基本管理虛擬機

virt-install -n lyshark -r 256 --vcpus 1 --disk /tmp/lyshark.img,format=qcow2,size=5 --network bridge=br0 --os-type=linux --os-variant=rhel7.0 --cdrom /tmp/rhel-server-7.0_x86_64-dvd.iso --vnc --vncport=5910 --vnclisten=0.0.0.0

-------------------------------------------------------------------------------------------------
[參數說明]

--n                 #指定虛擬機名稱
--r                 #指定虛擬機內存,單位MB
--disk                  #指定存儲設備及其屬性 size:新建磁盤映像的大小單位為GB;磁盤映像格式,如raw、qcow2、vmdk
--os-type               #操作系統類型,如linux、unix或windows等;
--os-variant=               #某類型操作系統的變體,如rhel5、fedora8等; 
--vcpus=                #VCPU個數及相關配置
--cpu=                  #CPU模式及特性,如coreduo等;可以使用qemu-kvm -cpu ?來獲取支持的CPU模式;

--os-variant=freebsd8
--os-variant=win7
--os-variant=win7 --disk path=/var/lib/libvirt/iso/virtio-win.iso,device=cdrom
--os-variant=win2k8
--os-variant=win2k8 --disk path=/var/lib/libvirt/iso/virtio-win.iso,device=cdrom
--os-variant=rhel7

-------------------------------------------------------------------------------------------------

virsh list --all        #列出所有的虛擬機

virsh dominfo           #顯示虛擬機信息

yum install virt-top -y
virt-top            #顯示虛擬機內存和cpu的使用情況

virt-df             #顯示虛擬機分區信息


virsh destroy           #強制關閉

virsh undefine          #刪除虛擬機

virsh start         #啟動

virsh shutdown          #關閉虛擬機


virsh autostart         #設置虛擬機自啟動
virsh autostart --disable   #關閉虛擬機自啟動

virsh console           #通過控制窗口登錄虛擬機


virsh attach-disk kvm-1 /dev/sdb vbd --driver qemu --mode shareable     #給虛擬機添加硬盤
-------------------------------------------------------------------------------------------------

更改內存

# 1. 查看虛擬機當前內存

[[email protected] ~]# virsh dominfo kvm-1 | grep memory
Max memory:     4194304 KiB
Used memory:    4194304 KiB

# 2、動態設置內存為512MB,內存減少

virsh setmem kvm-1 524288
# 註意單位必須是KB

# 3、查看內存變化

# virsh dominfo kvm-1 | grep memory
Max memory: 14194304 KiB
Used memory: 524288 kiB

# 4、內存增加

virsh shutdown kvm-1
virsh edit kvm-1  # 直接更改memory
virsh create /etc/libvirt/demu/kvm-1/xml
# 之後操作1,2,3步驟增加內存

更改CPU

virsh shutdown kvm-1
virsh edit kvm-1
#  <vcpu>2</vcpu>  # 4 > 2
virsh create /etc/libvirt/demu/kvm-1/xml

磁盤擴容

1. Create a 10-GB non-sparse file:
# dd if=/dev/zero of=/vm-images/vm1-add.img bs=1M count=10240
2. Shutdown the VM:
 # virsh shutdown vm1
3. Add an extra entry for ‘disk’ in the VM's XML file in /etc/libvirt/qemu. You can look copy & paste
the entry for your mail storage device and just change the target and address tags. For example:
 # virsh edit vm1
 <disk type='file' device='disk'>
 <driver name='qemu' type='raw' cache='none' io='threads'/>
 <source file='/vm-images/vm1.img'/>
 <target dev='vda' bus='virtio'/>
 <address type='pci' domain='0x0000' bus='0x00' slot='0x04'
function='0x0'/>
 </disk>
 Add:
 <disk type='file' device='disk'>
 <driver name='qemu' type='raw' cache='none' io='threads'/>
 <source file='/vm-images/vm1-add.img'/>
 <target dev='vdb' bus='virtio'/>
 <address type='pci' domain='0x0000' bus='0x00' slot='0x06'
function='0x0'/>
 </disk>
 # 這裏建議使用上面的添加硬盤的方式添加

虛擬機的克隆

將一個虛擬機克隆完畢之後,就可以以此為模板進行克隆,其它虛擬機就不必在一一進行創建,安裝操作系統等操作。虛擬機克隆操作的代碼如下:

#!/usr/bin/env bash
set -eux
set -o pipefail

vm_path="/var/lib/libvirt/images/vm_os"
for (( i = 0; i <= 9; i ++ ))
do
    vm_dir=$vm_path/vm$i
    if [ ! -d $vm_dir ]; then
        mkdir -p $vm_dir
    fi
    virt-clone --connect qemu:///system --original vm00 --name vm$i --file $vm_dir/vm"$i"system.img
done

虛擬機磁盤掛載

虛擬機掛載磁盤的命令是virsh attach-disk,卸載磁盤的命令是virsh detach-disk,同樣,為了批量操作方便,我們寫個腳本來進行處理。

#!/usr/bin/env bash
set -eux
set -o pipefail

vm_path="/var/lib/libvirt/images/vm_disk"
for (( i = 0; i <= 9; i ++ ))
do
    vm_dir=$vm_path/vm$i
    if [ ! -d $vm_dir ]; then
        mkdir -p $vm_dir
    fi
    fallocate -l 15G $vm_dir/disk_15G.img
    virsh attach-disk vm$i --source $vm_dir/disk_15G.img  --target sdb --persistent
#virsh detach-disk --domain vm$i --target sdb --persistent
done

KVM虛擬機配置筆記