Linux系统架构与运维实战(txt+pdf+epub+mobi电子书下载)


发布时间:2020-08-04 12:54:22

点击下载

作者:明哲

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Linux系统架构与运维实战

Linux系统架构与运维实战试读:

前言

20世纪90年代初,Linux操作系统诞生,随着虚拟化、云计算、大数据、容器技术的出现和人工智能时代的来临,Linux以迅雷不及掩耳之势飞速发展,占据着整个服务器行业的半壁江山,但同时也面临着巨大的挑战。当今互联网企业的需求多种多样、业务复杂且难度大,这都需要使用合理的管理模式来保证 Linux 服务器的安全、稳定和高可用性。

虚拟化一般分为硬件级虚拟化(Hardware-Level-Virtualization)和操作系统级虚拟化(OS-Level-Virtualization)。硬件级虚拟化是运行在硬件上的虚拟化技术,其管理软件是Hypervisor或Virtual Machine Monitor,需要模拟一个完整的操作系统,也就是通常所说的基于 Hyper-V 的虚拟化技术,VMWare、Xen、VirtualBox、亚马逊AWS和阿里云用的都是这种技术。操作系统级虚拟化是运行在操作系统上的,模拟的是运行在操作系统上的多个不同的进程,并将其封装在一个密闭的容器里,也称为容器化技术。Docker 正是容器虚拟化中目前较流行的一种实现。

我们知道,销售传统的服务器或计算机主机基本上都是一锤子买卖,商家销售出去之后基本就很难再从消费者身上获得其他收入。随着云概念的出现,越来越多的商家意识到卖硬件是不可能获得长期利润的,只有服务才能持续盈利。因此,在2010 年左右,出现了大批提供云服务的公司,大体可以归为下面几种类型。

· 基础设施即服务(Infrastructure as a Service,IaaS),通常指在云端为用户提供基础设施,如虚拟机、服务器、存储、负载均衡、网络等。亚马逊的AWS就是这个领域的佼佼者,在国内则以阿里云为首。

· 平台即服务(Platform as a Service,PaaS),通常指在云端为用户提供可执行环境、数据库、网站服务器、开发工具等。国外的 OpenShift、Red Hat、Cloudera Cloud Foundry、Google App Engine 都是这个领域的佼佼者,当然还有一个非常有名的公司,那就是 dotCloud。

· 软件即服务(Software as a Service,SaaS),通常指在云端为用户提供软件,如CRM系统、邮件系统、在线协作、在线办公等。国内的有道、麦客、Tower都是这个领域的产品。

一般认为以上三种类型是最基本的云服务模式,其分层结构如图1所示。图1

目前市场上 Linux 相关图书众多,但是普遍带有局限性,要么只有理论和基础知识,要么侧重于介绍软件的安装,大多偏离了企业生产场景。

本书以RHEL/CentOS 7为背景,从基础知识讲起,逐步深入,结合大量的实际应用案例,使读者迅速掌握 Linux 运维技术的经验和各种使用技巧,从而达到提升技术能力的效果。

轻松注册成为博文视点社区用户(www.broadview.com.cn),扫码直达本书页面。

· 提交勘误:您对书中内容的修改意见可在 提交勘误 处提交,若被采纳,将获赠博文视点社区积分(在您购买电子书时,积分可用来抵扣相应金额)。

· 交流互动:在页面下方 读者评论 处留下您的疑问或观点,与我们和其他读者一同学习交流。

页面入口:http://www.broadview.com.cn/32533第1章 Linux日常运维管理

作为一名运维工程师或系统管理员,对系统不了解就不能进行问题排查,例如查看系统资源的耗费情况。对系统进行排查会用到各种各样的命令。1.1 w命令

使用w命令可以监控系统的状态,运行w命令后会列出一些信息,代码如下,“14:51:32”表示当前时间;“up 11:17”表示系统启动11小时17分钟;“1 user”表示目前有一个用户登录,可以从第三行查看登录用户是谁,下面的代码中显示的用户是root;FROM表示从哪里登录,IP地址是多少;TTY表示登录的终端是哪一个(pts/0 表示用远程管理工具登录,在 VMware 终端窗口登录显示 tty1,有 tty1~tty6共6个终端);load average表示系统负载,load average后面有三个数字,分别表示1分钟、5分钟和15分钟时间段内系统的负载值。具体来说,第一个数字表示1分钟内使用CPU的活动进程有多少个,该数值为平均值,数值可以是零点几,也可以是一百多;当前值为0表示系统没有负载,也就是系统中没有活动的进程,说明系统处于空闲状态,该状态对服务器来说比较浪费。数值的理想状态取决于系统的 CPU数量(该数量针对的是逻辑CPU,并非物理CPU。例如,Intel、AMD都会有几颗CPU,每颗CPU又有很多逻辑CPU),CPU颗数可以在/proc/cpuinfo中进行查看(processor表示CPU颗数,3表示该CPU为4颗)。1分钟内数字为4是系统的最佳状态。

运行uptime命令后显示的信息与运行w命令后显示的第一行信息相同,操作命令如下。1.2 vmstat命令

使用w命令可查看系统的负载值,当负载值大于CPU核数时,说明CPU不够用。是什么原因导致CPU不够用?此时进程在做什么?都有哪些任务在使用CPU?若想进一步查看系统的瓶颈在哪里,可运行 vmstat 命令。使用 vmstat 命令可查看CPU、内存、虚拟磁盘、交换分区、I/O磁盘和系统进程的信息,操作命令如下。

在vmstat命令后加数字1表示每秒动态显示一次,不停地进行显示,结束需按Ctrl+C组合键,操作命令如下。

还可以用vmstat命令设置每秒显示一次、共显示2次,或者每3秒显示一次、共显示3次,操作命令如下。

在运行 vmstat 命令后显示的信息中,需要关注 r、b、swpd、si、so、bi、bo、us、wa这几列。其中,r(run)表示有多少个进程处于运行状态。

b(block)表示被CPU之外的资源阻断了(如网络、硬盘等),处于等待状态。

swpd表示内存和交换分区,数字处于静止状态时没有任何问题,一旦数值不停变化就需要额外注意,说明交换分区和内存在频繁地交换数据,内存空间不够使用,需增加交换分区的内存。

si、so与swpd是关联的,如果swpd的数值在不断变化,那么si和so的数值也会随之变化。si 表示有多少 Kb(单位为 Kb)的数据从交换分区进入到内存中。so表示有多少Kb的数据从内存进入到交换分区中。

bi、bo与磁盘是相关的。bi表示磁盘读的数据量有多少,bo表示磁盘写的数据量有多少。bi、bo列的数值若在不停地变化,说明磁盘在不停地读写数据。

us表示用户使用的资源占CPU的百分比,该数值不会超过100%,如果该数值长时间大于 50%,则说明系统资源不够用。sy表示系统本身的进程/服务占 CPU的百分比。id表示空闲CPU的百分比。us、sy、id三者相加等于100%。

wa表示有多少个进程处于等待状态,类似于b列,单位是百分比,该列数值过大说明CPU不够用。1.3 top命令

使用top命令可以查看具体哪个进程出现了问题,运行top命令后会动态显示出结果,该结果每3秒变化一次,如图1-1所示。

在图1-1中,执行top命令后的第一行显示的内容和运行 w命令后第一行显示的内容一致。

第二行的 total 表示有多少个进程,running 表示有多少个正在运行的进程,sleeping 表示有多少个进程处于睡眠状态,stopped 表示有多个进程处于停止状态,zombie表示有多少个进程处于僵尸状态(主进程被意外终止,留下一些子进程)。

第三行是 CPU的百分比。us、sy、id三者数值总和等于 100%。ni表示改变过优先级的进程占用CPU的百分比,wa表示IO等待占用CPU的百分比,hi表示硬中断(Hardware IRQ)占用CPU的百分比,si表示软中断(Software Interrupts)占用CPU的百分比。

第四行和第五行是内存使用情况,Mem 表示物理内存,Swap 表示交换分区。一般关注total(总内存)、free(剩余内存)、used(使用内存)和buff/cache(缓冲/缓存)。图1-1

第五行下面的数据是需要时刻关注的,默认按照 CPU 使用率从高到低进行排序。若想按照内存大小进行排序,可按大写M键,使用内存最多的为firewalld,如图1-2所示。若想返回继续按CPU使用率进行排序,可按大写P键。按数字1键可显示所有的CPU使用情况,如图1-3所示。按小写字母q键可退出。

PID:进程ID。

USER:进程所有者。

PR:进程优先级。

NI:nice值,负值表示高优先级,正值表示低优先级。

VIRT:进程使用的虚拟内存总量,单位为Kb,VIRT=Swap+RES。

RES:进程使用的、未被换出的物理内存大小,单位为Kb,RES=CODE+DATA。

SHR:共享内存大小,单位为Kb。

S:进程状态,D为不可中断的睡眠状态,R为运行状态,S为睡眠状态,T为跟踪/停止状态,Z为僵尸状态。

%CPU:上次更新到现在的CPU时间占用百分比。

%MEM:进程使用的物理内存百分比。

TIME+:进程使用的CPU时间总计,单位为1/100秒。

COMMAND:进程名称(命令名/命令行)。图1-2图1-3

使用-c选项可查看具体的命令全局路径,如图1-4所示。图1-4

使用-bn1 选项可静态、一次性地把所有进程信息显示出来,该用法适合在写脚本时采用,操作命令如下。

运行top命令时通过某些按键可增加特效,按小写b键可打开/关闭加亮效果,如图1-5所示。

按小写x键可打开/关闭排序列的加亮效果,如图1-6所示。

通过按Shift+>组合键或Shift+<组合键可以向右或向左定位排序列,如定位到PID列,如图1-7所示。图1-5图1-6图1-7

按小写f键可进入top命令的另一个视图,在这里可编排基本视图中的显示字段,如图1-8所示。按Esc键可返回基本视图。图1-81.4 sar命令

使用 sar 命令可以非常全面地分析系统状态,在日常工作中一般用来查看网卡流量的使用情况。sar命令和w命令一样都可以用于查看CPU、内存、磁盘的状况。sar命令被运维工程师称为Linux操作系统中的“瑞士军刀”,功能非常强大。

系统中若没有sar命令,则需要使用yum命令安装,直接运行sar命令会提示“无法打开/var/log/sa/sa15:没有这样的文件或目录”。提示这个错误是因为在sar命令中没有加具体选项参数时,会默认调用Linux系统中sar命令保留的历史文件所在的目录。sar 命令有一个特性,每 10 分钟就会把系统的状况过滤一遍并保存在文件中,该文件存在/var/log/sa/目录下,刚安装完 sar 命令还没有生成历史文件,等待 10 分钟再去查看该目录,就会发现已生成文件,操作命令如下。

使用-n DEV选项可查看网卡流量的使用状况,后面可加数字参数,如每隔1秒显示一次,共显示3次,如图1-9所示,各列的含义如下。

第一列:显示当前时间。

第二列:显示网卡信息,输出的结果为两块网卡,即lo和ens33。

第三列:接收到的数据包,单位为个。

第四列:发送出去的数据包,单位为个。

第五列:接收到的数据量,单位为Kb。

第六列:发送出去的数据量,单位为Kb。图1-9

10分钟后再次运行sar命令就不会报错了,因为在/var/log/sa目录下生成了sa15文件,操作命令如下。

在/var/log/sa/目录下不仅有 sa15 文件,还有 sar15 文件。sa15 文件是二进制文件,不能使用cat命令进行查看,只能用sar-f命令加载此类文件;sar15文件可以用cat命令进行查看。

在-n DEV选项后加上-f选项可查看指定的历史数据文件,如查看当天的历史数据,如图1-10所示,/var/log/sa/目录下最多保留一个月的历史数据文件。图1-10

使用-q选项可以查看系统负载信息(该方法等同于运行w命令),用sar-q命令可查看系统负载的历史数据,例如,设置每秒显示1次、共显示3次,操作命令如下。

使用-b选项可以查看系统磁盘数据信息,如每秒显示1次、共显示3次,操作命令如下。1.5 nload命令

使用nload命令可以监控网卡流量,但是Linux操作系统中没有该命令,若想使用,需要用yum命令进行安装,在安装nload命令前要先安装epel扩展源,操作命令如下。

安装完成后直接运行nload命令,按Enter键后会在终端窗口动态显示网卡实时信息,如图 1-11 所示。第一行所显示的信息为网卡信息和 IP 地址,按向右的方向键可切换网卡。Incoming表示进入网卡的流量,Outgoing表示从该网卡流出的流量。每部分都有 Curr(当前流量)、Avg(平均流量)、Min(最小流量)、Max(最大流量)和Ttl(总流量)。按Q键可退出该窗口。图1-111.6 监控I/O性能

使用iostat和iotop命令可以查看磁盘的使用情况,在日常运维工作中,除CPU和内存外,磁盘I/O也是非常重要的指标。有时CPU和内存明明有剩余,但系统负载仍然很高,用vmstat命令查看时发现b列和 wa列数值较大,说明系统磁盘有瓶颈。若想更详细地查看磁盘状态,就需要使用上述两个命令。

在安装sysstat包时会默认安装iostat命令,iostat命令和sar命令同在一个软件包中。运行iostat命令后可查看磁盘状况,如图1-12所示。在iostat命令后加数字1运行的效果和运行vmstat 1的效果一致,都会每隔1秒显示一次。图1-12

使用-x选项可以显示和I/O相关的扩展数据。有一个非常重要的指标%util,如图1-13所示。%util表示在统计时间内所有处理I/O的时间除以总共统计时间的百分比。例如,统计时间为1秒,该设备有0.8秒在处理I/O,有0.2秒闲置,那么该设备的%util=0.8/1×100%=80%。该参数表示设备的繁忙程度。一般情况下,如果该参数是100%,则表示设备已经满负荷运行了(如果是多磁盘,即使%util是100%,也未必会出现瓶颈,因为磁盘有并发能力)。图1-13

磁盘I/O频繁工作时,并不知道是哪个进程在频繁地读写,此时可用iotop命令进行查看。Linux系统中默认没有iotop命令,需要使用yum命令安装,操作命令如下。

iotop 命令和 top 命令相似,都是动态显示进程信息的。运行 iotop 命令后即可查看具体是哪个进程使用的I/O较多,如图1-14所示。图1-14

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载