KVM虛擬機安裝操作
環境: Centos 6.5
(1)修改內核模式爲兼容內核啓動
uname –a
vi /boot /grub/grub.conf
修改default值等 如:default=1
vi /etc/selinux/config
SELINUX=disabled
chkconfig ip6tables off
chkconfig iptables off
reboot
(2) 查看是否支持虛擬機
egrep '(vmx|svm)' --color=always /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm ida arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms xsaveopt
(3)配置yum 源
cd /etc/yum.reps.d/
可參考以下:
vi CentOs-Base.repo
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
(4) 安裝kvm軟件包:
yum -y install kvm python-virtinst libvirt tunctl bridge-utils virt-manager qemu-kvm-tools virt-viewer virt-v2v
安裝kvm虛擬化一些管理工具包:
yum -y install libguestfs-tools
(5) 查看虛擬化環境
service libvirtd restart
virsh –c qemu:///system list
lsmod|grep kvm
virsh –version
virt-install –version
ln –s /usr/libexec/qemu-kvm /usr/bin/qemu-kvm
qemu-kvm –version
(6) 手動配置虛擬網橋
(1)關閉networkmanager服務
chkconfig NetworkManager off
service NetworkManager stop
(2)創建br0網橋
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-br0
#vi ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BRIDGE=br0
HWADDR=d4:85:64:5a:e3:b4
NAME="System eth0"
#################
#vi ifcfg-br0
DEVICE=br0
ONBOOT=yes
TYPE=Bridge
BOOTPROTO=static
IPADDR=172.16.88.128
NETMASK=255.255.0.0
GATEWAY=172.16.90.1
DNS1=202.96.134.133
DNS2=223.5.5.5
PREFIX=16
NM_CONTROLLED=no
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=no
IPV6_DEFROUTE=no
IPV6_PEERDNS=no
IPV6_PEERROUTES=no
IPV6_FAILURE_FATAL=no
關閉了networkmanager服務之後,才能通過servicenetworkrestart管理網絡。
在 /etc/sysctl.conf 添加配置:
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
sysctl -p
service network restart
查看網橋br0
#ifconfig
#brctl show
(7) KVM 虛擬機安裝:
1.上傳IOS文件
cd /data/ios/
CentOS-6.5-x86_64-bin-DVD1.iso
2.安裝CentOS6.5
1)raw 格式磁盤
virt-install --name=oeltest01 --ram 512 --vcpus=1 --disk path=/data/test02.img,size=7,bus=virtio --accelerate --cdrom/data/iso/oel58x64.iso --vnc --vncport=5910 --vnclisten=0.0.0.0 --network bridge=br0,model=virtio –noautoconsole
2)qcow2格式(空間動態增長)
qemu-img create -f qcow2 test_note01.img 160G
virt-install --name=test_note01 --os-variant=CentOS6.5 --ram 2498 --vcpus 2 –disk path=/vm/test_note01.qcow2,size=160,format=qcow2,bus=virtio --cdrom /data/iso/CentOS-6.5-x86_64-bin-DVD1.iso --vnc --vncport=5910 --network bridge=br0 --os-type=linux --accelerate --autostart --noautoconsole
virt-install --name=test-node01 --os-variant=centos6 --qcow2 --ram 4298 --vcpus 2 --disk path=/home/vm/test_node01.qcow2,size=200,bus=virtio --network bridge=br0 format=qcow2 --vnc --vncport=5900 --cdrom=/home/rhel/rhel_iso/rhel-server-6.5-x86_64-dvd.iso --os-type=linux --accelerate --autostart --noautoconsole --vnclisten=0.0.0.0
進入圖形化界面安裝選項………
安裝完成後配置網卡:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
UUID=890921a4-bb70-4ed2-b4bb-622b3e771b0d
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
HWADDR=52:54:00:D0:A4:5B
IPADDR=172.16.88.194
PREFIX=24
GATEWAY=172.16.90.1
DNS1=202.96.134.133
DNS1=88.88.88.88
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
啓動網絡服務 /etc/init.d/network restart
配置虛擬機從宿主機通過console登錄:(紅色字是需要添加部分)
echo “ttyS0” >> /etc/securetty
cat /etc/securetty
vi /boot/grub/grub.conf
title CentOS (2.6.32-431.el6.x86_64)
root (hd0,1)
kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/vg_vda1-lv_gen rd_NO_LUKS rd_NO_MD crashkernel=auto.UTF-8 rd_LVM_LV=vg_vda1/lv_gen KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet console=ttyS0
initrd /initramfs-2.6.32-431.el6.x86_64.img
vi /etc/inittab
id:5:initdefault:
S0:12345:respawn:/sbin/agetty ttyS0 115200
重啓虛擬機reboot
宿主機通過console登錄:virsh console 虛擬機名
爲虛擬機添加磁盤(此處也可以修改虛擬機的內存和vcpus等設備):
在宿主機創建磁盤:qemu-img create -f qcow2 add_mycat01.img 20G
查看磁盤容量:qemu-img info add_mycat01.img
virsh edit虛擬機名
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/vm/test_mycat1.qcow2'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/vm/add_mycat01.img'/>
<target dev='vdb' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
</disk>
<disk type='block' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='hda' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
重啓虛擬機:virsh destroy 虛擬機名
virsh start 虛擬機名
查看磁盤 #fdisk –l
格式化磁盤:mkfs.ext4 /dev/vdb
fdisk /dev/vdb
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-93622, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-93622, default 93622):
Using default value 93622
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): w
The partition table has been altered!
#partx -a /dev/sdb
#pvcreate /dev/vdb1
#pvs
#vgextend vg_testnode02 /dev/vdb1
#vgs
#lvcreate -L 110G -n lv_data vg_testnode02
#lvextend -l +100%FREE /dev/vg/lv_data
#lvs
擴容後需要改變尺寸:
resize2fs /dev/mapper/vg_test03mis01-lv_data
mkfs.ext4 /dev/mapper/vg_testnode02-lv_data
vi /etc/fstab
/dev/mapper/vg_testnode02-lv_data /data ext4 defaults 1 2
單用戶下修改 fstab,先掛載根目錄
root# mount -o remount,rw /
kvm虛擬機改名:
1. virsh list --all
Id Name State
----------------------------------------------------
- haproxy shut off
- mycat01 shut off
- mycat02 shut off
- test_note01 shut off
[root@kvm ~]# cd /etc/libvirt/qemu
[root@kvm qemu]# virsh dumpxml test_note01 >test_node01.xml
[root@kvm qemu]# ls
autostart haproxy.xml mycat01.xml mycat02.xml networks test_node01.xml test_note01.xml
[root@kvm qemu]# vi test_node01.xml
將test_note01替換成test_node01
重新定義虛擬機名稱:
[root@kvm qemu]# virsh undefine test_note01
[root@kvm qemu]# virsh define test_node01 .xml
將img或qcow2磁盤文件改名:
[root@kvm vm]# mv test_note01.qcow2 test_node01.qcow2
查看虛擬機:[root@kvm qemu]# virsh list --all
Id Name State
----------------------------------------------------
- haproxy shut off
- mycat01 shut off
- mycat02 shut off
- test_node01 shut off
克隆虛擬機:
virt-clone -o test_node02 -n test_node03 -f /vm/
[root@kvm ~]# cat /etc/libvirt/qemu/test_node03.xml |grep vnc
<graphics type='vnc' port='-1' autoport='yes'/>
[root@kvm ~]# virsh edit test_node03
<graphics type='vnc' port='5901' autoport='yes'/>
Domain test_node03 XML configuration not changed.
virsh list --all
Id Name State
----------------------------------------------------
7 test_node01 running
- haproxy shut off
- mycat01 shut off
- mycat02 shut off
- test_node02 shut off
- test_node03 shut off
[root@kvm ~]# virsh start test_node03
error: Failed to start domain test_node03
error: internal error: process exited while connecting to monitor: 2017-06-13T04:44:14.410164Z qemu-kvm: -chardev socket,id=charchannel0,path=/var/lib/libvirt/qemu/channel/target/domain-test_node02/org.qemu.guest_agent.0,server,nowait: Failed to bind socket: No such file or directory
2017-06-13T04:44:14.410238Z qemu-kvm: -chardev socket,id=charchannel0,path=/var/lib/libvirt/qemu/channel/target/domain-test_node02/org.qemu.guest_agent.0,server,nowait: chardev: opening backend "socket" failed
virsh edit test_node03
path=/var/lib/libvirt/qemu/channel/target/domain-test_node03/org.qemu.guest_agent.0
Domain test_node03 XML configuration edited.
[root@kvm ~]# virsh start test_node03
Domain test_node03 started
diff /etc/libvirt/qemu/test_node03.xml /etc/libvirt/qemu/test_node02.xml|
進入test_node03虛擬機配置
vi /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:5d:85:06", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
# PCI device 0x1af4:0x1000 (virtio-pci)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:1a:7b:2d", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" 將 NAME= eth1改成 eth0
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
UUID=353ff276-6fac-4d1f-ab4a-3d770b3dd084
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
HWADDR=52:54:00:1a:7b:2d
IPADDR=172.16.88.196
PREFIX=16
GATEWAY=172.16.90.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
service network start
虛擬機隨服務開機啓動:
把KVM虛擬機的XML配置文件做一個軟連接到/etc/libvirt/qemu/autostart/目錄下
ln -s /etc/libvirt/qemu/test_node04.xml test_node04.xml
虛擬機刪除: virsh undefine 名稱
kvm虛擬機快照:qemu-img snapshot -c node1_snapshot01 test-node01.qcow2
查看快照:qemu-img snapshot -l test-node01.qcow2