1.什么是虚拟化(Virtualization)
虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
虚拟化使用软件的方法重新定义划分IT资源,可以实现IT资源的动态分配、灵活调度、跨域共享,提高IT资源利用率,使IT资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。
2.传统运行模式
- 一台计算机只能够运行一种操作系统
3.虚拟机(Virtual Machine)运行架构
3-1.原生架构(生产环境)
- 虚拟机软件直接安装在计算机硬件上
- 虚拟机本身就是一个操作系统
- 在这个虚拟机中可以同时运行多个操作系统
3-2.寄居架构(实验环境、测试环境)
- 虚拟机作为应用软件安装在操作系统上
- 可以在此应用软件上安装多个操作系统
- 直接安装在硬件上的系统为宿主
4.虚拟机的平台产品
4-1.微软
- Hyper-V(寄居架构)
4-2.Vmware
- VMware Workstation(寄居架构)
- VMware vSphere(原生架构)
5.扩展
5-1.KVM kernel-based Virtual Machine
KVM是一个开源的系统虚拟化模块,自Linux 2.6.0之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目前已成为学术界的主流KVM之一。
KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。而Xen早期则是基于软件模拟的Para-Virtualization,新版本则是基于硬件支持的完全虚拟化。但Xen本身有自己的进程调度其,存储管理模块等,所以代码较为庞大。广为流传的商业系统虚拟化软件VMware ESX系列是基于软件模拟的Full-Virtualization。
5.2-Docker开源的应用容器引擎
https://www.sqlsec.com/2019/10/docker2.html
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
一个完整的Docker有以下几个部分组成:
DockerClient客户端
Docker Daemon守护进程
Docker Image镜像
DockerContainer容器
关于Docker详情,请见“ARL信息收集篇章”https://zhuanlan.zhihu.com/p/187505981
6.操作系统 Operating System (OS)
6-1.简介
6.2来历
6.3功能
6.4分类
6.4.1-Windows
- Win PC版本:Win XP、Win7、Win10 Win XP常被用于银行、ATM等更新换代比较慢的地方
- Windows Server服务器:2003、2008、2012、2016、2019等。常用来搭建IIS,SQLServer服务器等
6.4.2-类Unix:Linux、Mac OS等
- Unix/Linux系统 Ubuntu和CentOS被用来作为web服务器,但是Ubuntu不如Centos常见
- Debian ——> Kali、Ubuntu、Deepin
- Red Hat ——> CentOS
6.5Linux特性
KDE:K Desktop Environment
- 一种著名的运行于 Linux、Unix 以及FreeBSD 等操作系统上的自由图形桌面环境
6.6Linux操作系统优势
7.安装虚拟机Vmware Workstation Pro 16及win2008 R2+Centos7
7-1.Vmware Workstation安装
- 完后需要输入序列号
ZF3R0-FHED2-M80TY-8QYGC-NPKYF
YF390-0HF8P-M81RQ-2DXQE-M2UT6
ZF71R-DMX85-08DQY-8YMNC-PPHV8
- Vmware Workstation Pro16硬件兼容性限制比Pro12 少很多
7.2-安装Windows2008 R2 Enterprise
- 典型、稍后
- 网络类型默认NAT,详见下方讲解
- I/O控制器类型、虚拟磁盘类型默认。底层计算机硬件,协议不一样,速度不一样,推荐什么用什么。SATA也一样。那如果装老系统,如XP,默认就选择IDE,不然容易蓝屏。
- 选择磁盘:创建新的虚拟磁盘。现有磁盘的意思为使用物理机的磁盘空间(不建议)。若确定使用现有磁盘,则必须要有管理员的权限。
- 指定磁盘空间。立即分配不建议,不然40GB直接就从物理机没了,不勾选的话,会慢慢地去占用物理机的磁盘空间。建议存储为单个文件,拷贝的时候速度快。60GB电影和60GB碎片化文件,转换速度和转换率是不一样的。之后更改名称和路径。
- 自定义硬件,一般来说去掉打印机、声卡即可。需要特别注意USB控制器,根据挂载U盘或者硬盘的格式来定。之后选择镜像文件,进行下一步,准备安装
- 安装windows server 2008 R2 操作系统
- 因为电脑没有windows系统,所以选择自定义高级;反之可以升级
- 直接选择硬盘然后它会自动格式化,如果没有就自行格式化
7.3-安装虚拟机Vmware Tools
- 如果这里是灰色的,请重启;如果不是直接安装,点击这个选项,相当于点击了以下这个选项
- 出现此问题,请手动安装或者扫描虚拟机
7.4-Vmware tools的功能
- 屏幕大小自适应
- ctrl+alt 真实与虚拟机切换鼠标
- 克隆:注意克隆前需关闭虚拟机;两种克隆方式,链接克隆方便,相当于快捷方式,但是依赖原先的虚拟机;完整克隆就是一个副本。无论哪种,都是为了解决新建相同操作系统浪费时间的问题。
- 快照:注意建立一个快照就会占不少空间
- 可挂载外部USB
7.5-Windows Server 2008 R2 VMWare虚拟机识别USB3.0设备
- 使用VMware Workstation安装的Windows Server 2008 R2系统虚拟机默认无法识别USB3.0设备
Windows Server 2008 R2系统虚拟接入USB3.0设备后系统提示“未能成功安装设备驱动程序”
- 首先开启VMware 虚拟机兼容 USB3.0
- 并根据提示网址下载USB3.0驱动程序
- 打开虚拟机,将下载好的USB3.0驱动程序上传至虚拟机。安装时可能出现以下报错
- 此报错解决办法:安装系统更新补丁KB2533623即可
将下载的补丁上传至虚拟机进行安装,安装后重启系统
重启虚拟机后,再次安装USB3.0设备驱动,之后重启就ok了
7-6.安装Centos7
- 前面同windows,到这里开始。选择第一个安装;第二个是测试安装文件并且安装;第三个是修复故障
- 选择美式键盘
- 设置时间
- 选择需要安装的软件
- 重点:选择Server with GUI,然后点击done
- 选择安装位置,对磁盘进行划分
- 选择'我将会配置分区',则需要自己手动;选择左边的auto,自动就行了
- 设置root密码和创建一个账户,之后等待下方安装成功即可
7.7-虚拟机三种网络配置
桥接模式
虚拟机也会占用局域网中的一个IP地址,并且可以和其他终端进行相互访问。
如果想把虚拟机当做一台完全独立的计算机看待,并且允许它和其他终端一样的进行网络通信,那么桥接模式通常是虚拟机访问网络的最简单途径
但是,这样做并不安全,只能是做简单的测试
NAT模式
- 从外部网络来看,虚拟机和主机在共享一个IP地址,默认情况下,外部网络终端也无法访问到虚拟机
仅主机模式
- 仅主机模式,是一种比NAT模式更加封闭的的网络连接模式
- 仅主机模式的虚拟网络适配器仅对主机可见,并在虚拟机和主机系统之间提供网络连接
- 在默认情况下,使用仅主机模式网络连接的虚拟机无法连接到Internet
8.CentOS 7 配置静态IP
首先配置网路前,先将虚拟网卡清理掉。
输入下方命令,等待显示出命令提示符,然后重启CentOS 7即可关闭多余的3,4虚拟网卡
systemctl disable libvirtd.service
reboot
- 输入以下命令进入文件进行配置
cp /etc/sysconfig/network-scripts/ifcfg-ens33 etc/sysconfig/network-scripts/ifcfg-ens33.backup
vim /etc/sysconfig/network-scripts/ifcfg-ens33
将BOOTROTO=dhcp 改为BOOTPROTO=static;再将ONBOOT=no 改为yes
再在ONBOOT下方添加以下内容,并退出保存
IPADDR=192.168.91.100
GATEWAY=192.168.91.2
NETMASK=255.255.255.0
DNS1=114.114.114.114
DNS2=8.8.8.8
- 重启网卡,这三种命令任选一种
systemctl restart network
service network restart
/etc/init.d/network restart
- 注意:ifconfig和netstat依赖于net_tools,有时候不能用,可以用ipaddr和ss来代替
当网卡崩溃时,尝试输入此命令调试
systemctl stop NetworkManager
systemctl diable NetworkManager
systemctl start network.service