linux 文件系统和包管理工具rpm,yum
阅读原文时间:2023年07月08日阅读:1
 1.什么是文件系统?
文件系统是一种存储和组织计算机中数据文件的机制或方法,他使得对计算机内的数据的存储.访问和查找变得更容易,简单.
文件系统落到计算机里其实就是一个应用软件
ext2 ext3(C5.x) ext4(C6.x) xfs(CentOS7.x) zfs和Reiserfs或FAT,NTFS等都是常见文件系统.
2.为什么磁盘分区后需要格式化?
磁盘分区在没有格式化之前,操作系统无法识别系统上磁盘分区格式的,也就无法存取文件目录属性和权限等内容,把分区格式化成操作系统支持的某个文件
系统后,在存放数据,系统就会根据这个文件系统的格式进行存取文件了.
创建一个文件,inode,block (格式化生成文件系统时候产生的)

常见的文件系统

不同的系统采用的文件系统:

SUSE Linux的默认文件系统ReiserFS文件系统。
IBM的AIX使用的jfs日志文件系统。
Sun OS所用的文件系统ufs。
CentOS7采用XFS文件系统。
CentOS6采用ext4文件系统。
CentOS5采用ext3文件系统。

生产文件系统选型

1.SAS/SATA磁盘对应文件系统的选择:
    a.业务应用是[大量小文件]可选reiserfs(100K以内)。
 大量小文件访问,衡量指标是IOPS,文件系统性能瓶颈在于文件元数据操作、目录操作、数据寻址。reiserfs对小文件作了优化,并使用B+ tree组织
 数据,加速了数据寻址,大大降低了open/create/delete/close等系统调用开销。mount时指定noatime, nodiratime, notail,减少不必要的inode操
 作,notail关闭tail package功能,以空间换取更高性能。因此,对于随机的小I/O读写,reiserfs是很好的选择。ext4文件系统也是适合的,IO调度算
 法选择deadline,block size = 4096, ext4关闭日志功能。
reiserfs mount参数:-o defaults, async, noatime, nodiratime, notail, data=writeback
ext4 mount参数:-o defaults, async, noatime, nodiratime, data=writeback, barrier=0
关闭ext4日志:tune2fs -O^has_journal /dev/sdb1
CDN公司,ext2

b.高并发的数据库业务可选xfs,例如:有门户网站MySQL业务选择xfs。
c.视频下载、流媒体、数据库选择ext4、xfs、小文件业务ext4也是OK的,通用文件系统。

d.有些CDN公司的cache业务服务器,曾经还选择了ext2文件系统,因为它没有日志功能,速度快,CDN是做网站加速服务的,对数据完整性要求不高,对速
度要求高。
常规的服务应用建议,系统默认是什么就选择什么就好,简单方便

RPM

RPM全称 Redhat Package Manager 由红帽开发用于软件包的安装升级卸载与查询

RPM包命名以-将软件分成了若干部分bash-4.2.46-28.el7.x86_64.rpm

eI7表示rhel7

3.如何获取rpm包

1.使用本地CentOS7的镜像(ISO),挂载 mount /dev/cdrom /mnt,此时你会在/mnt/Packages目录下看到很多rpm的包文件。(版本过低  数量少)
2.通过联网的方式获取rpm包。
3.特定的软件官方获取软件包

其他安装软件方式?

分类

安装

版本

rpm包

预先编译打包,安装简单

软件版本偏低

源码包

手动编译打包,安装繁琐

软件版本随意

二进制包(绿色包)

解压即可使用, 安装简单

不能修改源码,软件包大

二.RPM使用示例

1.rpm包如何安装

选项描述
-i安装rpm
-v显示安装详细信息
-h显示安装rpm进度
--force强制重新安装
--nodeps忽略依赖关系

rpm -ivh 包名
cd /usr/src/
wget http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.18.0-2.el7.ngx.x86_64.rpm
rpm -ivh nginx-1.18.0-2.el7.ngx.x86_64.rpm
---------------------------------------------------
如果软件包存在, 强制再次安装
rpm -ivh --force /mnt/Packages/tree-1.5.3-3.el6.x86_64.rpm
安装samba服务需要依赖其他组件, 使用--nodeps可重新强制安装
rpm -ivh --nodeps  /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm

2.RPM包升级

rpm -U  包名
wget http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.20.0-1.el7.ngx.x86_64.rpm
rpm -Uvh nginx-1.20.0-1.el7.ngx.x86_64.rpm

3.如何查询已安装好的rpm包

rpm -q       查看指定软件包是否安装
rpm -qa       查看系统中已安装的所有RPM软件包列表*****
rpm -qi       查看指定软件的详细信息
rpm -ql       查询指定软件包所安装的目录、文件列表***
rpm -qc       查询指定软件包的【配置文件】
rpm -qf       查询文件或目录属于哪个RPM软件*****
rpm -qip   查询未安装的rpm包详细信息
rpm -qlp   查询未安装的软件包会产生哪些文件
------------------------------------------
查看系统中已安装的所有RPM软件包列表
rpm -qa tree
查询指定软件包所安装的目录、文件列表
rpm -ql vsftpd
查看指定软件的详细信息
rpm -qi vsftpd
查询指定软件包的【配置文件】
rpm -qc vsftpd
查询文件(命令)或目录属于哪个RPM软件
rpm -qf /etc/vsftpd/vsftpd.conf
查询未安装的软件包会产生哪些文件
rpm -qlp /mnt/Packages/samba-3.6.23-41.el6.x86_64.rpm
查询未安装的rpm包详细信息
rpm -qip /mnt/Packages/samba-3.6.23-41.el6.x86_64.rpm
---------------------------------------------------
5.rpm包练习
1)查询arp命令是由哪个RPM软件包安装的?
rpm -qf `which arp`
2)查询/etc/ssh/sshd_config属于哪个软件包。
rpm -qf /etc/ssh/sshd_config
3)查询tree软件包都有哪些文件。
rpm -ql tree

4.RPM包卸载

先查询, 然后卸载
rpm -qa nginx
rpm -e 包名
--force强制重新安装
--nodeps忽略依赖关系
强制卸载,忽略依赖关系
rpm -e --force --nodeps 包名
解决依赖 yum
yum remove 卸载依赖
删除有关,都要谨慎
rm  mv  find +xargs
rpm -e --nodeps 永远不用.
yum remove 卸载依赖,永远不用

rpm工具用途查询,尽量不安装
yum软件自动解决依赖,并安装

rpm软件包安装软件痛点
1)软件包依赖问题。
错误:依赖检测失败:
2)需要肉眼去寻找。
rpm工具常用用途是查询,尽量不用其安装。
yum软件自动帮管理员解决依赖,并安装。

5.RPM包校验(扩展了解)
软件相关的数据库存放于/var/lib/rpm目录
参数描述
S  文件的容量大小是否被改变
M  文件的类型或者文件的属性是否被修改
5  MD5 这一种指纹加密的内容已经不同
L  路径已经被改变
U  文件的所属主已被修改
G  文件的所属组已被修改
T  文件的创建时间已被改变

1.什么是YUM

yum是RedHat以及CentOS中的软件包管理器。能够通过互联网下载 .rpm 包并且安装,并可以自动处理依赖性关系,无须繁琐地一次次下载、安装。

2.YUM源是什么

要成功的使用yum工具安装更新软件或系统,就需要有一个包含各种 rpm 软件包的repository(软件仓库),这个软件仓库我们习惯称为 yum 源。(可以
是本地源、网络源)
1)互联网yum源 (阿里  网易)
2)局域网yum源(自己做一个yum源,http/ftp)(1.速度快,2制作的rpm放到yum源)
3)服务器本地yum源(上不了网,把光盘iso作为yum源)

3.常见互联网yum源
官方yum源:很多软件集合的在线仓库,也称为base基础源
epel源:也称为拓展源,拥有很多base源没有的软件
第三方源:比如nginx,zabbix,Docker等软件开发方开源软件的官方仓库
PS.yum源默认都放在/etc/yum.repos.d/目录下,以*.repo结尾
常见互联网yum源地址:
http://mirrors.aliyun.com/repo/

https://mirrors.tuna.tsinghua.edu.cn/
https://mirrors.tuna.tsinghua.edu.cn/help/centos/
https://mirrors.tuna.tsinghua.edu.cn/help/epel/

4.Linux系统本地yum源配置
1)互联网阿里云yum源配置
默认系统是国外源,需要替换为国内的源
方法1:
wget -q -O /etc/yum.repos.d/CentOS-Base.repo \ http://mirrors.aliyun.com/repo/Centos-7.repo
方法2:
curl -s -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
2)互联网epel源配置
扩展源,有很多软件在基本源中没有
方法1:
wget -q -O /etc/yum.repos.d/epel.repo \
http://mirrors.aliyun.com/repo/epel-7.repo
方法2:
curl -s -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
方法3:
yum install epel-release
3)互联网特定软件官方源配置
Nginx web软件官方源,有最新的nginx版本,查找方法:
1)进入nginx.org,进入download页面。
2)页面结尾进入“Linux packages for stable and mainline versions.”即可。
3)配置如下
vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

PS. http://nginx.org/en/linux_packages.html

3.YUM源配置实例

配置仓库
1.vim 手动编写.repo文件
2.wget下载已编写好的.repo文件
3.安装 zabbix-release软件. 会释放一个.repo文件至/etc/yum.repos.d/目录
如果在安装软件时,提示没有该软件
1)软件名写错了
2)当前系统仓库中搜索不到该软件

4.yum的基本使用、安装、卸载、升级、查询等操作?

安装
yum install vim wget unzip sl tree lrzsz -y

可以对软件进行重新安装
yum reinstall vsftpd
升级
yum check-updates 查看系统中哪些软件包可以更新
yum update openssl 升级已安装的软件包
yum update          适合刚装完系统使用
卸载(不要随便用)
yum remove XXXX -y
查询
yum list 列出所有的已安装和未安装的软件包
yum info ftp  看软件包的详细信息
yum list installed 列出系统中已成功安装的软件包
---------------------------------------------
cowsay 牛说  sl 小火车
注意事项:
1)生产线慎用,最好不用。
2)安装系统之后,上线前。
3)测试环境,模拟正式环境。然后上正式。

gzip(仅对文件有效)

yum -y install gzip
gzip file              对文件进行压缩(打包)
zcat file.gz          查看gz压缩后的文件(查看)
gzip -d file.gz    解压gzip的压缩包(解包)
让某个文件不生效时
gzip CentOS-Vault.repo --> CentOS-Vault.repo.gz
zcat CentOS-Vault.repo.gz  --> 查看不想解压的压缩包文件内容

zip

使用zip命令可以对文件进行压缩打包,解压则需要使用unzip命令
默认情况下没有zip和unzip工具,需要进行安装 yum -y install zip unzip
压缩文件为zip包
zip  filename.zip  filename
压缩目录为zip包
zip -r  dir.zip dir/
查看zip压缩包是否是完整的
zip -T  filename.zip
结果 test of filename.zip OK
不解压查看压缩包中的内容
unzip -l  filename.zip
unzip -t  filename.zip(检查是否完整)
解压zip文件包, 默认解压至当前目录
unzip  filename.zip
解压zip内容至/opt目录
unzip filename.zip  -d /opt/