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


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

    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盘,冷热数据可以动态调度,从而进行兼顾性能,容量与成本(分层存储调度软件由淘宝开发)

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

    更多内容关注专栏!!!

  • 相关阅读:
    2023 ChinaJoy后,Flat Ads成为游戏、社交出海的新选择
    public,private,protected,default的区别
    蓝桥杯每日一题2023.9.21
    Flutter ー Authentication 认证
    人工智能AI 全栈体系(二)
    Python设置进程名称
    对话大众软件子公司:中国的智舱、智驾比欧洲早一代
    spring boot +vue 博客系统,开源的资源网站
    【微信小程序开发】之微信授权登陆
    银联扫码支付及静态码回调验签
  • 原文地址:https://blog.csdn.net/2302_78067597/article/details/138008370