软件包管理
概念
最直观的,我们下载软件是不是都需要一个软件包,像Windows我们往往是exe文件,macos往往是dmg,而linux大多用的是rpm,还有deb格式的。
rpm命令

rpm安装的问题:rpm是不自带解决依赖关系的,如果遇到某个软件需要前置软件,他是不能够正常使用安装好的软件的,要一层层递增的进行安装
yum命令
自动化解决依赖关系的软件管理器,红帽系列的rpm包管理工具。
其他还有乌班图的apt-get,deb包管理工具、zypper,suse的rpm包管理工具
安装语法:yum install 软件
卸载语法:yum remove 软件
寻找安装包:yum list 软件
更新软件:yum update
-y 默认同意安装,不需要再次确认
使用yum安装的软件,可以用系统服务管理命令,去启动、停止,查看状态。
查看状态
systemctl status 软件名
开启服务
systemctl start 软件名
停止服务
systemctl stop 软件名
yum优缺点:
- 适合初学,不用关心依赖关系,安装就能用
- 下载的内容是别人找好的yum仓库,可能存在版本过低,有漏洞
- 不能自定义安装路径与功能,如果是企业级机器较多,维护成本较大
编译安装优缺点:
- 可以手动调整安装路径,设置各类参数和功能,更加灵活
- 不能自动解决依赖关系,下载较为繁琐
编译三部曲
前提条件:准备好开发者工具以及开发环境
开发工具:gcc、make等
开发组件:
yum groupinstall “Development Tools”
yum groupinstall “Server Platform Development”
第一曲:执行脚本configure文件

报错信息①:
解决方法:安装gcc
yum install -y gcc
错误信息②:
./configure: error: the HTTP rewrite module requires the PCRE library.
解决方法:安装pcre-devel
yum install pcre-devel
错误信息③:
./configure: error: the HTTP gzip module requires the zlib library.
解决方法:安装zlib-devel
yum install zlib-devel
第二曲:执行make命令
第三区:开始安装 make install
*通俗点,下载好安装包,解压,找到里面的configure文件了,我们利用./configure —prefix==安装路径的方式进行编译过程,如果没有问题,这个时候我们输入make,再没有问题,我们输入 make install,基本就成功了,然后我们可以在安装好的文件中找到关于bin的文件,里面就有我们安装内容的可执行文件
磁盘管理
磁盘的单位大小:bit,字节,kb,mb,gb(除了1字节=8bit,其他都是1024为计)
概念:文件的内容存于磁盘的每一个扇区,以列的称为扇面,横向称为块(window称为簇),而我们的内容也就是这样进行读取,如果一个内容比较小占不满一个扇区,也还是按一个扇区来进行计算。并且磁盘内容的连续性更强,读取的速度自然也是更快的
磁盘操作命令
fdisk命令
对磁盘进行格式化的命令,以及分区等等
-l 显示磁盘信息
+磁盘路径 进入更改命令
parted命令
-l 显示分区内容
小于2TB的磁盘都可以用fdisk分区,但是大于2TB的磁盘,只能用parted命令分区,且磁盘为GPT格式
修改磁盘格式
- parted /dev/sdb 进入修改界面
输入mlabel gpt就可以修改格式(只能对新的磁盘进行操作,如果是就磁盘要先删除所有分区内容),输入p可以查看磁盘格式,是否更改完成
创建分区
创建主分区:进入磁盘修改界面。输入mkpart primary 0 500(代表磁盘大小500M),输入忽略Ignore(cancel放弃),就创建好了主分区
创建逻辑分区:parted命令是没有扩展分区。输入mkpart logical 501 10000,完成创建分区,按q退出
gpt分区表
现在大多的硬盘分区表,都是gpt分区表
优点:
-gpt分区表硬盘容量没有限制
-分区个数,没有限制
-自带磁盘保护机制常见的文件系统
fat16 fat32 ,最早的windows的文件系统,缺点是单个文件,不能超过2GB
- NTFS文件系统,支持文件加密,采用日志形式的文件系统,详细的记录磁盘读写的操作,支持数据恢复,能够提高磁盘数据的安全性,突破了单个文件4G大小的限制
- exFAT文件系统,新式的文件系统,单个文件支持16GB大小,能够在windows和linux,macos中同时识别
关于文件系统的命令(fsck、tuen2fs、lsblk)
fsck命令:(修复文件系统)
- 禁止文件系统开机修复错误
修改/etc/fstab文件,然后改成如下设置
可以先查看文件,结尾的数字是0就不检查错误,1就检查错误
- 针对磁盘进行修复检查
fsck -t 文件系统类型 设备名
fsck -t ext4 /dev/sdb
查看文件系统的属性
对于centos7之前的文件系统,使用dumpe2fs命令,打印文件系统的块组信息,适用于ext2、ext3、ext4
对于centos7之后的系统而言默认用的xfs文件系统,使用xfs_info命令打印文件系统信息
tuen2fs命令
lsblk命令
列出所有的设备以及文件系统信息
-f 列出分区的文件系统类型
linux一切皆文件,磁盘设备在系统中也是以文件形式展示的
在linux当中查看磁盘信息
分区格式化
格式化文件系统
mkfs命令
mkfs.xfs /dev/sdb #磁盘分区格式化为xfs格式 mkfs.ext4 /dev/sdb #磁盘分区格式化为ext4格式
关闭文件系统自检
tune2fs -c -1 /dev/sdb
补充:查看文件系统是否格式化完成
df -hT
磁盘挂载
linux下设备不挂载的话,无法使用。将磁盘挂载到某个目录,往目录中写入文件的时候,就是往磁盘写入内容
mount命令
将指定的文件系统挂载到指定目录上
-l 显示系统所有挂载的设备信息
-t 指定设备的文件系统类型,如果不指定,自动选择挂载的文件系统类型
-o 添加挂载的功能选项
- async 以异步的方式处理文件系统IO,加速写入,数据不会的写入到磁盘,写入到一个缓冲区,提高系统性能,损失数据安全性
- sync 所有的IO操作同步处理,数据同步写入到磁盘,性能较弱,提高数据读写的安全性
- atime/noatime 文件被访问的时候,是否修改其时间戳,能够提升磁盘的IO速度
- auto/noauto 可以通过-a参数自动挂载,不自动挂载
- defaults 这个默认参数,涵盖了rw,suid,dev,exec,auto,nouser,asyunc等等参数
- exec/noexec 是否允许执行挂载点内的可执行命令,使用了noexec,提升磁盘安全性
- ro 只读 rw 读写
-r read,挂载后的设备,是只读的
-w 读写参数,允许挂载后读写操作
*centos7新mount选项
att2 在磁盘上存储内连扩展属性,提升磁盘性能
inode64 允许在文件系统的任意位置创建inode
noquota 强制关闭文件系统的限额功能
umount 磁盘名/挂载目录 取消挂载
开机自动挂载
由于mount命令直接输入是临时生效,下次重启,挂载的设备分区就无法使用了
/etc/fstab文件,存放系统一些静态文件的地方,主要是系统启动的时候,系统默认的读取这个文件的信息,将指定的挂载点,进行挂载
进入到文件中,写入下面代码,以后就会开机自动挂载到目录点了
/dev/sdb /home/newdisk ext4 defaults 0 0 解释:设备名+挂载点+文件系统+挂载的功能选项+dump+fsck
- dump:表示将整个文件夹备份,一般不对挂载点备份,默认都是0
- fsck:默认都是0,不对磁盘进行检查,根文件系统,默认是检查的
df命令
-h 显示kb单位大小(以我们正常可视的数据显示)
-i 显示inode数量
-T 显示类型
du命令
显示磁盘空间大小,文件大小的命令
-h 显示当前目录下所有文件的大小
-a 显示目录中(包括所有子目录)所有文件的大小
—max-depth=1 显示几级目录下的文件,文件夹深度
—exclude=’*.pyc’ 指定排除文件名
swap交换分区
sawp是linux系统磁盘管理的一块特殊的分区,当实际的物理内存不足的时候,操作系统会从整个内存中,取出一部分暂时没在用的内存,拿出来放到交换分区,从而提供给当前正在使用的程序,可以使用更多的内存
使用swap分区作用是,通过操作系统的调取,程序可以用到的实际内存,会远大于物理内存
*sawp分区大小,必须根据物理内存和硬盘容量来计算
- 当你的物理内存少于1G,必须使用swap提升内存使用量
- 内存使用过多的应用程序,比如图像、视频等,必须使用swap分区防止物理内存不足,造成软件崩溃
当你的电脑休眠,内存中的数据会放入swap交换分区中,当你电脑恢复后,再从swap中读取数据,恢复软件正常工作
创建sawp分区
centos7系统,计算swap分区如下
内存小于2G,swap分配和内存同样大小的空间
- 内存大于2G,swap也就分配2G的空间
- 先给磁盘分一个区,指定swap分区类型(fdisk中输入t命令选择分区,再输入82代码)
- 针对磁盘格式化
mkswap 磁盘名
- 再来使用swap分区
swapon 开启交换空间
swapoff 关闭交换空间
:开启交换空间后,利用free -m命令,我们可以看到swap的可用大小得到了提升,磁盘是多大的,swap就增加了多少
buff和cache
buffers 缓冲区,buffer是给写入数据加速使用的
cached 缓存,用于读取数据加速使用的
- cached表示把数据从磁盘读取出来,保存在内存中,再次读取的时候,不再去硬盘上拉取数据,直接从内存中读取,加速查找
- buffers表示在写入磁盘数据的时候,把分散的操作临时保存到内存中,打到一定的数量之后,集中写入磁盘,减少磁盘碎片,加速数据查找,减少磁头的反复的寻道时间
作用
- 基于内存的存储中间层
- cached解决时间问题,加速读取的过程
- buff解决空间存储问题,给数据一个临时存放的区域
- cached利用内存的高速读写特性
- buff利用了内存的存储空间特性
意义相同的两种命令输入
echo 1 > /proc/sys/vm/drop_caches sysctl -w vm.drop_caches=1
- 输入1是释放cache的命令
- 输入2是清除目录缓存和inodes
- 输入3是清除内存也的缓存
扩展: sync命令:清理僵尸近程。作用:将内存缓冲区的数据,写入到磁盘中
磁盘安装
下面以虚拟机安装磁盘为例:
- 对虚拟机加装一个磁盘,自己选择大小
- 进入系统,利用fdisk命令,查看新增磁盘名字和信息
- 利用fdisk +磁盘名进入对应磁盘的修改系统
- 输入n进入分区命令,输入p划分主分区(有提示,另一个是扩展分区),如果选择默认配置,回车即可,也可以在其中选择扇区大小,磁盘大小等,最后输入w写入磁盘并退出
- 如果需要增加扩展分区,步骤同上,在选择分区的时候选择扩展分区即可
- 格式化分区 mkfs -t ext4 /dev/sdb
- 挂载分区 mount /dev/sdb /hom/newdisk
n:创建新分区 d:删除已有分区 t:修改分区类型 l:查看所有已经ID w:保存并退出 q:不保存并退出 m:查看帮助信息 p:显示现有分区信息
partprobe命令:(重读分区)
centos5或者以前使用此命令,可以用于重读分区表,当删除文件后,仍然占用磁盘空间,是因为磁盘分区表没更新,需要重启分区表,可以使用此命令,补充电脑,重读分区表
partprobe /dev/sdb #重读磁盘sdb的分区表信息
partx命令:(内核重识)
告诉linux内核,新的磁盘分区情况,让内核重读分区表
partx -a /dev/sdb #内核重新认识磁盘分区
软硬链接
软连接
ln命令(创建链接)
将一个文件创建一个对应的软连接,感觉类似于可以当作一个超链接来看待。
-b 删除,覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程
readlink命令(查看软连接本身)
readlink 软连接名路径 #就会得到软连接本身文件的信息,得到原文件的一个绝对路径
案例
将lianxi1.txt设置一个叫lianxidd.txt的软连接
ln -s lianxi1.txt lianxidd.txt
查看lianxidd.txt软连接的信息
readlink lianxidd.txt #得到源文件的绝对路径
硬链接
inode
操作系统中专门用于管理和存储文件的信息软件称之为文件系统
文件是以文件数据+文件元信息组成的,文件的inode号+文件数据内容,代表一个单个文件
文件系统又将文件元信息(元信息,存放文件的创建信息,修改信息,文件大小,等等)存储在了一个称之为inode区域的地方,中文叫做索引节点
ls -li lianxi.txt #查看inode号
cat查看文件 >> 找到inode号码 >> 通过inode号码,找到文件数据在磁盘的位置,也就是block的位置
inode大小的关系
硬盘在格式化的时候,系统自动的分为了2个部分,一个部分是元数据区域,存放问价你的inod信息,一个是文件数据内内容区域
每个inod的大小,都是在格式化分区的时候决定好了,默认是128字节或是256字节
硬链接特点
- 目录文件夹,不支持硬链接
- 不得跨文件系统
- 硬链接数据量的增加,会增加inode号码的计数(其文件包含的硬链接数量)
- 硬链接和源文件的inode号码一致
- 删除源文件,硬链接文件不会损坏丢失数据(相当于完完整整的复制了一个文件一样)
创建硬链接
ln 目标文件绝对路径 硬链接文件路径
raid技术
raid技术是将多块独立的磁盘,组成了一个磁盘组。
raid技术意图在于把多个独立的硬盘设备,组成一个容量更大,安全性更高的磁盘阵列组,将数据切为多个区段之后分别存储在不同的物理硬盘上。利用分散读写技术提升磁盘整体性能,数据同步在了不同的多个磁盘上,数据也得到了冗余备份的作用。
特性:
- 能够保证数据安全性,但是也增加了磁盘的成本
- 除了能保证数据丢失造成的严重损失,还能够提升硬盘读写效率因此广泛的被企业使用
级别分布:
raid 0
特点:数据依次写入到物理硬盘,在理想的状态下,写入速度是翻倍的,但是,如果任意一块硬盘损坏,数据都将被破坏,数据写入到2块硬盘中,没有备份功能。适用于追求极致性能的场景,而不关注于数据安全性的场景。(读写效率更高,但是数据没有安全性保障)raid 1
特点:将2块以上硬盘绑定关系,数据写入的时候,同时写入多块硬盘,因此即使硬盘故障损坏也不惧怕,因为有备份。但是,极大的降低了磁盘的利用率,将数据的大小翻倍了raid 3
异或运算 计算机的异或运算概念:数字相同则为0,数字不同则为1 -+/^ 异或运算 磁盘的异或运算 Ax or Bx or C 多个值的异或运算概念是:1的个数是奇数,结果则为1,1的个数是偶数,结果则为0 异或的*作用:只要知道异或的结果,任何一个值都能够被反推出来,且计算机的数据只有0和1 磁盘1:0101 磁盘2:1011 异或结果:1110 :如果突然磁盘1挂了,我们可以根据磁盘的数据和异或结果,反推磁盘1的数据
特点:必须需要3块以上的硬盘,并有一块磁盘用来存储异或值数据,所以raid3如果有硬盘损坏,可以利用存储着异或值的磁盘进行反推。前提是存储异或值的磁盘不得损坏
raid 5
特点:校验码均匀的放在每一块硬盘上,因此,即使挂了任意的一块硬盘,都能够反推出原本的数据。
raid 10
目前企业在使用的版本,10的含义是1和0
既吸收了0的特点,提高效率,又吸收了1的安全性,因此至少4块硬盘完成。只要不是同一个硬盘组损坏,都不会太有影响
软硬raid
互联网公司一般都会购买raid卡(硬raid)
- 数据冗余性能好到坏:raid1 > raid10 > raid5 > raid0
- 数据读写性能好到坏:raid0 > raid10 > raid5 > raid1
- 成本从高到低:raid0 > raid10 > raid1 > raid5
使用场景:
- 单台服务器,数据很重要,但是磁盘不多,建议选择raid1
- 用作数据库服务器,存储服务器,主从服务器建议用raid10,从服务器建议用raid5,减少成本
- web服务器(网页首页,展示图片,视频等),没有太多数据的话,建议选择raid5,raid0
- 有多台服务器,监控服务器,应用服务器(登陆注册与数据库打交道的后天服务器),建议用raid0,raid5(提升磁盘读写效率)
硬raid:由专门的raid卡上的主控芯片去操作磁盘,就是硬件raid。
使用:直接购买raid阵列卡即可,按照说明配置。
软raid:由cpu去控制硬盘驱动器,进行数据转换,计算的过程就是软件raid的实现原理。
使用:在linux系统上,利用命令,创建raid磁盘阵列。
区别:
- 软件raid会额外的消耗cpu资源,造成服务器压力
- 硬raid更加稳定,并且软件raid可能会造成磁盘发热过量,造成损坏
- 硬raid兼容性更好,软raid兼容性依赖于操作系统,可能会出问题
创建raid10
- 准备4块硬盘,用于创建raid10,配置vmware虚拟机,创建4个虚拟硬盘
- 检查磁盘信息,是否有四个没有搭建的硬盘
- 学习mdadm用于建设(管理和监控raid技术的命令)
mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
-C 表示创建raid阵列
-v 显示创建过程
/dev/md0 表示raid阵列的名字
-a yes 自动创建阵列设备文件
-n 4 表示用4块硬盘创建阵列
-l 10 表示指定raid的级别
最后跟上4块硬盘的名字
针对磁盘阵列设备,进行文件系统格式化,将/dev/md0格式化为xfs文件系统
mkfs.xfs /dev/md0
针对分区进行文件夹挂载,使用磁盘分区
mount /dev/md0 /home/newraid
检查raid10的详细信息
mdadm -D /dev/md0
故障修复
如果我们的硬盘出现损坏,我们只需要增加一块新的一块硬盘回去就可以了,可以利用mdadm检查还在工作的块数,这个时候我们重启重新安装一块新的硬盘进入到阵列当中即可,前提是必须解除挂载的情况下
mdadm /dev/md0 -f /dev/sdd #剔除一块硬盘 mdadm /dev/md0 -a /dev/sdd #增加一块硬盘
raid10重启
创建raid的配置文件
echo DEVICE /dev/sd[b-e] > /etc/mdadm.conf
扫描阵列信息,追加到这个文件中
mdadm -Ds >> /etc/mdadm.conf
取消raid10的挂载
umount /home/newraid
停止raid10的服务
mdadm -S /dev/md0
-
raid10卸载
取消挂载
- 停止raid服务
删除raid10中所有磁盘信息
mdadm —misc —zero-superblock /dev/sdb #依次删除四块硬盘
删除raid配置文件
-
raid备份盘
创建带有备份盘的阵列组
mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde
-n 指定3块硬盘
-l 指定raid的级别是raid5
-x 1 指定一个备份盘
加上要使用的四块硬盘
- 格式化文件系统
- 挂载分区
- 剔除一块磁盘(假设损坏)
- 检查备份磁盘是否替代损坏磁盘位置
LVM逻辑卷技术
raid磁盘阵列技术,提高磁盘读写效率以及数据安全,但缺点在于:
- 当你配置好了raid磁盘阵列组,容量的大小是限定的,如果你存储的业务过多,磁盘不够用,想要扩容是比较麻烦的
- 不同的磁盘分区,相对都是独立的,没有联系,利用率不高
-
LVM逻辑卷管理技术
lvm技术它是将一个或者多个的硬盘在逻辑上进行合并,如果硬盘空间不足,可以直接去其他硬盘中拿取容量去使用,这就是一个动态的磁盘容量管理技术
使用方式: 基于分区形式创建lvm
硬盘的多个分区,由lvm统一进行管理为卷组,可以弹性的调整卷组大小,加入新硬盘,可以充分的利用磁盘脑容量,文件系统是创建在逻辑卷上,逻辑卷可以根据需求改变大小(总容量控制在卷组中)
- 基于硬盘创建lvm
多块硬盘做成逻辑卷,将整个逻辑卷统一管理,对分区进行动态的扩容
LVM常见名词
PP(physical parttion):物理分区,lvm直接创建在物理分区之上
PV(physical volume):物理卷,处于lvm的最底层,一般一个PV对应一个PP
PE(physical extends):物理区域,PV中可以用于分配的最小存储单位,同一个VG所有的PV中的PE大小相同,例如1M,2M
VG(volume group):卷组,卷组创建在PV之上,可以划分多个PV
LE(logical extends):逻辑扩展单元,LE是组成LV的基本单元,一个LE对应了一个PE
LV(logical volume):逻辑卷,创造VG之上,是一个可以动态扩容的分区概念
LVM原理
- lvm动态扩容大小,其实就是通过互相交换PE的过程,达到能够弹性扩容分区大小
- 想要减少空间容量,就是剔除PE的大小
- 想要扩大容量,就是把其他的PE添加到自己的LV当中
- PE默认大小一般都是4M,LVM最多是可以创建出65534个PE,因此lvm最大的VG卷组单位是256G
- PE其实是LVM最小的存储单位,类似于操作系统的block(4k)
-
创建LVM
lvm优点:
lvm的文件系统可以跨越多个磁盘,分区大小不受磁盘容量限制
- 可以在系统运行中,直接动态扩容文件系统大小
- 可以直接增加新的硬盘,到lvm的VG卷组中
流程:
- 物理分区阶段,针对物理磁盘或者分区,进行fdisk格式化,修改系统的id,默认是83,改为8e类型,是lvm类型
-fdisk 修改磁盘的系统id
- PV阶段,通过pvcreate,pvdisplay将linux分区改为物理卷PV
-pvcreate,创建PV以及显示PV信息,pvdisplay,也可以直接输入pvs查看简单的信息
pvcreate /dev/sdb /dev/sdc #创建PV pvremove /dev/sdd #删除PV
- 创建VG的阶段,通过vgcreate,vgdisplay,将创建好的物理卷PV改为物理卷组VG
-创建VG卷组,vgcreate vgs显示卷组信息
vgcreate dzcvg1 /dev/sdb /dev/sdc #创建VG vgextend dzcvg1 /dev/sdd #扩容卷组,前提是已经创建过PV,再加入进对应VG卷组 vgreduce dzcvg1 /dev/sdd #剔除对应物理卷
- 创建LV,通过lvcreate,将卷组,分为若干个逻辑卷
-创建LV逻辑卷,lvcreate lvs显示逻辑卷信息
lvcreate -n lv1 -L +500M dzcvg1 #从dzcvg1中建立一个称为lv1的逻辑卷,其大小设置500M
-格式化文件系统,使用lv分区
mkfs.xfs /dev/dzcvg1/lv1 #同样的步骤进行文件格式化,再进行挂载,就可以正常使用这个分区了
- 分区大小不够用,需要进行扩容
-取消挂载,并保证其卷组中还有足够的容量,进行扩容
lvextend -L +10G /dev/dzcvg1/lv1 #增加扩容10G xfs_growfs /dev/dzcvg1/lv1 #调整xfs文件系统,否则读取不到容量,前提是将逻辑卷重新挂载回文件夹再进行调整
- 删除lvm
利用+remove命令,依次从LV>VG>PV进行删除,最后可以利用pvs,vgs,lvs命令来进行依次查看,是否删除干净。并且如果有需要,删除前,记得将分区内容进行备份
lvm的管理常见命令
pv/vg/lv+create 创建物理卷/卷组/逻辑卷
pv/vg/lv+scan 扫描物理卷/卷组/逻辑卷信息
pv/vg/lv+display 显示各个物理卷/卷组/逻辑卷详细参数
pv/vg/lv+remove 删除物理卷/卷组/逻辑卷
vg/lv+reduce 缩小卷组/逻辑卷,把物理卷从卷组中移除
vg/lv+extend 扩大卷组/逻辑卷,把某个新的物理卷,加入到卷组中
vg/lv+remove 删除整个卷组/逻辑卷
三个命令基本都是一样意思的,想要对某一层面进行修改查看,就输入对应的内容就可以了
