- 虚拟化介绍
- KVM介绍及安装
虚拟化介绍
-
VMware Workstation就属于虚拟化,虚拟化就是将一台物理计算机虚拟成多台逻辑计算机,每个逻辑计算机里可以运行不同的操作系统,互相不影响,这样就可以充分利用硬件资源;
-
悉尼话技术分为全虚拟化和半虚拟化
-
早期的CPU硬件不支持虚拟化,虚拟机上的操作系统(guest os)想要使用cpu资源,需要通过VMM(Hypervisor)来翻译指令,这个过程比较耗费资源,这种虚拟化技术叫做全虚拟化(VMware Workstation);
-
半虚拟化技术通过修改guest os内核,让guest os可以直接使用CPU资源,而不需要翻译指令,从而节省资源,但修改内核比较鸡肋(XEN);
-
后续CPU厂商直接支持虚拟化,不需要通过VMM翻译指令,无所谓半虚拟化和全虚拟化;
常见虚拟化软件
-
常见的虚拟化软件有VMware系列,包括VMware workstation、VMware vsphere(VMware esxi)、VMware Fusion(Mac);
-
Xen,开源,半虚拟化软件,同时还有基于Xen的由Ctirx开发的商业软件XenServer;
-
KVM,基于linux内核模块的开源虚拟化软件;
-
Hyper-V,微软开发的虚拟化软件;
-
Openvz开源的基于linux虚拟机软件,虚拟机和宿主机共用一个内核;
-
VirtualBox,由Sun公司开发的开源虚拟化软件。
虚拟化架构
-
虚拟化架构主要分为以下两种:
-
Type-I就是VMware vsphere和ProxmoxVE的架构,直接在硬件上安装虚拟化软件,在虚拟化软件中创建虚拟机;
-
而第二种则是常用的VMware Workstation的架构;
KVM
KVM介绍
-
KVM是以色列公司Qumranet开发的,该公司在2008年9月被RedHat公司收购;
-
KVM是Linux内核的一个模块,它将Linux内核变成了一个Hypervisor,同时KVM也是完全开源的,RedHat基于KVM的虚拟化解决方案叫做RHEV;
-
KVM在Linux系统中以进程的形式出现,由标准的Linux调度程序进行调度,这使得KVM能够使用Linux内核已有的功能;
-
只有一个KVM内核模块还不能实现虚拟化的全部功能,就比如操作系统只有内核还不能成为一个完整的操作系统一样;
-
QEMU是一个开源的虚拟化软件,可以虚拟化所有的硬件,性能不强,而KVM基于QEMU开发了一个能够运行在用户空间的工具QEMU-KVM;
-
磁盘、网络设备等硬件都通过QEMU-KVM这个工具模拟出来的,KVM和QEMU-KVM通信时用过/dev/kvm实现的;
-
而libvirt是用来管理KVM虚拟机的API,其命令为virsh。
-
KVM架构如下:
安装KVM
-
在Centos上安装KVM,前提是CPU支持虚拟化;这里我们在VMware中使用Centos7虚拟机来进行实验;
-
首先打开VMware的Centos虚拟机配置,在处理器配置中,勾选两个虚拟化引擎选项,同时将CPU调整为4核,内存调整为4G,增加一块50G的硬盘,保存后开启虚拟机:
-
进入Centos系统后,关闭iptables或firewalld,关闭selinux,格式化新添加的磁盘,并挂在到/kvm_data:
[root@centos_1 ~]# parted /dev/sdb GNU Parted 3.1 使用 /dev/sdb Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) print 错误: /dev/sdb: unrecognised disk label Model: VMware, VMware Virtual S (scsi) Disk /dev/sdb: 53.7GB Sector size (logical/physical): 512B/512B Partition Table: unknown Disk Flags: (parted) mklabel gpt (parted) mkpart primary 1M -1 (parted) print Model: VMware, VMware Virtual S (scsi) Disk /dev/sdb: 53.7GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name 标志 1 1049kB 53.7GB 53.7GB primary (parted) q 信息: You may need to update /etc/fstab. [root@centos_1 ~]# mkfs.ext4 /dev/sdb1 mke2fs 1.42.9 (28-Dec-2013) 文件系统标签= OS type: Linux 块大小=4096 (log=2) 分块大小=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 3276800 inodes, 13106688 blocks 655334 blocks (5.00%) reserved for the super user 第一个数据块=0 Maximum filesystem blocks=2162163712 400 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424 Allocating group tables: 完成 正在写入inode表: 完成 Creating journal (32768 blocks): 完成 Writing superblocks and filesystem accounting information: 完成 [root@centos_1 ~]# mkdir /kvm_data [root@centos_1 ~]# mount /dev/sdb1 /kvm_data/ [root@centos_1 ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 18G 14G 4.7G 75% / devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 12M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/sda1 1014M 142M 873M 14% /boot overlay 18G 14G 4.7G 75% /var/lib/docker/overlay/dd6cabfd1a279a887fbac0340172da32848a4e3bed64110483965523f28b935e/merged shm 64M 1.0M 63M 2% /var/lib/docker/containers/36967617a5e170374d7ff2e72858fccf0df8c996d1ccfa77ed9f5f19f2846c3a/shm tmpfs 378M 0 378M 0% /run/user/0 /dev/sdb1 50G 53M 47G 1% /kvm_data
-
然后下载或上传centos7的镜像文件到系统中,并检查cpu参数是否支持虚拟化:
[root@centos_1 ~]# grep -Ei 'vmx|svm' /proc/cpuinfo flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc art rep_good nopl tsc_reliable nonstop_tsc extd_apicid eagerfpu pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw perfctr_core retpoline_amd vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec clzero ibpb arat npt svm_lock nrip_save vmcb_clean flushbyasid decodeassists overflow_recov succor flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc art rep_good nopl tsc_reliable nonstop_tsc extd_apicid eagerfpu pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw perfctr_core retpoline_amd vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec clzero ibpb arat npt svm_lock nrip_save vmcb_clean flushbyasid decodeassists overflow_recov succor flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc art rep_good nopl tsc_reliable nonstop_tsc extd_apicid eagerfpu pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw perfctr_core retpoline_amd vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec clzero ibpb arat npt svm_lock nrip_save vmcb_clean flushbyasid decodeassists overflow_recov succor flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc art rep_good nopl tsc_reliable nonstop_tsc extd_apicid eagerfpu pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw perfctr_core retpoline_amd vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec clzero ibpb arat npt svm_lock nrip_save vmcb_clean flushbyasid decodeassists overflow_recov succor
-
接着安装kvm,执行命令如下:
yum install -y virt-* libvirt bridge-utils qemu-img