Day23-磁盘管理与软件包管理
- 1. 什么是文件系统?
- 2. 为什么磁盘分区后需要格式化?
- 3. 常见文件系统类型
- 4. 文件系统体系结构(图)
- 5. 生产文件系统选型
- 5.1 SAS/SATA磁盘对应文件系统的选择:
- 5.2 常规的服务应用建议,系统默认是什么就选择什么就好,简单方便,例如:
- 6. 磁盘性能指标
- 6.1 磁盘常见性能指标
- 6.2 磁盘性能指标查看说明
- 6.3 使用iostat 监测磁盘I/O性能指标
- 7. rpm软件包命令使用
- 7.1 命令格式
- 7.2 安装rpm包
- 7.3 升级
- 7.4 查询rpm包
- 7.5 卸载常用选项
- 7.6 rpm包练习
- 7.7 rpm软件包安装软件痛点
- 7.8 yum智能软件包管理
- 7.8.1 什么是yum?
- 7.8.2 什么是yum源
- 7.8.3 常见互联网yum源
- 7.8.4 Linux系统本地yum源配置
- 7.9 yum命令使用实践
- 7.9.1 使用yum查询软件包的方式
- 7.9.2 使用yum安装软件包的方式
- 7.9.3 使用yum重新安装软件包的方式(了解,工作中不用)
- 7.9.4 使用yum更新软件包(慎用)
- 7.9.5 使用yum删除软件包
- 7.9.6 与yum仓库相关指令(扩展了解)
1. 什么是文件系统?
【文件系统】是一种【存储和组织计算机中数据文件的机制或方法】,
它使得对计算机内的数据的存储、访问和查找变得更容易、简单。
文件系统落到计算机里其实就是一个【应用软件】。
如ext2、ext3(CentOS5.x)、ext4(CentOS6.x)、xfs(CentOS7.x)、zfs和Reiserfs或FAT、NTFS等都是常见文件系统。
讲东西:1.举例。2.故事。3.用笔 画图讲。
2. 为什么磁盘分区后需要格式化?
磁盘分区在没有格式化前,操作系统是无法识别系统上磁盘分区格式的,也就无法存取文件目录属性和权限等内容,把分区格式化成操作系统支持的某个文件系统后,再存放数据,系统就会根据这个文件系统的格式进行存取文件了。
创建一个文件:inode,block(格式化生成文件系统时候产生的)。
3. 常见文件系统类型
文件系统 | 类型名称 | 用途 |
---|---|---|
Second Extended filesystem | ext2 | 最常用的Linux文件系统 |
Three Extended filesystem | ext3 | ext2的升级版,带日志功能,ext4是ext3升级版 |
VFAT filesystem | vfat | Windows95/98采用的文件系统 |
NT filesystem | ntfs | Windows NT采用的文件系统 |
ISO 9660 filesystem | iso9660 | 大部份光盘所用的文件系统 |
UFS filesystem | ufs | Sun OS所用的文件系统 |
XFS filesystem | xfs | 由SGI开发的先进的日志文件系统,支持超大容量文件 |
JFS filesystem | jfs | IBM的AIX使用的日志文件系统 |
ReiserFS filesystem | reiserfs | 基于平衡树结构的文件系统suse。 |
[ext4,xfs]
不同的系统采用的文件系统:
SUSE Linux的默认文件系统ReiserFS文件系统。
IBM的AIX使用的jfs日志文件系统。
Sun OS所用的文件系统ufs。
CentOS7采用XFS文件系统。
CentOS6采用ext4文件系统。
CentOS5采用ext3文件系统。
4. 文件系统体系结构(图)
5. 生产文件系统选型
5.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是做网站加速服务的,对数据完整性要求不高,对速度要求高。
5.2 常规的服务应用建议,系统默认是什么就选择什么就好,简单方便,例如:
对于CentOS5.x系列,常规应用就选默认的ext3文件系统即可。
对于CentOS6.x系列,常规应用就选默认的ext4文件系统即可。
对于CentOS7.x系列,常规应用就选默认的xfs文件系统即可。
注意:如果服务器数量少,怎么选择都可以,如果海量的服务器,考虑维护成本和性能,需要折中选择。
taobao 主板接口 一个USB接口,去掉。
磁盘相关的命令;
gdisk #gpt分区工具,常用于大于2T。*****
fdisk #mbr分区工具,小于2T。*****
parted #gpt分区工具,常用于大于2T,更复杂。
partprobe #通知内核生效。
mkfs #格式化(-t)***
mount #挂载(-a,-t,-o)*****
umount #卸载*****
mkswap #格式化为swap***
swapon #加载swap
swapoff #关闭swap
dd #生成一个模拟设备的文件。*****
free #查内存 -m*****
lsblk #查看分区及挂载信息
blkid #查看块设备信息。
sync #将数据从缓冲区同步到磁盘
xfs_repair #xfs修复工具
fsck,e2fsck #ext修复工具。
tune2fs #调整或查看ext2/ext3/ext4文件系统的参数(关闭ext4日志功能)
# 关闭ext4日志:tune2fs -O^has_journal /dev/sdb1
dumpe2fs #用于导出ext2/ext3/ext4文件系统信息,例:文件系统组成含超级快、块组、inode、block等信息。
resize2fs: #调整ext2/ext3/ext4文件系统大小
df #查看磁盘挂载和使用量等信息 -h,-i *****
du #查看目录以及之目录及文件大小 du -sh /etc/* *****
iostat #查看磁盘性能指标。
iotop #实时查看磁盘性能情况。
6. 磁盘性能指标
6.1 磁盘常见性能指标
- 使用率:指磁盘处理I/O的时间百分比。过高使用率(比如超过80%),通常意味着磁盘 I/O存在性能瓶颈。
- IOPS(InputOutput Per Second):指每秒的 I/O 请求数(数据库服务,随机读写)。
- 吞吐量:是指每秒的 I/O请求大小(视频大个文件)
- 响应时间:指 I/O 请求从发出到收到响应的间隔时间
6.2 磁盘性能指标查看说明
工作时,要结合读写比例、I/O类型(随机还是连续)以及I/O的大小,综合来分析这些指标。在数据库服务、大量小文件等这类随机读写比较多的场景中,IOPS更能反映系统的整体性能;
在视频服务等顺序读写较多的场景中,吞吐量更能反映系统的整体性能。
6.3 使用iostat 监测磁盘I/O性能指标
iostat是最常用的磁盘 I/O性能监测工具,是 I/O statistics(输入/输出统计)缩写,iostat 工具将对系统的磁盘操作活动进行监视。特点是汇报磁盘活动统计情况,例如:每个磁盘的使用率、IOPS吞吐量等指标,同时也会汇报出CPU使用情况,监测数据来自/proc/diskstats。
[root@oldboy ~]# iostat -d -x 1 #展示所有的磁盘 |/0 指标,每1秒输出一组数据
性能指标表格如下
r/s 和 w/s | rkB/s 和 wkB/s | r_await 和w_await | %util |
---|---|---|---|
读写 IOPS | 读写吞吐量 | 读写响应时间 | I/O 使用率 |
7. rpm软件包命令使用
7.1 命令格式
rpm [选项] [软件包名称]
7.2 安装rpm包
(1)安装常用选项
选项 | 描述 |
---|---|
-i | 安装rpm |
-v | 显示安装详细信息 |
-h | 显示安装rpm进度 |
rpm -ivh 包名
可以是:
- 网址http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.18.0-2.el7.ngx.x86_64.rpm
- 全路径带包名
- 包名
[root@oldboy ~]# cd /usr/src/
[root@oldboy src]# wget http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.18.0-2.el7.ngx.x86_64.rpm
[root@oldboy src]# rpm -ivh nginx-1.18.0-2.el7.ngx.x86_64.rpm
warning: nginx-1.18.0-2.el7.ngx.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:nginx-1:1.18.0-2.el7.ngx ################################# [100%]
7.3 升级
选项 | 描述 |
---|---|
-U | 如果老版本不存在则安装新版本,存在则升级新版本 |
rpm -Uvh 包名
wget http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.20.0-1.el7.ngx.x86_64.rpm
[root@oldboy src]# rpm -Uvh nginx-1.20.0-1.el7.ngx.x86_64.rpm
warning: nginx-1.20.0-1.el7.ngx.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:nginx-1:1.20.0-1.el7.ngx ################################# [ 50%]
Cleaning up / removing...
2:nginx-1:1.18.0-2.el7.ngx ################################# [100%]
注意事项:
1.升级前做好备份。
2.测试环境测试好。
7.4 查询rpm包
(1)查询常用选项
选项 | 描述 |
---|---|
rpm -q | 查看指定软件包是否安装 |
rpm -qa | 查看系统中已安装的所有RPM软件包列表***** |
rpm -qi | 查看指定软件的详细信息 |
rpm -ql | 查询指定软件包所安装的目录、文件列表*** |
rpm -qc | 查询指定软件包的【配置文件】 |
rpm -qf | 查询文件或目录属于哪个RPM软件***** |
rpm -qip | 查询未安装的rpm包详细信息 |
rpm -qlp | 查询未安装的软件包会产生哪些文件 |
rpm -qa 查看系统中已安装的所有RPM软件包列表
[root@oldboy src]# rpm -qa nginx
nginx-1.20.0-1.el7.ngx.x86_64
不要选;
[root@oldboy src]# rpm -qa|grep nginx
nginx-1.20.0-1.el7.ngx.x86_64
1)效率低。
2)含有nginxoldboy都出来。
rpm -qi 查看指定软件的详细信息
[root@oldboy src]# rpm -qi nginx
Name : nginx
Epoch : 1
Version : 1.20.0
Release : 1.el7.ngx
Architecture: x86_64
rpm -ql 查询指定软件包所安装的目录、文件列表
[root@oldboy src]# rpm -ql nginx
/etc/logrotate.d/nginx
/etc/nginx
/etc/nginx/conf.d
/etc/nginx/conf.d/default.conf
/etc/nginx/fastcgi_par
rpm -qc 查询指定软件包的【配置文件】
[root@oldboy src]# rpm -qc nginx
/etc/logrotate.d/nginx
/etc/nginx/conf.d/default.conf
/etc/nginx/fastcgi_params
/etc/nginx/mime.types
/etc/nginx/nginx.conf
/etc/nginx/scgi_params
/etc/nginx/uwsgi_params
rpm -qf 查询文件(命令)或目录属于哪个RPM软件*
[root@oldboy src]# rpm -qf /etc/hosts
setup-2.8.71-11.el7.noarch
[root@oldboy src]# which cp
alias cp='cp -i'
/usr/bin/cp
[root@oldboy src]# rpm -qf /usr/bin/cp #必须指定全路径
coreutils-8.22-24.el7.x86_64
[root@oldboy src]# rpm -qf `which ifconfig`
net-tools-2.0-0.25.20131004git.el7.x86_64
缺点:
1.要查的文件或命令(全路径)不存在则查不着。
2.替代方案yum provides ifconfig联网查询
rpm -qip 查询未安装的rpm包详细信息
[root@oldboy src]# rpm -qip nginx-1.18.0-2.el7.ngx.x86_64.rpm
warning: nginx-1.18.0-2.el7.ngx.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEY
Name : nginx
Epoch : 1
Version : 1.18.0
Release : 2.el7.ngx
Architecture: x86_64
Install Date: (not installed)
Group : System Environment/Daemons
Size : 2830200
License : 2-clause BSD-like license
Signature : RSA/SHA1, Thu Oct 29 23:35:52 2020, Key ID abf5bd827bd9bf62
Source RPM : nginx-1.18.0-2.el7.ngx.src.rpm
Build Date : Thu Oct 29 23:25:20 2020
Build Host : ip-10-1-17-226.eu-central-1.compute.internal
Relocations : (not relocatable)
Vendor : Nginx, Inc.
URL : http://nginx.org/
Summary : High performance web server
Description :
nginx [engine x] is an HTTP and reverse proxy server, as well as
a mail proxy server.
rpm -qlp 查询未安装的软件包会产生哪些文件
[root@oldboy src]# rpm -qlp nginx-1.18.0-2.el7.ngx.x86_64.rpm
warning: nginx-1.18.0-2.el7.ngx.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEY
/etc/logrotate.d/nginx
/etc/nginx
/etc/nginx/conf.d
/etc/nginx/conf.d/default.conf
/etc/nginx/fastcgi_params
/etc/nginx/koi-utf
7.5 卸载常用选项
(1)卸载常用选项
选项 | 描述 |
---|---|
-e | 卸载软件 |
–force | 强制 |
–nodeps | 忽略依赖关系 |
[root@oldboy src]# rpm -qa nginx
nginx-1.20.0-1.el7.ngx.x86_64
[root@oldboy src]# rpm -e nginx
强制卸载,忽略依赖关系:
rpm -e --force --nodeps 包名
删除有关,都要谨慎
rm,mv #find+xargs
rpm -e --nodeps #永远不用。安装了不用理他,不启动就可以了。
yum remove #卸载依赖,永远不用。安装了不用理他,不启动就可以了。
RPM 包校验(扩展了解)
软件相关的数据库存放于/var/lib/rpm 目录
参数 | 描述 |
---|---|
S | 文件的容量大小是否被改变 |
M | 文件的类型或者文件的属性是否被修改 |
5 | MD5 这一种指纹加密的内容已经不同 |
L | 路径已经被改变 |
U | 文件的所属主已被修改 |
G | 文件的所属组已被修改 |
T | 文件的创建时间已被改变 |
7.6 rpm包练习
1)查询arp命令是由哪个RPM软件包安装的?
[root@oldboy src]# rpm -qf $(which arp)
net-tools-2.0-0.25.20131004git.el7.x86_64
#系统里没有的方法
yum provides arp
2)查询/etc/ssh/sshd_config属于哪个软件包。
[root@oldboy src]# rpm -qf /etc/ssh/sshd_config
openssh-server-7.4p1-21.el7.x86_64
#全路径
yum provides /etc/ssh/sshd_config
3)查询tree软件包都有哪些文件。
[root@oldboy src]# rpm -ql tree
/usr/bin/tree
/usr/share/doc/tree-1.6.0
/usr/share/doc/tree-1.6.0/LICENSE
/usr/share/doc/tree-1.6.0/README
/usr/share/man/man1/tree.1.gz
[root@oldboy src]# mount -t iso9660 /dev/cdrom /mnt
mount: /dev/sr0 is write-protected, mounting read-only
[root@oldboy src]#
[root@oldboy src]# ls /mnt/Packages/
yum install cowsay -y
[root@oldboy Packages]# cowsay "我是最棒的"
< 我是最棒的 >
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
yum install 安装报错:
You could try using --skip-broken to work around the problem
解决方法:
1./etc/yum.repos.d 清除此目录下所有无关repo结尾文件,只保留默认的。
2.yum clean all
yum –skip-broken update
7.7 rpm软件包安装软件痛点
1)软件包依赖问题。
测试:挂载光盘
ls /mnt/Packages/
rpm -ivh /mnt/Packages/bind-9.11.4-16.P2.el7.x86_64.rpm
错误:依赖检测失败:
2)需要肉眼去寻找。
rpm工具常用用途是查询,尽量不用其安装。
yum软件自动帮管理员解决依赖,并安装。
7.8 yum智能软件包管理
7.8.1 什么是yum?
Yum是RedHat以及CentOS中的软件包管理器。能够通过互联网下载.rpm 包并且安装,并可以自动处理依赖性关系,无须繁琐地一次次下载、安装。
(PS: yum是生产常用安装工具)
7.8.2 什么是yum源
要想使用yum工具安装、更新软件,就需要有一个包含各种rpm软件包的软件仓库,这样的软件仓库就称为 yum 源。
yum源分为:
1)互联网yum源(阿里云、网易、清华源)。
2)局域网yum源(自己做一个yum源,http/ftp)(1.速度快。2.制作的rpm放到yum源)。
3)服务器本地yum源(上不了网,把iso作为yum源)。
7.8.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/
7.8.4 Linux系统本地yum源配置
1)互联网阿里云yum源配置
#默认系统是国外源,需要替换为国内的源
方法1:
[root@oldboy ~]# 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:
[root@oldboy ~]# 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)配置如下
[root@oldboy ~]# 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
7.9 yum命令使用实践
7.9.1 使用yum查询软件包的方式
[root@oldboy ~]# yum list
[root@oldboy ~]# yum list tree #不需要yum list|grep tree.
[root@oldboy ~]# yum info ftp #看软件包详细信息。
7.9.2 使用yum安装软件包的方式
[root@oldboy ~]# yum install tree #需要确认
[root@oldboy ~]# yum install tree -y #非交互
#安装本地的rpm包, 如果有依赖关系, 会自动从互联网软件仓库中下载所需依赖
[root@oldboy ~]# yum localinstall /mnt/Packages/bind-9.11.4-16.P2.el7.x86_64.rpm
#直接安装网络上的rpm包
[root@oldboy ~]# yum install http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
7.9.3 使用yum重新安装软件包的方式(了解,工作中不用)
[root@oldboy ~]# yum install vsftpd
#1.如果不小心删除vsftpd配置文件
[root@oldboy ~]# rm -f /etc/vsftpd/vsftpd.conf
#2.可以对软件进行重新安装
[root@oldboy ~]# yum reinstall vsftpd
#3.检查软件的配置文件
[root@oldboy ~]# rpm -qc vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
7.9.4 使用yum更新软件包(慎用)
#对比Linux已安装的软件和yum仓库中的软件, 有哪些需要升级
[root@oldboy ~]# yum check-update
#更新acl软件
[root@oldboy ~]# yum update acl -y
#如下的执行很危险,这代表更新整个系统所有的软件,包括内核
[root@oldboy ~]# yum update -y
#注意事项:
1)生产线慎用,最好不用。
2)安装系统之后,上线前。
3)测试环境,模拟正式环境。然后上正式。
7.9.5 使用yum删除软件包
[root@oldboy ~]# yum install vsftpd -y
[root@oldboy ~]# yum remove samba -y
#注意:慎用,尽量不用。
7.9.6 与yum仓库相关指令(扩展了解)
#列出yum源可用的软件仓库
[root@oldboy ~]# yum repolist
#列出全部yum源可用和禁用的仓库
[root@oldboy ~]# yum repolist all
#查找某个命令或文件属于那个软件包(生产常用)
[root@oldboy ~]# yum provides /etc/my.cnf
[root@oldboy ~]# yum provides cd
打包压缩命令:
tar *****
gzip *** 用数据库备份 -d解包
gzip /etc/yum.repos.d/* #打包
gzip -d * #解包,删除源文件。
zip
unzip *** 用于解包(zip包)
zcat