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