企业常用Linux三剑客awk及案例/awk底层剖析/淘宝网cdn缓存对象分级存储策略案例/磁盘知识/awk统计与计算-7055字

发布于:2024-04-22 ⋅ 阅读:(171) ⋅ 点赞:(0)

高薪·思维:
不愿意做的事情:加班,先例自己在利他
生活中先利他人在利自己
感恩,假设别人帮助过你,先帮助别人,感恩境界

awk三剑客老大

find其实也算是一种新的第四剑客

find 查找文件 查找文件,与其他命令配合
grep/egrep 过滤 过滤速度最快
sed 过滤,取行,替换,删除 替换,修改文件内容,取行
awk 过滤,取行,取列,统计计算,判断,循环

awk:是一门编程语言(单行脚本),善于处理大量的文本。

语法格式:
awk option ‘pattern{action}’ file…
awk 参数 ‘条件{动作}’ 文件

核心作用:
1.取列
附加作用是:查,删

参数:
-F 指定字段分隔符

变量名 属性
$0 当前整行记录

$n 当前记录的第n列,字段间由FS或-F参数指定分隔符

NF 当前记录中的列的个数,就是有多少列

$(NF-n) 倒数第n列,n为数字

NR 已经读出的记录数,就是n行号,从1开始

默认的分隔符是空格:第二列是00
11 00 22
第一列 用$1表示
第二列 用$2表示

awk默认的分隔符是空格:

⭐⭐⭐⭐⭐案例 练习打印不同的列

[root@calms ~]# echo “11 00 22” >a.txt
[root@calms ~]# cat a.txt
11 00 22
在这里插入图片描述
在这里插入图片描述

⭐⭐⭐⭐⭐案例 打印多列

在这里插入图片描述

⭐⭐⭐⭐⭐案例 打印整行

在这里插入图片描述

⭐⭐⭐⭐⭐案例打印最后一列

在这里插入图片描述

⭐⭐⭐⭐⭐案例 打印倒数第二列

在这里插入图片描述

-F 指定分隔符
在这里插入图片描述

准备好测试文件,取passwd文件前5行。
[root@calms ~]# sed -n ‘1,5p’ /etc/passwd >test1.txt

⭐⭐⭐⭐⭐案例: 过滤出/etc/passwd文件中包含root或nobody的行

awk ‘/root|nobody/’ /etc/passwd

⭐⭐⭐⭐⭐案例: 使用awk取出ls -lh 的大小列和最后一列

[root@calms ~]# ls -lh /etc/hosts
-rw-r–r--. 1 root root 158 6月 7 2013 /etc/hosts
[root@calms ~]# ls -lh /etc/hosts |awk’{print $5,$9}’
158 /etc/hosts

[root@calms ~]# ls -lh /etc/hosts |awk’{print $ 5,$NF}’
158 /etc/hosts

⭐⭐⭐⭐⭐案例 过滤出日志中密码错误的ip地址.

grep failed secure-20161219 |head |awk ‘{print
$(NF-3)}’

awk输出与对齐:
使用column 命令即可或者使用\t
ll -h |awk ‘{print $5,$9}’|column -t
ll -h |awk ‘{print $5"\t"$9}’

⭐⭐⭐⭐⭐案例: 取出/etc/passwd中的第

1列,第3列和最后一列
awk取列的时候,默认是通过空白字符进行分割的.
空白字符:空格,连续空格,tab键.
但是一些时候使用默认分隔符不够了,需要我们手动指定分隔符,通过-F选项指定.
未来我们想快速取出想要的内容,选择趁手工具(选好分隔符).
选择分隔符建议: 看你目标两边是什么.

awk -F’:’ ‘{print $ 1,$ 3,$NF}’ /etc/passwd|column -t

⭐⭐⭐⭐⭐案例: 指定复杂分隔符取出ip

ip a s eth0 | awk ‘NR = 3’
inet 10.0.0.200/24 brd 10.0.0.255 scope global
noprefixroute eth0

提示: inet前面有4个空格
逐步实现
ip a s eth0 |awk ‘NR=3’|awk ‘{print $2}’|awk -F’/’
‘{print $1}’
遇到空格或/就切一刀,所以4个空格切4刀,ip是第6列

[root@calms ~]# ip a s eth0 | awk ‘NR=3’|awk -F’[ /]’ ‘{print $6}’
10.0.0.200
遇到连续的空格或/就切一刀,所以4个空格切1刀,所以ip是第3列

[root@oldboy-king-v3 ~]# ip a s eth0 | awk ‘NR=3’
|awk -F’ [ / ] +’ ‘{print $3}’
10.0.0.200
其他分隔符取出
ip a s eth0 |awk ‘NR=3’ |awk -F ‘inet |/24’
‘{print $2}’

⭐⭐⭐⭐⭐案例: 取行+取列 取ip地址

awk 选项 ‘条件{动作}’ /etc/passwd
ip a s eth0 | awk -F’[ /]+’ ‘NR=3{print $3}’
10.0.0.200

额外案例: 取出权限部分 stat /etc/hosts的0644部分
stat /etc/hosts | awk -F ‘[/(]’ ‘NR=4{print $2}’
stat /etc/hosts | awk -F ‘[^0-9]+’ ‘NR=4{print
$2}’

⭐⭐⭐⭐⭐案例: 取出/etc/passwd文件中第3列大于大于100的行,取出这行的第1列,第3列和最后一列

awk 选项 ‘条件{动作}’ /etc/passwd
#条件
awk -F’:’ ‘$ =100’ /etc/passwd
4 #条件+动作
5 awk -F’:’ ‘$ 3=100{print $ 1,$ 3,$NF}’ /etc/passwd
|column -t
6 lidao996 1001 /bin/bash
7 nginx 1002 /sbin/nologin

⭐⭐⭐⭐⭐案例: 如果系统swap使用超过0则输出"异常系统开始占用swap"

条件
条件1:过滤出swap
条件2:第3列 使用的数量大于0
动作
输出这句话 ““异常系统开始占用swap””

free |awk ‘/Swap/ = $3 = 0’
Swap: 2097148 0 2097148
free |awk ‘/Swap/ = $3 = 0 {print “异常系统开始占用
swap”}’
异常系统开始占用swap

free |awk 'NR=3 = $3>0 {print “swap占用,系统异常,请
排查”}

awk统计与计算

awk进行统计有2类案例:

  1. 类似于wc -l统计次数.
  2. 进行求和,累加.

统计次数

仅仅需要统计出现了多少次,出现了多少个.可以使用wc -l方式

说明i=i+1 先计算i+1然后把结果存放到i中.
i=i+1 i值 i=i+1值 i计算后的内容
第1行 空/0 i=0+1 i=1
第2行 1 i=1+1 i=2
第3行 2 i=2+1 i=3
i=i+1 计数公式.
awk ‘{i=i+1} END{print i}’ /etc/passwd
26

END{}内容会在awk读取完成文件的时候执行.
END{}一般用于输出执行结果.
i=i+1 = i++
这个案例未来可以搭配awk各种条件进行统计与计算

计算总和

seq 10 > num.txt计算num.txt每一行的数字的总和
awk ‘{i=i+$1}END{print i}’ num.txt
55

分析执行流程

i=i+$1
$1 i i=i+$1 i结果
第1行 1 空 i=0+1 i=1
第2行 2 1 i=1+2 i=3
第3行 3 3 i=3+3 i=6
第4行 4 6 i=6+4 i=10

cut命令(补充)

-d 指定分隔符
-f 数字指定那列,多列可以用逗号或者-
-c按字符取内容

指定冒号为分隔符进行取第一列
[root@calms ~]# cut -d: -f1 /etc/passwd

取多列
[root@calms ~]# cut -d: -f1,3,5 /etc/passwd

取连续的多列(1-3列)
cut -d “:” -f1-3 /etc/passwd

按字符取:
在这里插入图片描述

磁盘知识和内部物理结构介绍

内存:临时存放,断电后丢失
磁盘:永久保存

磁盘作用

存储我们平时工作,学习,生活中的数据
在这里插入图片描述

发展趋势 实现措施
体积更小 存储密度更高
速度更快 读写更灵敏磁头,接口更先进
容量大 存储密度更高,介质更好
使用更安全 数据保持保护技术

分类

运行方式与原理 详细信息
机械硬盘(HHD) 电机带动磁盘高速旋转,读取数据,速度可以达到5400,7200rpm(每分钟多少转)(家用)
固态硬盘(SSD) 集成电路与芯片,存储芯片

国产硬盘出来之后,现在整体都不贵了
在这里插入图片描述

磁盘知识的体系结构

磁盘的外部结构

机械磁盘的外部结构

sata接口(左边数据,右边电源)
在这里插入图片描述
sas接口
在这里插入图片描述
scsi接口
在这里插入图片描述
ide接口
在这里插入图片描述

SSD固态盘的外部接口

类似于水壶的壶嘴,磁盘的读写速度,不同类型磁盘接口也有不同的读写速度

M2接口
在这里插入图片描述
企业级常用sas/sata硬盘
在这里插入图片描述

所有硬盘都是读大于写
一个盘片2个磁头
一摆盘片3-5个

固态硬盘的内部结构

这一块笔试题会考:

由三大块主控芯片,内存颗粒,缓存单元构成
cpu把数据扔到缓存里面,然后主控芯片把数据慢慢分配到内存颗粒,多个闪存颗粒

缓存硬件应用分析图:
在这里插入图片描述

ssd固态盘内部结构形象图:

磁盘的接口类型

ide磁盘与ide磁盘接口
sata磁盘(串口磁盘)与sata接口
scsi磁盘(已经过时了)与scsi接口(主要用于高端服务器和高档工作)

sas磁盘(是前面两个性能的结合产品)与sas接口
是新一代scsi技术,采用串行接口,与sata磁盘是兼容的

企业生产场景普及程度:sas》ssd》sata 单位容量与对比性能和价格:ssd》sas》sata
单位价格和购买磁盘容量:sata》sas》ssd

sata磁盘与sas磁盘区别

协议方面:sata串行高级技术附件,sas串行scsi
速率方面:sas接口传输速率12GB/S(300-500MB/s),sata:6GB/S(90-150MB/S)

硬盘方面:sas采用玻璃材料基板,常见容量(300,600,900g;1t,1.8t
sata采用铝·材料基板’,常见容量1,2,4,6,8t,它有两种:5400转(笔记本)或7200(企业级)转每分钟

ssd固态磁盘接口信息对比:
在这里插入图片描述

磁盘主要接口及特点:
在这里插入图片描述

ssd固态盘与传统机械硬盘优劣对比:
在这里插入图片描述

生产环境中服务器和磁盘的选型

Dell,hp,ibm等其中Dell是互联网主流的服务器,磁盘主流的服务器市场为sas,sata,ssd硬盘

企业级SAS硬盘

企业级sas硬盘是10000–15000转/分,具体企业需求和性价比考虑,多用于300G,600G,1T的sas硬盘。不要选择的单盘容量很大,除非用于单独纯备份!

做好RAID满足容量底层基础上保持在4块硬盘
用途:提供企业生产线对外提供服务的业务相关服务器(生产线数据业务,存储业务和相关高并发业务,web,http,cache服务)没有特殊的业务需求情况下sas磁盘为生产环境的首选磁盘配置!

单盘容量小,多块盘满足需求

企业中至少三块盘一组:
1.5T 单盘总容量为1.5T,不可以坏一块盘,读速度一块盘速度
6*300Graid5,总容量1.5T,它可以坏一块盘,速度为6块之和,web服务器
5*300G raid0,总容量1.5T,不可以坏一块盘,读速度6块之和,web服务器
10*300G raid0,总容量1.5T,可以坏两块盘,读速度10块之和,数据库服务器,应用服务器(没有单点,集群模式),缺点:维护麻烦

根据需求:性能,成本,冗余度

企业级SATA硬盘

企业级SATA盘(7200转/分),容量1t,2t,4t,8t
优点:便宜,容量大
在工作中做线下不提供服务的数据库存储,并发业务访问小量的应用(站点程序/数据库/线下备份)
特性:容量高,一般2t的SATA磁盘特性

选择SATA理由:1.便宜
2.数据量少,不需要提供用户服务
3.用于备份

SSD固态盘

特点:容量小,价格贵,速度快,用于数据量小且有超大规模高并发业务(另一种方式通过磁盘加内存缓存的技术解决大规模高并发)

数据库适合使用固态盘
taobao ,业务可能根据数据热度来综合使用分层存储,达到性价比最佳。80G SSD+500GSATA
百度腾讯360核心业务会采用SSD磁盘

磁盘选购

线上业务:sas磁盘(常规业务,web服务及应用服务)
线下业务:SATA磁盘(数据库,邮箱,下载–百度云)
线上高并发:(数据库小容量业务,ssd磁盘,数据库服务)
成本控制思想:数据访问热度,智能分析存储SATA+SSD

企业故障案例

不要用SATA磁盘来做在线高并发服务的数据存储或数据库业务!!!

公司采用SATA做数据库存储盘,结果导致数据库连续宕机一个月
5台服务器,一堆SATA盘,raid5
解决:重新购买5台,把SATA(raid5)换成sas(raid10),最后6个月没事
数据库集群
1.主库改选择用sas raid10,从库sas raid0
2.数据库使用的引擎是myisam引擎,改成innodb引擎(更新记录,只锁定当前记录,别的可以改也可以读)

淘宝网cdn缓存对象分级存储策略案例

提出问题:
存储数据时,18kb一下对象数量占总数量达到80%,而其存储量不到40%同时,80%经常被访问对象所占用存储空间不到总量的20%
分析问题:
热点数据(访问频此高的内容)需要更快的性能,而占用的空间并不到,冷数据(访问频次低的内容)所需要的存储很大,对性能要求不需要高
解决问题:
所以服务器引入分层存储机制,单台服务器(实际会多台)的磁盘可由一块80Gb的ssd磁盘和两块500GB的SATA盘组成,然后把“热数据“存放在ssd盘上,冷数据存放在SATA盘,冷热数据可以动态调度,从而进行兼顾性能,容量与成本(分层存储调度软件由淘宝开发)

淘宝的策略是高效低成本方案,云计算运维我们在企业中不可能一直不考虑成本,无限制的提升性能

更多内容关注专栏!!!


网站公告

今日签到

点亮在社区的每一天
去签到