檢查硬件是否支持虛擬化linux
[root@localhost ~]# grep --color "vmx|svm" /proc/cpuinfocentos
安裝環境網絡
[root@localhost ~]# yum install -y kvm virt-* libvirt bridge-utils qemu-imgdom
檢測是否已經加載KVM模塊ssh
[root@localhost ~]# lsmod | grep --color kvmide
或ui
[root@localhost ~]# modprobe kvm_intelspa
配置虛擬網卡
操作系統
[root@localhost ~]# cd /etc/sysconfig/network-scripts/3d
[root@localhost network-scripts]# cp ifcfg-eth0 ifcfg-br0
[root@localhost network-scripts]# vi ifcfg-eth0
DEVICE=eth0
HWADDR=00:0C:29:EE:D0:8F
TYPE=Ethernet
UUID=7d11a486-8c8b-4d1b-9135-a3257fb54b7e
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
BRIDGE=br0
[root@localhost network-scripts]# vi ifcfg-br0
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
[root@localhost network-scripts]# service network restart
建立虛擬機1(網絡)
[root@localhost ~]# /etc/init.d/libvirtd restart ; /etc/init.d/messagebus restart
執行命令,若是結果相似,說明網絡配置正確
[root@localhost ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000c2955a70a no eth0
virbr0 8000.525400391409 yes virbr0-nic
執行命令建立qcow2格式的虛擬磁盤文件,不然虛擬機沒法生成快照
[root@localhost ~]# qemu-img create -f qcow2 -o preallocation=metadata /data/vmCentOS1.qcow2 30G
建立虛擬機並安裝操做系統
[root@localhost ~]# virt-install \
--name vmCentOS6.7_1 \
--ram 512 \
--disk path=/data/vmCentOS1.qcow2,format=qcow2,size=30,bus=virtio \
--vcpus 1 \
--os-type linux \
--os-variant rhel6 \
--network bridge=br0 \
--graphics none \
--console pty,target_type=serial \
--location 'http://mirrors.163.com/centos/6.7/os/i386/' \
--extra-args 'console=ttyS0,115200n8 serial'
#--ram 內存
#--disk path 虛擬磁盤保存路徑
#--vcpus CPU數
#--os-type 系統類型
#--os-variant 系統版本
#--nerwork bridge 虛擬網卡
#--location 源
#--graphics nano 文本格式安裝界面
如下看圖操做
圖1、選擇安裝語言
圖3、手動設置IP,此IP必須能夠聯網
圖4、
圖5、
圖6、歡迎界面
圖7、
圖8、選擇Re-initiallize all
圖9、選擇時區 Asia/Shanghai
圖10、設置root密碼
圖11、選擇 Replace existing Linux system -- OK
圖12、選擇 Write changes to disk
圖十3、
圖十4、
圖十5、安裝完成
建立虛擬機2(本地NFS)
掛載光驅或ISO文件
[root@localhost ~]# mount /dev/cdrom /mnt/
宿主配置NFS
[root@localhost ~]# yum install -y nfs-utils rpcbind
[root@localhost ~]# vi /etc/exports
/mnt 192.168.1.0/24(ro)
[root@localhost ~]# /etc/init.d/rpcbind restart ; /etc/init.d/nfs restart
[root@localhost ~]# showmount -e 192.168.1.2
Export list for 192.168.1.2:
/mnt 192.168.1.0/24
執行命令建立qcow2格式的虛擬磁盤文件,不然虛擬機沒法生成快照
[root@localhost ~]# qemu-img create -f qcow2 -o \
preallocation=metadata /data/vmCentOS2.qcow2 30G
建立虛擬機並安裝操做系統
[root@localhost ~]# virt-install \
--name vmCentOS6.7_2 \
--ram 512 \
--disk path=/data/vmCentOS2.qcow2,format=qcow2,size=30,bus=virtio \
--vcpus 1 \
--os-type linux \
--os-variant rhel6 \
--network bridge=br0 \
--graphics none \
--console pty,target_type=serial \
--location '/mnt/' \
--extra-args 'console=ttyS0,115200n8 serial'
如下按圖操做
圖1、選擇安裝語言
圖2、選擇安裝媒體 NFS directory
圖3、選擇手動配置IP
圖4、設置IP
圖6、填寫NFS服務端信息
NFS server name: (服務端IP)
CentOS directory: /mnt/p_w_picpaths/install.img
NFS mount options (optional): ro
圖7、
圖8、
圖9、
圖10、
圖11、
圖12、
圖十3、
圖十4、
virsh經常使用操做
查看幫助信息
[root@localhost ~]# virsh --help
查看虛擬機列表,全部的
[root@localhost ~]# virsh list --all
查看虛擬機列表,正在運行的
[root@localhost ~]# virsh list
遠程(pts/0)進入虛擬機
[root@localhost ~]# ssh 192.168.1.2
遠程退出虛擬機
ctrl + d
或
[root@localhost ~]# logout
本地(tty/0)進入虛擬機
[root@localhost ~]# virsh console vmCentOS6.5_1
本地退出虛擬機
ctrl + ]
虛擬機電源管理,首先虛擬機系統要安裝acpid,如下命令要在虛擬機系統內執行
[root@localhost ~]# yum install -y acpid
[root@localhost ~]# /etc/init.d/acpid start
關閉虛擬機
[root@localhost ~]# virsh shutdown vmCentOS6.5_1
從虛擬機列表刪除虛擬機,用該方法刪除虛擬機後,若是要從新添加該虛擬機到列表,能夠用virsh start方法(另外一種關閉虛擬機的方法)
[root@localhost ~]# virsh destroy vmCentOS6.5_1
啓動虛擬機
[root@localhost ~]# virsh start vmCentOS6.5_1
啓動虛擬機並進入控制檯
[root@localhost ~]# virsh start vmCentOS6.5_1 --console
掛起虛擬機
[root@localhost ~]# virsh suspend vmCentOS6.5_1
從掛起狀態中恢復虛擬機
[root@localhost ~]# virsh resume vmCentOS6.5_1
設置虛擬機隨系統自動啓動
[root@localhost ~]# virsh autostart vmCentOS6.5_1
取消虛擬機隨系統自動啓動
[root@localhost ~]# virsh autostart --disable vmCentOS6.5_1
完全刪除虛擬機
[root@localhost ~]# virsh destroy vmCentOS6.5_1
[root@localhost ~]# virsh undefine vmCentOS6.5_1
實際是刪除/etc/libvirt/qemu/vmCentOS6.5_1.xml
查看虛擬機對應的虛擬磁盤文件
[root@localhost ~]# virsh domblklist vmCentOS6.5_1
[root@localhost ~]# rm -f /data/vmCentOS1.qcow2
若是/data/vmCentOS1.qcow2不被刪除,未來還能夠恢復該虛擬機
克隆虛擬機,前提是源虛擬機已經關閉
[root@localhost ~]# virt-clone --original vmCentOS6.5_1 --name vmCentOS6.5_3 \
--file /data/vmCentOS6.5_3.qcow2
編輯虛擬機文件,實際編輯的是/etc/libvirt/qemu/vmCentOS6.5_1.xml
[root@localhost ~]# virsh edit /data/vmCentOS6.5_1.qcow2
轉換虛擬磁盤格式,例如原格式爲raw要轉換爲qcow2,注意是大寫字母O,不是數字0
[root@localhost ~]# qemu-img convert -f raw -O qcow2 \
/data/vmCentOS6.5_1.img /data/vmCentOS6.5_1.qcow2
查看虛擬磁盤文件格式
[root@localhost ~]# qemu-img info /data/vmCentOS6.5_1.qcow2 | grep "file format"
虛擬機快照
查看快照信息,Snapshot list 如下爲快照信息
[root@localhost ~]# qemu-img info /data/vmCentOS6.5_1.qcow2
或
[root@localhost ~]# virsh snapshot-list vmCentOS6.5_1
建立快照
[root@localhost ~]# virsh snapshot-create vmCentOS6.5_1
恢復快照,最後一串數字爲快照ID,查看快照信息的時候能夠查看到
[root@localhost ~]# virsh snapshot-revert vmCentOS6.5_1 1441043346
查看當前使用的是哪個快照,通常是在第二行
[root@localhost ~]# virsh snapshot-current vmCentOS6.5_1
刪除快照
[root@localhost ~]# virsh snapshot-delete vmCentOS6.5_1 1441043346
快照文件保存目錄,vmCentOS6.5_1對應每一臺虛擬機
[root@localhost ~]# ls /var/lib/libvirt/qemu/snapshot/vmCentOS6.5_1/
虛擬磁盤擴容
查看虛擬機磁盤大小
[root@localhost ~]# qemu-img info /data/vmCentOS6.5_1.qcow2 | grep "virtual size"
給虛擬磁盤+5G
[root@localhost ~]# qemu-img resize /data/vmCentOS6.5_1.qcow2 +5G
重啓虛擬機,讓擴容後的磁盤生效(必須用如下方法重啓)
[root@localhost ~]# virsh destroy vmCentOS6.5_1 ; virsh start vmCentOS6.5_1
把新增的5G虛擬磁盤分區爲/dev/vda4,進入虛擬機,從新啓動
[root@localhost ~]# virsh console vmCentOS6.5_1
如下操做在虛擬機內執行
[root@localhost ~]# reboot
重啓後,執行
[root@localhost ~]# pvcreate /dev/vda4
查看有哪些物理卷
[root@localhost ~]# vgs
查看有哪些磁盤能夠加入現有物理卷
[root@localhost ~]# pvs
查看有哪些邏輯卷
[root@localhost ~]# lvs
把/dev/vda4加入VolGroup
[root@localhost ~]# vgextend VolGroup /dev/vda4
[root@localhost ~]# lvextend -l +100%FREE /dev/VolGroup/lv_root
[root@localhost ~]# resize2fs /dev/VolGroup/lv_root
至此,虛擬機磁盤擴容完畢
虛擬機添加虛擬磁盤
[root@localhost ~]# qemu-img create -f qcow2 /data/vmCentOS6.5_1_1.qcow2 5G
[root@localhost ~]# virsh destroy vmCentOS6.5_1
編輯虛擬機文件,修改以下
1、增長如下一整塊內容,修改<source file='/data/vmCentOS6.5_1_1.qcow2'/>爲上面添加的虛擬磁盤
2、刪除行<address type='pci' doman='0x0000' bus='0x00' slot='0x05' function='0x0/>
3、<target dev='vdb' bus='virtio'/>行,dev='vda'改成dev='vdb'
[root@localhost ~]# virsh edit vmCentOS6.5_1
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none'/>
<source file='/data/vmCentOS6.5_1_1.qcow2'/>
<target dev='vdb' bus='virtio'/>
</disk>
[root@localhost ~]# virsh start vmCentOS6.5_1
至此,虛擬機添加虛擬磁盤完畢
利用vmCentOS6.5_2恢復vmCentOS6.5_1,假定虛擬磁盤文件存在
[root@localhost ~]# virsh dumpxml vmCentOS6.5_2 > /etc/libvirt/qemu/vmCentOS6.5_1.xml
[root@localhost ~]# vi /etc/libvirt/qemu/vmCentOS6.5_1.xml
對應虛擬機名字
<name>vmCentOS6.5_1</name>
UUID不能和原來的相同
<uuid>c239c60e-e916-bb16-87e1-e686a5e2ade9</uuid>
對應虛擬磁盤格式 type='qcow2' 或 type='raw'
<driver name='qemu' type='qcow2' cache='none'/>
指定虛擬磁盤文件路徑
<source file='/data/vmCentOS6.5_1.qcow2'/>
[root@localhost ~]# virsh define vmCentOS6.5_1
或
[root@localhost ~]# virsh define /data/vmCentOS6.5_1.qcow2
至此,虛擬機恢復完畢
調整CPU,內存
[root@localhost ~]# virsh edit vmCentOS6.5_1
內存上限,配置內存必須小於這個值,能夠改
<memory unit='KiB'>824288</memory>
內存相關
<currentMemory unit='KiB'>524288</currentMemory>
CPU相關
<vcpu placement='static'>2</vcpu>
[root@localhost ~]# virsh destroy vmCentOS6.5_1
[root@localhost ~]# virsh start vmCentOS6.5_1
查看虛擬機網卡
[root@localhost ~]# virsh domiflist vmCentOS6.5_1
臨時添加網卡,虛擬機正在運行
[root@localhost ~]# virsh attach-interface vmCentOS6.5_1 --type bridge --source br0
永久添加網卡,虛擬機關機
[root@localhost ~]# virsh edit vmCentOS6.5_1
<interface type='bridge'>
<mac address='54:52:00:92:56:25'/>
<source bridge='br0'/>
<model type='virtio'/>
</interface>
[root@localhost ~]# virsh start vmCentOS6.5_1
修改MAC地址對應的網卡名字
[root@localhost ~]# vi /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:92:56:11f", ATTR{type}="1", KERNEL=="eth*", NAME="eth0"
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
HWADDR=52:54:00:92:56:11f
[root@localhost ~]# /etc/init.d/network restart
虛擬機遷移(本地遷移)
[root@localhost ~]# virsh dumpxml vmCentOS6.5_1 > /etc/libvirt/qemu/vmCentOS6.5_8.xml
[root@localhost ~]# cp /data/vmCentOS6.5_1 /data/vmCentOS6.5_8
[root@localhost ~]# vi /etc/libvirt/qemu/vmCentOS6.5_8.xml
如下三項必須修改
<name>vmCentOS6.5_8</name>
<uuid>c239c60e-e916-bb16-87e1-e686a5e4ade2</uuid>
<source file='/data/vmCentOS6.5_8.qcow2'/>
[root@localhost ~]# virsh define /data/vmCentOS6.5_8.qcow2
[root@localhost ~]# virsh start vmCentOS6.5_8
虛擬機暫時到這裏。