虚拟化

虚拟化的概念

虚拟化≠虚拟机
虚拟化里嘴核心的一个应用就是虚拟机
虚拟机+一整套管理系统+vmm/hypervisor===虚拟化
全虚拟化 ----virtualbox,vmware
都是模拟出来的,所以性能会比较低—vmware-tools解决了性能会比较低的问题
半虚拟化–xen
使用真实的硬件(cpu,硬盘,内存),性能比较高,但windows这种闭源系统无法使用
硬件辅助虚拟化–kvm(kerbel-base virtual machine)
利用cpu的虚拟化功能, 内核的一个模块
在这里插入图片描述

安装KVM

安装之前需要验证cpu是否开启了虚拟化功能,cpu是放在/proc/cpuinfo目录下,所以:cat /proc/cpuinfo 查看,cpu是amd的虚拟化是svm,intel的虚拟化是vmx,直接cat这样不容易查看我们想要的信息,所以筛选一下:egrep ‘(svm|vmx)’ /proc/cpuinfo , 如果没有内容出现则是关闭了虚拟化功能的。
先安装虚拟化:yum groupinstall virtual* -y (用组装,为了避免后期因为缺少组建出现问题),然后关机,因为需要先把服务器关机,去vmware编辑器里面把虚拟化勾上
在这里插入图片描述
然后重新执行:egrep ‘(svm|vmx)’ /proc/cpuinfo 即可发现有内容出现了:
然后执行:virt-manager 打开虚拟系统管理界面(如果工具无法显示管理界面,去虚拟机里面打开)
在这里插入图片描述
然后点击创建虚拟机:
在这里插入图片描述
需要先自己上传镜像到服务器,然后浏览-本地浏览选择上传的镜像,类型和版本选择好以后前进,其他的内存大小cpu网络这些跟着界面按需选择即可(网络哪一步需要吧在安装钱自定义配置勾上),如果过程中有灰色,是安装的时候不是用组装的,卸载,用上述方法,组的方式装虚拟化即可解决。
在这里插入图片描述
在这里插入图片描述
到自定义配置界面以后,Vitio disk1界面把磁盘总线选择Vitio:
在这里插入图片描述
NIC界面设备型号选择virio:
在这里插入图片描述
最后显示协议里面选择如图(一定要改vnc,不然不能正常打开图形化界面):
在这里插入图片描述
然后点击右上角的开始安装,剩下的步骤和平常装系统一样:
在这里插入图片描述

安装gustos

我们可以通过导入现有磁盘映像装系统,就是说选择已经装好的系统的虚拟机硬盘文件,这样导入就可以直接使用了,不需要进行上述中的开始安装后的步骤。
如,我已经上传了一个后缀为img结尾的虚拟机硬盘文件,然后需要拷贝到虚拟机镜像文件中/var/lib/libvirt/images/是默认位置(查看虚拟镜像文件位置,虚拟机系统管理界面-编辑-连接详情-存储-位置)
在这里插入图片描述
下面开始安装,virt-manager打开虚拟化界面,新建虚拟机,选择导入现有磁盘映像:
在这里插入图片描述
这时候直接点击浏览即可发现我们上传的虚拟机硬盘文件,选择后并点击右下角选择卷:
在这里插入图片描述
选择好系统类型和版本后点击前进:
在这里插入图片描述
定义内存和cpu前进后,给网卡命名,并勾选自定义配置
在这里插入图片描述
到自定义配置界面以后,Vitio disk1界面把磁盘总线选择Vitio:
在这里插入图片描述
NIC界面设备型号选择virio:
在这里插入图片描述
最后显示协议里面选择如图(一定要改vnc,不然不能正常打开图形化界面):
在这里插入图片描述
点击应用后并开始安装,因为系统之前已经安装好,所以现在点击开始安装后即可直接使用,并且会自动分配ip:
在这里插入图片描述

了解并配置KVM网络

常用网络类型:桥接、nat、仅主机

桥接:

网桥(bridge)模式可以让客户机和宿主机共享一个物理网络设备连接网络,客户机有自己的独立IP地址,可以直接连接与宿主机一模一样的网络,客户机可以访问外部网络,外部网络也可以直接访问客户机(就像访问普通物理主机一样)。即使宿主机只有一个网卡设备,使用bridge模式也可知让多个客户机与宿主机共享网络设备
如果是在window上,如果有多个网卡是可以直接查看并指定桥接到哪个网卡的,也可以选择自动:
在这里插入图片描述
而在linux上,是需要手动配置网桥的,如2张网卡,需要手动指定到哪张网卡。
在这里插入图片描述
下面开始在linux上配置桥接网络,配置之前,需要到windows虚拟网络管理器中吧nat模式的dhcp服务开启(vmwara编辑-虚拟机网络编辑器,一般dhcp默认开启的),否则可能会导致后面网桥不能正常配置使用:
在这里插入图片描述

到服务器里面:执行nm- connection-editor & 开始图形化配置,添加,选择桥接,然后点击新建:
在这里插入图片描述
配置界面设置一个名称,常规中勾上前2个选项,然后到IPV4里面吧方法选为手动并定义ip,注:这时候网络就不从之前的网卡上走了,而是从现在定义的网桥名为br0的上面走:
在这里插入图片描述
然后选择桥接,点击添加绑定物理网卡(就是指定网卡),类型选择为以太网:
在这里插入图片描述
然后定义名称(任意名称)并且选择指定到哪个网卡后点击保存:
在这里插入图片描述
回到配置主页面,再点击保存,配置完成,然后重启网卡生效:systemctl restart network , ifconfig查看后会发现多了一个bridge0的网卡:
在这里插入图片描述
注:这里bridge0的名称是之前配置的时候的桥接-接口名称:
在这里插入图片描述
brctl show :查看桥接网卡对应信息
在这里插入图片描述
nmcli connection:查看名称对应的uuid这些(简称为链接),如果要删除我们配的桥接网络,删除命令是nmcli connection delete 名称:
在这里插入图片描述

上述方法是通过图形化配置的,所以文件都是自动生成的,下面说一下配置文件存储位置:/etc/sysconfig/network-scripts , cd /etc/sysconfig/network-scripts 进入后ls查看即可看到刚才配置的时候生成的2个文件(br0是桥接网络名称,bro-slave1)是桥接网络绑定物理网卡名称
在这里插入图片描述
如果需要重新创建桥接网络需要删除 nmcli connection 里面新建网络信息,然后在nm- connection-editor & 开始正常添加配置:
在这里插入图片描述
说一下通过命令行配置桥接网络,对应的信息同上,了解一下即可:
在这里插入图片描述
windows下vmwara的桥接网络创建成功以后,服务器中创建的虚拟化中也会自动出现和主机服务配置一样的桥接网络,virt-manager 打开控制台查看:
在这里插入图片描述
如果virt-manager虚拟化里面没有出现桥接网络,去检查一下之前配置的是否有误(可以去/etc/sysconfig/network-scripts中编辑2个配置文件并删除多余的配置信息,核对一下配置文件中的mac地址和本机(ifconfig查看)mac地址是否一致,然后重启网络废物:systemctl restart network 和 systemctl restart libvirtd 服务。
也可以使用 nmtui 选择网桥配置,配置内容与上述一样:
在这里插入图片描述
在这里插入图片描述

NAT:

NAT方式是kvm安装后的默认方式。它支持主机与虚拟机的互访,同时也支持虚拟机访问互联网,但不支持外界访问虚拟机。
除了桥接网络之外,当你在vmwara(在这可以理解为交换机)上每创建一个网络,则在物理机上就会对应一张网卡:
在这里插入图片描述
并且每个物理网卡中的IPV4会根据虚拟机中分配的子网IP,这个是不能改的,否则会导致网络不能正常使用。
在这里插入图片描述
nat网络中,只需要注意的是,kvm网关配置的是*...2 , RVM网关配置的是*...1
在这里插入图片描述

仅主机(hostonly):

为了更好的模拟生产服务器,可以在本地虚拟机进行相关测试。一般实际的生产服务器是仅能与本地主机或内网相同,所以虚拟机设置固定IP,选择仅主机模式做测试尤为重要。虚拟机网络模式选择Hostonly,即仅主机模式,设置固定IP,和主机相同。
在这里插入图片描述
查看仅主机ip区间-vwara编辑-虚拟网络编辑器-仅主机-DHCP设置,设置静态ip的时候必须是该ip地址区间,且不能与其他服务器重复设置:
在这里插入图片描述
创建网卡的时候选择仅主机,然后进入服务器编辑网卡文件设置静态即可:
vi /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet
PROXY_METHOD=none
BOOTPROTO=static
DEFROUTE=yes
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=0.0.0.0ipN
ETMASK=255.255.255.0掩码
GATEWAY=0.0.0.1网关

文件系统

了解文件系统的概念:

一个盘有无数个block,默认一个block大小是4096字节(4K) ,每个block都对应inode,inode记录每个block的文件名,大小,属性,权限。 inode只能记录同一个分区里block的信息。
在这里插入图片描述
因为一个block是4k空间,所以我们查看本地文件大小可以看到文件大小和占用空间总是不相等。
在这里插入图片描述

关于磁盘格式:
在这里插入图片描述

了解硬链接的概念:

有几个硬链接,就理解为存储在block里的那个东西,有几个名字,至少得要有一个名字,如果最后一个名字被删除了,则这个东西会从block删除。
ln 原名 新名:创建硬链接 比如aa.sh创建一个bb.sh的硬链接:ln aa.sh bb.sh
需要注意的是,创建很多个硬链接,每当其中一个硬链接内容发生改变,硬链接的其他文件会跟着改变。以aa和bb是硬链接为例,如果修改aa的值,bb会跟着改变,同理,修改bb的值aa也会跟着改变。
在这里插入图片描述
平常其实并用不着硬链接,但某些特殊应用需要使用到硬链接,以docker的镜像layer为例, 我们平时看到的信息是顶层(abc1)的内容,但顶层内容其实是有很多个硬链接(a,b,c,1)组成,每个硬链接都往里面写内容,这样便优化了读写速度。
在这里插入图片描述

每当建一个目录,就会有2个硬链接 -a 查看,目录本身(.)是一个,上级目录(…)是一个,在目录中新建一个目录就会多一个硬链接(每个目录中的 … 用于返回上一级):
在这里插入图片描述
以跟目录为例,有21个(图中圈中部分),注:其中命令中的 / 不算其中:
在这里插入图片描述

挂载文件系统:

lsblk:查看磁盘挂载情况
df -hT:查看磁盘挂载情况和类型 与lsblk同样效果
如果一个磁盘同时挂载了多个目录,lsblk和df命令都无法查看,这时候需要使用mount命令查看,但mount查看内容过于繁琐,所以需要筛选一个,以挂载的sda6为例:
在这里插入图片描述
如果装系统的时候划了500G大小,但在装系统的时候分配了200G,所以还剩下的300G就可以现在分区来使用,,图形化界面新建磁盘:应用程序-工具-磁盘
在这里插入图片描述
先点击剩余空间,在点击+开始创建磁盘
在这里插入图片描述
然后选择并输入自定义分区大小,类型选择自定义,文件系统宣威xfs,也可以是ext4…

lsblk查看分区和挂载情况:MOUNTPOINT栏如果没有内容则表示未挂载
在这里插入图片描述
如果想使用某个新创建的文件系统,就必须把它挂载到某挂载点(mkdir新建的一个目录),挂载命令是mount
mount -o 选项 设备 /挂载点 (不加选项直接mount 即可,默认是可读写的)
取消挂载(就是卸载已挂载的点或设备): umount /挂载点 或者 umonut 设备
如,现在将刚创建的sda6挂载到zz目录,挂载以后访问和写入数据都是在sda6里面,并非当前服务器目录。 卸载sda6以后拷贝了3个文件到zz中,因为sda6本身是没有数据的,所以挂载sda6以后就看不到之前zz目录中的文件了。注:挂载目录以后,原目录的内容和空间都会被隐藏,比如zz之前有100G的数据,挂载了sda6以后,之前zz目录中的数据被隐藏了,现在看到的是sda6的数据。 但之前zz的数据依旧存在(就是原磁盘如果有500G,现在看不到zz,其他加起来实际只有400g,卸载了挂载的磁盘以后就能看到了这被隐藏的100G了)。
在这里插入图片描述
mount -o ro 文件:以只读的形式挂载磁盘
在这里插入图片描述
mount -o noexec:反向权限挂载,就是以前可执行的现在不能执行,以前不能执行的现在可执行
在这里插入图片描述
并不是每次重新挂载都需要先卸载,可以加上选项remount,exec 即可:
在这里插入图片描述
上述挂载都是一次性的,重启就不生效了,如果要挂载永久生效,需要把挂载配置文件写入到/etc/fstab中 :vi /etc/fstab
在这里插入图片描述
如果不需要定义选项,直接defaults 即可需要定义选项用 , 隔开即可, 最后 0 0 是 是否自检,默认 0 0 否则可能会出问题。 所以最终样式为:
在这里插入图片描述
写入配置文件以后:需要mount 挂载一次目录即可 或者mount -a (自动挂载) 也可。
在这里插入图片描述

查找文件:

which 命令 : 查询可执行命令的路径
whereis 命令:查询含有命令的所有路径
locate 路径/文件:基于数据库查询,但数据库更新需要一个星期左右,所以不到7天的文件是无法查询到结果的。 也可以 使用updatedb 更新数据库,这时候就可以查询到刚创建的文件了:
在这里插入图片描述
locale:显示本机所有编码的,echo $LANG 仅可以查看使用编码,存放路径 /etc/locale.conf 更改该目录编码永久生效。

find 路径 名称 :查找文件
find / -name find :从根目录开始查找 find 的文件路径所在 如果不加路径 则是在当前目录查找,文件可以加上通配符如:find*,find,find?..
find / -iname find :从根目录开始查找 find 的文件路径所在,且不区分大小写。
find / -user 用户:从根目录开始查找 用户为 ** 的文件
find / -group 用户:从根目录开始查找 组为 ** 的文件
find / -uid num :从根目录开始查找 uid(用户id)为num用户的所有文件
find / gid num :从根目录开始查找gid(组id)为num用户的所有文件
find / -user ** -group ** :同时满足用户是且属组是的文件
find / -nouser :从根目录开始查找 没有所属用户的文件
find / -nouser -nogroup:从根目录开始查找 既没有所属组也没有所属用户的文件
find / -size 4M:从根目录开始查找 文件为4M的文件
find / -size -4M:从根目录开始查找 文件小于4M的文件
find / -size +4M:从根目录开始查找 文件大于4M的文件
find / -size +4M -o -size -10M:从根目录开始查找 文件大于4M且小于10M的文件
find / -mtime 1 :天为单位。从根目录开始查找创建时间为一天的文件
find / -mtime -1:从根目录开始查找创建时间小于1天的文件
find / -mtime +1:从根目录开始查找创建时间大于1天的文件
find / -mmin 1/-1/+1:分为单位,从根目录开始查找查找时间等于小于大于*分钟文件
find / -type 文件类型:文件类型:目录(d)、文件(f——’-'表示文件,find这里用f表示文件)、字符设备©、块设备文件(b)、链接文件(l)、套接字文件(s)、管道文件§ ,这里把 / 目录替换为指定目录,或者不要目录表示为当前目录下查找
find / -perm 权限数字:从根目录开始查找指定权限的文件,如find / -perm 755
find / -perm /权限数字:从根目录开始查找满足指定权限中其中一个的所有文件 如:find / -perm /755
find / -perm -权限数字:从根目录开始查找在满足指定权限的前提下,高于当前权限的文件也全部显示出来,如:find / -perm -533 ,533权限及高于533权限的全部文件

-exec:连接符 , 结合find命令使用,如筛选出了指定文件然后对这些文件做操作,如删除,复制等等。。。使用方法:find / -name file* -exce rm -rf {} ; 就是说查找了file开头的文件,通过连接符把这些文件删除,exce后可以跟任何操作,如删除复制查看…

xargs:可以理解为精确匹配,一般结合管道符使用,如:find查找的文件直接用管道符查看权限,会发现结果是全部文件,管道符后加上xargs便可解决该问题
在这里插入图片描述

Logo

快速构建 Web 应用程序

更多推荐