Linux学习笔记之十(软件管理上)

接九的存储管理部分。

不过我们先改动一下lv5和lv6来看看有什么影响。

Linux学习笔记之十(软件管理上)_第1张图片

 

貌似没有变化啊,估计是因为文件太小了,这里面只显示整数,所以就出现了这种现象。那我们就搞几个大文件。

Linux学习笔记之十(软件管理上)_第2张图片

 

明显看出来区别了。

Linux学习笔记之十(软件管理上)_第3张图片

 

xfs的快照卷挂载是真的麻烦,还是用ext4好。

快照的原理

下面来解释一下快照卷的原理,先认识一个命令dmsetup。

Linux学习笔记之十(软件管理上)_第4张图片

 

它是低级的逻辑卷管理。

 

Linux学习笔记之十(软件管理上)_第5张图片

 

 

Linux学习笔记之十(软件管理上)_第6张图片

 

我们来看一下效果。

Linux学习笔记之十(软件管理上)_第7张图片

 

当然我们也知道lsblk是可以看的,并且设备文件中是没有real和cow的。不过还是应该看dmsetup关系更清晰。

Linux学习笔记之十(软件管理上)_第8张图片

 

我认为real和cow应该是一种逻辑上的概念,而并没有真实存在的设备文件。

Linux学习笔记之十(软件管理上)_第9张图片

 

结合上下两张图,我们深入了解一下快照。首先呢,lv5,对应上图的lv1,应该存的是元数据,(这里的应该是说明这是我结合视频内容和网上教程自己的理解,可能并不对)类似于目录一样的东西,我理解为可能是inode(inode是文件的一个编号,表明在磁盘上的存储位置),然后通过这个目录,我们可以找到真正存数据的real卷,上图是假设这个real卷一共800M,用了200M,里面有a,b,c,d,e共5个文件。那么我们创建的快照卷,也是有两部分,一部分是lv5-s,上图里是lv1-snap,这部分也存的是目录,另一部分是cow,叫做copy on write,写时复制,就是原卷有改动的时候,被带动的文件会存到这里面来,叫做预留区,上图中预留区是100M,我们的例子预留区是10M。比如说,我们现在把a替换成了f,那么a就会先拷贝一份到预留去cow里面,当然预留区的大小要大于a文件的大小才行,如果不大于会怎样,这我就不尝试了,你们可以自己去试试。然后从快照卷怎么读文件呢?从snap目录中就可以去找,

如果要访问的文件在原卷发生变化,那么它在snap中的元数据位置信息会从real移到cow,它就会从cow里面读,没有变化还是从real里读。下面这种图可以看成数据可以从右向左流。一般我们创建快照的时候都是设为只读。快照是可以写的。

Linux学习笔记之十(软件管理上)_第10张图片

 

快照的写并不会影响原卷,快照写的地方应该就是预留区了。

Linux学习笔记之十(软件管理上)_第11张图片

 

如果我又把f替换为g呢?那f是不会进到预留区的,因为f不是快照卷创建的时候就有的文件,或者说数据。快照,顾名思义,就是一帧照片,只保留了那一瞬间的信息,就像时间凝结了。

快照有什么用处呢?其中一个重要的用处就是一致性备份,比如一个很大的数据库备份可能要很长时间,这个时候就会出现不一致的数据,因为数据库难免有很多时间信息,这个时候我们就用快照,因为创建一个快照的时间很短(虽然很短,但不是没有),这样的数据基本上已经高度一致了,只有在小数点后很多位才可以看出差别。然后从快照中备份数据。时间一直在跑,数据会不断地往预留区跑,(当然这个不断是离散的不断,以计算机可以察觉到的最小时间差别为单位)就会有预留区空间可能不够的问题,我们有下面的自动扩容命令:

Linux学习笔记之十(软件管理上)_第12张图片

 

threshold是阈值,上面的语句代表当预留区空间占满70%的时候,再扩充20%。

看到这里,你应该会理解了,快照并不是原卷的拷贝,从大小看也不可能,如果原卷的real没了,快照不一定gg,如果数据都在预留区cow中还行,不过一般这种情况比较少吧。

删除

临近结尾,再介绍一下如何删除pv,vg,lv,从vg中删除pv可以用vgreduce,前面已经讲过。

Linux学习笔记之十(软件管理上)_第13张图片

 

删除一个逻辑卷需要满足:

  1. 逻辑卷没有快照

  2. 快照没有挂载

  3. 逻辑卷没有挂载

不然的话就得先取消快照挂载,然后删除快照,然后取消逻辑卷挂载,最后才能删除逻辑卷。

删除pv呢?

Linux学习笔记之十(软件管理上)_第14张图片

 

看到属于卷组的pv是不能删除的,我们先删除卷组。

Linux学习笔记之十(软件管理上)_第15张图片

 

不能删是有一个lv2还挂载着呢。

Linux学习笔记之十(软件管理上)_第16张图片

 

我们把哪一行删了。这里需要先把所有交换分区挂载用swapoff -a停掉然后swapon -a再开,才能把lv2的挂载取消。

Linux学习笔记之十(软件管理上)_第17张图片

 

看到还是因为lv5不能删除。

Linux学习笔记之十(软件管理上)_第18张图片

 

需要提醒的是pv和真正地物理磁盘还是不一样的。

Linux学习笔记之十(软件管理上)_第19张图片

 

pv只是创建vg的一个逻辑上的准备,我们删除pv也只是删除了一个逻辑概念,/dev/sde是还在的,除非我把这个硬盘拆下来,当然虚拟机里不需要拆。

Linux学习笔记之十(软件管理上)_第20张图片

 

需要重启一下,可能只是因为我们不知道如何刷新显示设备文件才需要重启。

Linux学习笔记之十(软件管理上)_第21张图片

 

 

也可以先从pv中vgreduce出来,就可以删除了。

Linux学习笔记之十(软件管理上)_第22张图片

 

但是如果pv是vg里仅剩的最后一个,那么还是需要先删除vg才行。

Linux学习笔记之十(软件管理上)_第23张图片

 

终于结束了。

存储管理的最后简单来了解一下RAID。

Linux学习笔记之十(软件管理上)_第24张图片

 

软件管理

装软件呢,其实我们前面也用过很多次了,用的是yum -y install,-y的意思就是所有回答都是yes,不用再询问了。前面初学python没有装anaconda的时候,我们大多数都是用pip来装python包的。这个rpm包是什么东西后面会学到。

Linux学习笔记之十(软件管理上)_第25张图片

 

我们先来各看一个例子。安一个mariadb-server。

Linux学习笔记之十(软件管理上)_第26张图片

 

 

Linux学习笔记之十(软件管理上)_第27张图片

 

中间很长,最后看到有很多依赖的包会自动给你装上去的,并且包确实都是rpm包。

Linux学习笔记之十(软件管理上)_第28张图片

 

centos7是没有自带的pip的,需要我们自己装,我们先用yum装一个curl。我用的是脚本安装,参考了https://www.linuxidc.com/Linux/2017-07/145560.htm。这个装的可能比较慢,因为用的是国外的软件源。

Linux学习笔记之十(软件管理上)_第29张图片

 

 

Linux学习笔记之十(软件管理上)_第30张图片

 

可以看到pip命令已经可以用了。我们来装一下request。

Linux学习笔记之十(软件管理上)_第31张图片

 

可以看到有些依赖包也会自动帮你安上去。

Linux学习笔记之十(软件管理上)_第32张图片

 

看到在centos自带的python2.7里导入是完全没有问题的。

Linux学习笔记之十(软件管理上)_第33张图片

 

软件管理包括安装,查询,卸载,安装某一个软件是因为我们是有需求的,可能还要看一下软件的版本,软件安装的位置啊,如果不用软件的话,就需要卸载。

软件有两种类型,一种是源码包,这种呢使用高级语言写的,比如说c语言,那么安装的时候就需要编译成机器码,因为计算机只认识二进制。这种时候就需要编译器,可能还需要一些依赖库,还可能遇到一些版本不兼容的问题,后面举的例子是nginx-1.12.1.tar.gz是一个压缩包,里面解压出来可能就是一些c,c++的代码,需要编译才能运行。总之,这种软件类型的安装还是比较麻烦的。

另一种二进制文件,后面给了一个rpm包,但这不代表rpm包都是二进制包,通常情况下是的。

Linux学习笔记之十(软件管理上)_第34张图片

 

这种类型的软件安装只需要把rpm包里的文件释放到它们应该在的位置即可,没有源码包的编译过程。类比一下,有一个人现在去服装店买衣服,它可以选择现场量身订做一套,也可以选择直接买现成的。这种现成的就好比是二进制包,你可以按照自己的性别,身高去选,也就好比根据linux的版本去下载对应的包,即使性别,身高都是对的,也可能衣服有不合身的地方,因为衣服毕竟不是为你订做的。那么量身订做过程呢,布就好比源码包,需要裁缝来加工(编译器编译)最后才能成为衣服,才能直接穿上,这个例子虽然有点奇怪,但是还算解释清楚了它们的区别和安装的过程。需要说明的是,源码包的编译器一般是gcc,

Linux学习笔记之十(软件管理上)_第35张图片

 

还会有一些其它依赖lib也就是库。当然二进制包可能也会有一些依赖库,不过它们是不需要编译器了。

在redhat/centos系统里呢,用的是rpm包,用的是一种CPIO技术把二进制(bin)文件和一些其它信息,比如文件应该放的位置,权限,用户信息等一起构建成一个rpm包。

 

释放rpm包以后,文件就会放在该在的位置,还有可能会有其它操作,比如创建用户,还记得我们安装httpd的时候,就多了一个apache用户对吧。释放rpm包的过程可以说即使一种解压。

ubutun和debain(树莓派官方给的系统就是debian)用的是DPKG来管理包。

Linux学习笔记之十(软件管理上)_第36张图片

 

和redhat里的yum对应得到apt(apt-get)也会自动地解决依赖关系。

软件源

其实软件源我们早就见过,圈起来的里面就是源,英文里叫做repository,也可以叫做仓库。

Linux学习笔记之十(软件管理上)_第37张图片

 

我们可以用yum repolist看一看

Linux学习笔记之十(软件管理上)_第38张图片

 

有三个源,status就是源里有的软件rpm包的个数了。

Linux学习笔记之十(软件管理上)_第39张图片

 

默认的三个源是国外的,就是那三个base,extras和updates。在/etc/yum.repos.d/CentOS-Base.repo里面可以看到。

Linux学习笔记之十(软件管理上)_第40张图片

 

可以看到mirrolist都是同一个网址,都是红帽的官网的源。

其实最后还有一个源

Linux学习笔记之十(软件管理上)_第41张图片

 

不过它的enabled=0,表示它没有使用。如果该成1的话。

Linux学习笔记之十(软件管理上)_第42张图片

 

我们就可以看到有四个源了。

需要指出的是,一般装完系统都会先yum update一下,这个命令是更新所有软件。

Linux学习笔记之十(软件管理上)_第43张图片

 

 

Linux学习笔记之十(软件管理上)_第44张图片

 

看到有1个包需要安装,54个包要更新,一共163M,询问ok吗?y即可开始下载更新。但是说实话,国外的源速度确实有的时候还是很慢的,于是我们才考虑换成国内的源。

换源

centos的源我不太了解,但是debain的源我知道阿里云,中科大,清华很多都有源,还是蛮多的。centos国内的源推荐阿里的或者163的。

Linux学习笔记之十(软件管理上)_第45张图片

 

如果不会换源怎么办?可以百度搜的。

 

按照里面的步骤一步一步来就可以了。

Linux学习笔记之十(软件管理上)_第46张图片

 

第一步就是一个剪切命令,不过这是在同一个文件夹里面,其实就有点像重命名了。最后看到源确实换成了阿里云的源了。163的源基本上一样。

Linux学习笔记之十(软件管理上)_第47张图片

 

 

Linux学习笔记之十(软件管理上)_第48张图片

 

里面都是有步骤的。但是其实这些源呢,里面都是一些系统级别的软件,就是和操作系统相关的,比如tree,有一些扩展的软件就没有,比如nginx。

Linux学习笔记之十(软件管理上)_第49张图片

 

这时候就需要用到EPEL。

 

这个是企业级的,软件有很多。如何加这个源呢?

Linux学习笔记之十(软件管理上)_第50张图片

 

 

Linux学习笔记之十(软件管理上)_第51张图片

 

装完之后最好先yum update一下。然后就可以看到里面是可以找到nginx的。

Linux学习笔记之十(软件管理上)_第52张图片

 

可以看下epel里面的包比其它的多一个数量级。但是这是国外的源,比较慢,那怎么办呢?

我们还是去找阿里的源。

Linux学习笔记之十(软件管理上)_第53张图片

 

帮助里写的很详细。

Linux学习笔记之十(软件管理上)_第54张图片

 

这里需要下一个wget,我已经提前下过了,没下过的yum  -y install wget。

wget或者curl都是可以直接从网站链接那里下载一些文件,-O是指定文件路径,不给的话是在当前路径了。

Linux学习笔记之十(软件管理上)_第55张图片

 

 

Linux学习笔记之十(软件管理上)_第56张图片

 

 

Linux学习笔记之十(软件管理上)_第57张图片

 

怎么看用的是不是阿里云的epel源呢?

vim /etc/yum.repos.d/epel.repo就可以看到。

Linux学习笔记之十(软件管理上)_第58张图片

 

上面的base,extras,updates,epel我们都称为基础源。

卸载软件和查找软件信息

Linux学习笔记之十(软件管理上)_第59张图片

 

yum clean all就是清空下载的缓存,yum makecache就相当于更新本地的软件数据库,用于有软件安装或者卸载之后,将软件信息加入数据库或者从数据库中删除.,不过其实这两步都是可以不做的。yum reinstall用在软件有一些文件损坏的情况,用了这个命令就会自动修复。yum -y update什么都不加我们知道是更新所有需要更新的软件,后面可以指定具体的软件。卸载软件可以用erase或者remove。

Linux学习笔记之十(软件管理上)_第60张图片

 

 

Linux学习笔记之十(软件管理上)_第61张图片

 

查询软件,yum list是列出yum源中有的所有软件,后面可以指定,,指定的内容必须是全名,可以用通配符。会列出安装过(installed)的和yum源里有的,但是没有安装过的(available)。安装过的前面都会有一个@。

Linux学习笔记之十(软件管理上)_第62张图片

 

yum list installed是显示所有已安装的软件,有很多

Linux学习笔记之十(软件管理上)_第63张图片

 

search是从包的名称和简介里面找到关键字。

Linux学习笔记之十(软件管理上)_第64张图片

 

info是显示软件的一些信息。

Linux学习笔记之十(软件管理上)_第65张图片

 

前提是软件名要对

Linux学习笔记之十(软件管理上)_第66张图片

 

provides是可以找那些软件包里面的文件里面有这个名字,如果有的软件不知道怎么装可以试试这个。比如说pip(我这里是刚刚重装了系统,还没有安装pip)。

Linux学习笔记之十(软件管理上)_第67张图片

 

 

Linux学习笔记之十(软件管理上)_第68张图片

 

 

Linux学习笔记之十(软件管理上)_第69张图片

 

不过这也不是万能的。

Linux学习笔记之十(软件管理上)_第70张图片

 

软件官方下载

为什么需要去官方下载呢?主要有两个原因,一是有的软件基本源里确实没有,二是可能yum源里的不是最新版本(不过这种一般不会出现,因为yum源更新的其实还是挺快的)。

下面会举几个例子,重要的是安装的方法要学习,要知道去哪里找安装的步骤,要学会举一反三。

nginx

Linux学习笔记之十(软件管理上)_第71张图片

 

我们在epel源里面下到的是1.12版本的nginx。

Linux学习笔记之十(软件管理上)_第72张图片

 

我们去百度nginx的官网。我们要找的一定是documention而不是download。

Linux学习笔记之十(软件管理上)_第73张图片

 

 

Linux学习笔记之十(软件管理上)_第74张图片

 

 

Linux学习笔记之十(软件管理上)_第75张图片

 

 

Linux学习笔记之十(软件管理上)_第76张图片

 

这里面先让你创建一个/etc/yum.repos.d/nginx.repo,里面该写什么内容也给你了。我们来照做一下。注意该改的地方要改。

Linux学习笔记之十(软件管理上)_第77张图片

 

第一次repolist的时候会下载一个数据库,这里面是和nginx有关的一些信息,比如说依赖啊,版本的一些信息等。Failed是因为下载源在国外,网速感人。

Linux学习笔记之十(软件管理上)_第78张图片

 

最后还是成功了。看到yum list nginx的时候,系统其实是会优先提醒你nginx源里的包的,你看颜色都不一样了啊。

Linux学习笔记之十(软件管理上)_第79张图片

 

后面还有mysql(一种数据库)

Linux学习笔记之十(软件管理上)_第80张图片

 

可以先用yum provides看一下,虽然有,我们还是看一下官网安装。

可以到https://www.bilibili.com/video/av18740388/?p=26

21分钟开始看,我这里是不知道为什么上不去mysql官网了,演示不了。

zabbix

Linux学习笔记之十(软件管理上)_第81张图片

 

 

首先你可以先用provides找一下试试。

Linux学习笔记之十(软件管理上)_第82张图片

 

有的话可以考虑直接用yum安装,一看还这真的有,不过我们还是来看如何官网安装。

 

Linux学习笔记之十(软件管理上)_第83张图片

 

 

Linux学习笔记之十(软件管理上)_第84张图片

 

 

Linux学习笔记之十(软件管理上)_第85张图片

 

我们选择从包安装。

Linux学习笔记之十(软件管理上)_第86张图片

 

选择repository installation或者说从源安装。

Linux学习笔记之十(软件管理上)_第87张图片

 

 

Linux学习笔记之十(软件管理上)_第88张图片

 

这里这一句命令是安装源的,或者说仓库的,总之呢,这里面带release的都可以认为是安装repolistory的,它可以自动解决依赖关系。

 

 

Linux学习笔记之十(软件管理上)_第89张图片

 

下一步就是安装了,这一步就看个人需要,需要代理的话,就安装zabbix-proxy后面是数据库类型,看你选mysql还是pgsql数据库,有其他需要再安其它的。

Linux学习笔记之十(软件管理上)_第90张图片

 

docker

老规矩

Linux学习笔记之十(软件管理上)_第91张图片

 

 

Linux学习笔记之十(软件管理上)_第92张图片

 

openstack

 

Linux学习笔记之十(软件管理上)_第93张图片

 

 

Linux学习笔记之十(软件管理上)_第94张图片

 

docker和openstack的我就详细叙述过程了,在https://www.bilibili.com/video/av18740388/?p=26

33分钟开始看,主要是我害怕图片超了,又不想再把内容换到下一讲里面。说白了就是我懒,请求原谅。

自建yum源

Linux学习笔记之十(软件管理上)_第95张图片

 

这块内容我并没有需求,如果你们有需求,可以去

https://www.bilibili.com/video/av18740388?t=574&p=26

53分钟开始看。

你可能感兴趣的:(Linux学习笔记之十(软件管理上))