开源虚拟化KVM(一)搭建部署与概述
一,KVM概述1.1 虚拟化概述
1.1.1 系统虚拟化
1.1.2 虚拟化的三种实现方式(1)纯软件仿真
(2)虚拟化层翻译
无硬件辅助的全虚拟化
硬件辅助的全虚拟化
(3)容器技术 1.2 KVM概述与相关参考资料二,KVM安装2.1 实现环境准备CentOS7.3DVD镜像下载地址:http://man.linuxde.net/download/CentOS_7_3 2.1.1 生产环境硬件配置
2.1.2 实验准备
2.2 KVM安装
[[email?protected] network-scripts]# pwd /etc/sysconfig/network-scripts [[email?protected] network-scripts]# cat ifcfg-ens32 TYPE=Ethernet BOOTPROTO=dhcp DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens32 UUID=17fb5987-5317-4bca-8514-9e1b73933184 DEVICE=ens32 #NBOOT=yes #打开这个
2.2.1 解决CentOS7.3的Xshell连接很慢的问题#将ssh配置文件修改成如下所示 [[email?protected] ~]# sed -n ‘93p;129p‘ /etc/ssh/sshd_config GSSAPIAuthentication no UseDNS no #重启动服务 [[email?protected] ~]# systemctl restart sshd
2.2.2 解决Centos7.3重启卡在license information
2.2.3 搭建本地yum仓库光盘源,安装软件包#搭建本地光盘源yum仓库 [[email?protected] ~]# cd /etc/yum.repos.d/ [[email?protected] yum.repos.d]# ls CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo CentOS-CR.repo CentOS-Media.repo CentOS-Debuginfo.repo CentOS-Sources.repo [[email?protected] yum.repos.d]# mkdir bak [[email?protected] yum.repos.d]# mv C* bak/ [[email?protected] yum.repos.d]# vim local.repo [[email?protected] yum.repos.d]# cat local.repo [local] name=local baseurl=file:///media/cdrom/ gpgcheck=0 enabled=1 [[email?protected] yum.repos.d]# mount /dev/sr0 /media/cdrom/ mount: /dev/sr0 写保护,将以只读方式挂载 [[email?protected] yum.repos.d]# yum -y clean all 已加载插件:fastestmirror,langpacks 正在清理软件源: local Cleaning up everything Cleaning up list of fastest mirrors [[email?protected] yum.repos.d]# yum makecache 已加载插件:fastestmirror,langpacks local | 3.6 kB 00:00 (1/4): local/filelists_db | 3.0 MB 00:00 (2/4): local/group_gz | 155 kB 00:00 (3/4): local/other_db | 1.3 MB 00:00 (4/4): local/primary_db | 3.0 MB 00:00 Determining fastest mirrors 元数据缓存已建立
@base @core @virtualization-hypervisor #虚拟化主机选项 @virtualization-platform #虚拟化平台选项 @virtualization-tools #虚拟化主机选项
@virtualization-client @gnome-desktop
#yum安装包组 [[email?protected] ~]# yum -y group install virtualization-client [[email?protected] ~]# yum -y group install gnome-desktop
2.2.3 修改虚拟化引擎配置并检查CPU特性#检查CPU特性 [[email?protected] ~]# grep vmx /proc/cpuinfo flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ida arat epb pln pts dtherm hwp hwp_noitfy hwp_act_window hwp_epp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 invpcid rtm rdseed adx smap xsaveopt [[email?protected] ~]# egrep ‘^flags.*(vmx|svm)‘ /proc/cpuinfo flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ida arat epb pln pts dtherm hwp hwp_noitfy hwp_act_window hwp_epp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 invpcid rtm rdseed adx smap xsaveopt
2.3 KVM远程管理[[email?protected] ~]# which virsh #查看虚拟机管理命令 /usr/bin/virsh [[email?protected] ~]# virsh list --all #查看所有虚拟机 Id 名称 状态 ---------------------------------------------------- [[email?protected] ~]# startx 切换到图形界面模式
2.3.1 KVM的两种远程管理方式(1)SSH图形化显示
(2)VNC图形化显示
#看一下系统里是否有必须的包 [[email?protected] ~]# rpm -qa | grep vnc tigervnc-license-1.3.1-9.el7.noarch #必须的 gtk-vnc2-0.5.2-7.el7.x86_64 gvnc-0.5.2-7.el7.x86_64 tigervnc-server-minimal-1.3.1-9.el7.x86_64 #必须的
#安装vnc-server [[email?protected] ~]# yum -y install tigervnc-server #安装服务端软件包 [[email?protected] ~]# cat /etc/sysconfig/vncservers #查看vnc配置文件 # THIS FILE HAS BEEN REPLACED BY /lib/systemd/system/[email?protected] [[email?protected] ~]# ll /lib/systemd/system/[email?protected] #原来这才是配置文件 -rw-r--r--. 1 root root 1880 11月 16 2016 /lib/systemd/system/[email?protected] #然后我们需要创建vnc密码 [[email?protected] ~]# vncpasswd Password: Verify: #启动vnc-server [[email?protected] ~]# vncserver New ‘localhost.localdomain:1 (root)‘ desktop is localhost.localdomain:1 Creating default startup script /root/.vnc/xstartup Starting applications specified in /root/.vnc/xstartup Log file is /root/.vnc/localhost.localdomain:1.log [[email?protected] ~]# ps aux | grep vnc root 6241 0.9 1.6 250192 31032 pts/0 Sl 10:07 0:00 /usr/bin/vnc :1 -desktop localhost.localdomain:1 (root) -auth /root/.Xauthority -geometry 1024x768 -rfbwait 30000 -rfbauth /root/.vnc/passwd -rfbport 5901 -fp catalogue:/etc/X11/fontpath.d -pn root 6250 0.0 0.2 96716 4068 pts/0 S 10:07 0:00 /usr/bin/vncconfig -iconic root 6991 0.0 0.0 112668 972 pts/0 S+ 10:07 0:00 grep --color=auto vnc
然后我们需要关闭Centos7.3的防火墙 [[email?protected] ~]# service firewalld stop #不然vnc客户端连接不上 Redirecting to /bin/systemctl stop firewalld.service [[email?protected] ~]# systemctl disable firewalld.service #永久关闭防火墙
https://www.realvnc.com/en/connect/download/viewer/ 可以下载vnc viewer 三,创建虚拟机3.1 使用virt-manager创建虚拟机
(1)我们需要添加一块80G的硬盘来存储操作系统的安装介质,ISO文件 (2)利用fdisk分出一块40G的分区 [[email?protected] ~]# ll /dev/sdb* brw-rw----. 1 root disk 8,16 Apr 4 08:48 /dev/sdb brw-rw----. 1 root disk 8,17 Apr 4 08:48 /dev/sdb1 #40G
(3)创建LVM逻辑卷 [[email?protected] ~]# ll /dev/sdb* brw-rw----. 1 root disk 8,16 Apr 4 08:48 /dev/sdb brw-rw----. 1 root disk 8,17 Apr 4 08:48 /dev/sdb1 [[email?protected] ~]# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created. [[email?protected] ~]# vgcreate vmvg /dev/sdb1 Volume group "vmvg" successfully created [[email?protected] ~]# vgs VG #PV #LV #SN Attr VSize VFree cl 1 2 0 wz--n- 19.00g 0 vmvg 1 0 0 wz--n- 40.00g 40.00g [[email?protected] ~]# vgdisplay #查看vg详细 --- Volume group --- VG Name cl System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size 19.00 GiB PE Size 4.00 MiB Total PE 4863 Alloc PE / Size 4863 / 19.00 GiB Free PE / Size 0 / 0 VG UUID 6ROh78-78oc-QfPu-1YnI-pW76-TiFa-4kWjSQ --- Volume group --- VG Name vmvg System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 40.00 GiB PE Size 4.00 MiB Total PE 10239 Alloc PE / Size 0 / 0 Free PE / Size 10239 / 40.00 GiB #vmvg可用的PE一共10239 VG UUID Hxeycr-8UEv-qiF2-JTZi-txEl-E5G7-Iho3x5 [[email?protected] ~]# lvcreate -n lvvm1 -l 10239 vmvg #将vmvg可以用PE全部分配给lvvm1 Logical volume "lvvm1" created. [[email?protected] ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root cl -wi-ao---- 17.00g swap cl -wi-ao---- 2.00g lvvm1 vmvg -wi-a----- 40.00g [[email?protected] ~]# mkfs.ext4 /dev/vmvg/lvvm1 格式化lvvm1
(4)挂载逻辑卷 [[email?protected] ~]# mkdir /vm
[[email?protected] ~]# mount /dev/vmvg/lvvm1 /vm/
[[email?protected] ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/cl-root xfs 17G 3.7G 14G 22% / devtmpfs devtmpfs 901M 0 901M 0% /dev tmpfs tmpfs 912M 0 912M 0% /dev/shm tmpfs tmpfs 912M 8.9M 903M 1% /run tmpfs tmpfs 912M 0 912M 0% /sys/fs/cgroup /dev/sda1 xfs 1014M 144M 871M 15% /boot tmpfs tmpfs 183M 0 183M 0% /run/user/0 /dev/mapper/vmvg-lvvm1 ext4 40G 49M 38G 1% /vm [[email?protected] ~]# echo "mount /dev/vmvg/lvvm1 /vm/" >> /etc/rc.local
(5)创建iso镜像文件存放目录 [[email?protected] ~]# mkdir /ios [email?protected] ~]# cd /iso/ [[email?protected] iso]# ls CentOS-6.5-x86_64-bin-DVD1.iso
将光盘安装镜像文件上传到/ios目录下: 3.1.1 virt-manager基本使用
(1)使用向导的默认配置来创建虚拟机 启动VNC远程管理程序连接Linux,打开Virtual Machine Manager 点击创建新的虚拟机 选择本地安装iso镜像 最后新建的虚拟机自动进入装机状态
特别提示:
(2)以自定义规划方式创建虚拟机
3.2 使用virt-install创建虚拟机#创建一块虚拟机的存储磁盘 [[email?protected] ~]# qemu-img create -f qcow2 /vm/chensiqi.qcow2 10G #qcow2格式磁盘 /vm/chensiqi.qcow2磁盘位置 10G为磁盘大小 Formatting ‘/vm/chensiqi.qcow2‘,fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 lazy_refcounts=off [[email?protected] ~]# ll -h /vm/ 总用量 1.1G -rw-------. 1 qemu qemu 8.1G 4月 9 12:26 centos6.5-2.qcow2 #真占了8G -rw-r--r-- 1 qemu qemu 193K 4月 9 12:09 chensiqi.qcow2 #只是小文件 drwx------ 2 root root 16K 4月 4 09:03 lost+found
#创建一个虚拟机 [[email?protected] ~]# virt-install #创建虚拟机命令 > --name=vm1 #虚拟机的名字 > --disk path=/vm/chensiqi.qcow2 #虚拟磁盘路径 > --vcpus=1 --ram=1024 #分配的CPU和内存大小 > --cdrom=/iso/CentOS-6.5-x86_64-bin-DVD1.iso #系统安装盘位置 > --network network=default #网络模式,default为NAT > --graphics vnc,listen=0.0.0.0 #虚拟机的显示类型为VNC > --os-type=linux > --os-variant=rhel6
3.3 半虚拟化驱动virtio3.3.1 使用半虚拟化驱动virtio的目的
3.3.2 virtio的半虚拟化设备统一接口原则3.3.3 Linux虚拟机直接选择virtio半虚拟化驱动设备3.4 QEMU Guest Agent
#这个管理包已经安装 [[email?protected] ~]# rpm -qa | grep qemu-guest-agent qemu-guest-agent-2.5.0-3.el7.x86_64 [[email?protected] ~]# which virsh /usr/bin/virsh
通过libvirt来使用QEMU guest agent 四,管理虚拟机4.1 libvirt架构概述
4.2 使用virt-manager管理虚拟机
4.3 使用virsh来管理虚拟机4.3.1 virsh概述
4.3.2 关于virsh的命令帮助
[[email?protected] ~]# virsh --help virsh [options]... [<command_string>] virsh [options]... <command> [args...] options: -c | --connect=URI hypervisor connection URI -d | --debug=NUM debug level [0-4] -e | --escape <char> set escape sequence for console -h | --help this help -k | --keepalive-interval=NUM keepalive interval in seconds,0 for disable -K | --keepalive-count=NUM number of possible missed keepalive messages -l | --log=FILE output logging to file -q | --quiet quiet mode -r | --readonly connect readonly -t | --timing print timing information -v short version -V long version --version[=TYPE] version,TYPE is short or long (default short) commands (non interactive mode): **以下省略若干字**
4.3.3 virsh常用命令
4.3.4 实操演示virsh管理虚拟机(1)通过命令开启和关闭虚拟机 #交互模式管理虚拟机
#启动虚拟机
[[email?protected] ~]# virsh #进入交互模式
欢迎使用 virsh,虚拟化的交互式终端。
输入:‘help‘ 来获得命令的帮助信息 ‘quit‘ 退出 virsh # list #显示所有启动状态的虚拟机 Id 名称 状态 ---------------------------------------------------- 3 centos6.5-2 running 14 vm2 running virsh # list --all #显示所有虚拟机 Id 名称 状态 ---------------------------------------------------- 3 centos6.5-2 running 14 vm2 running - centos6.5 关闭 virsh # start centos6.5 #启动名称为centos6.5的虚拟机 域 centos6.5 已开始 virsh # list --all Id 名称 状态 ---------------------------------------------------- 3 centos6.5-2 running 14 vm2 running 15 centos6.5 running #已经启动了 #关闭虚拟机 virsh # shutdown 14 #shutdown优雅的关闭计算机,但有时我们这样关闭不了 域 14 被关闭 virsh # list --all Id 名称 状态 ---------------------------------------------------- 3 centos6.5-2 running 14 vm2 running #仍旧在运行 - centos6.5 关闭 virsh # destroy 14 #destroy强制关闭虚拟机 域 14 被删除 virsh # list --all Id 名称 状态 ---------------------------------------------------- 3 centos6.5-2 running - centos6.5 关闭 - vm2 关闭 #被强制关闭了。
(2)通过命令来设定虚拟机的主机开启自动引导启动
[[email?protected] ~]# virsh list --all Id 名称 状态 ---------------------------------------------------- 1 vm2 running #设置主机开机自动引导后,重启我们发现虚拟机自动开启 - centos6.5 关闭 - centos6.5-2 关闭
[[email?protected] ~]# virsh 欢迎使用 virsh,虚拟化的交互式终端。 输入:‘help‘ 来获得命令的帮助信息 ‘quit‘ 退出 virsh # help autostart #查看autostart的帮助 NAME autostart - 自动开始一个域 SYNOPSIS autostart <domain> [--disable] DESCRIPTION 设置一个域在启动时自动开始. OPTIONS [--domain] <string> 域名,id 或 uuid #可以通过域名,id或uuid来控制 --disable 禁止自动启动 virsh # list --all Id 名称 状态 ---------------------------------------------------- 1 vm2 running - centos6.5 关闭 - centos6.5-2 关闭 virsh # autostart centos6.5 #开启虚拟机的开机自引导 域 centos6.5标记为自动开始 virsh # autostart centos6.5 --disable #关闭虚拟机开机自引导 域 centos6.5取消标记为自动开始 virsh # autostart centos6.5 域 centos6.5标记为自动开始
[[email?protected] ~]# virsh list --all Id 名称 状态 ---------------------------------------------------- 1 vm2 running 2 centos6.5 running - centos6.5-2 关闭
(3)通过命令进行虚拟机的暂停和唤醒 [[email?protected] ~]# virsh
欢迎使用 virsh,虚拟化的交互式终端。
输入:‘help‘ 来获得命令的帮助信息 ‘quit‘ 退出 virsh # help suspend #查看命令帮助 NAME suspend - 挂起一个域 SYNOPSIS suspend <domain> DESCRIPTION 挂起一个运行的域。 OPTIONS [--domain] <string> 域名,id 或 uuid virsh # list --all Id 名称 状态 ---------------------------------------------------- 1 vm2 running 2 centos6.5 running - centos6.5-2 关闭 virsh # suspend vm2 #暂停虚拟机 域 vm2 被挂起 virsh # list --all Id 名称 状态 ---------------------------------------------------- 1 vm2 暂停 #成功 2 centos6.5 running - centos6.5-2 关闭 virsh # resume vm2 #唤醒虚拟机 域 vm2 被重新恢复 virsh # list --all Id 名称 状态 ---------------------------------------------------- 1 vm2 running 2 centos6.5 running - centos6.5-2 关闭
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |