centos 更新g(centos7.2)

其实centos 更新g的问题并不复杂,但是又很多的朋友都不太了解centos7.2,因此呢,今天小编就来为大家分享centos 更新g的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

centos优点

概述一下,centos与redhat的区别和优缺点?

CentOS是一种基于RedHat企业级操作系统代码(RHEL)构建的操作系统,因此它与RedHat具有许多共同之处。但是,它们之间有一些主要区别:

1.支持:RedHat是一种商业操作系统,需要订阅才能获得支持和更新。CentOS则是一个社区版的发行版,完全免费,并不需要购买订阅或付费支持计划。

2.更新:RedHat一般会在发布后的数年内提供更新和支持,而CentOS的重要更新则可能要比相应的RHEL版本稍晚一些。

3.品质保证:RedHat是一种经过广泛测试和验证的操作系统,而CentOS则更加注重稳定性和可靠性。

4.应用场景:RedHat更适合高性能、高安全性和商业关键任务。CentOS则更适合个人使用、中小型企业、组织以及一些开发人员等用户群体。

5.社区:CentOS是一个社区驱动的项目,社区用户可以对代码进行修改和分发。RedHat则更多的是企业驱动,用户只能使用其已发布的产品。

以下是他们各自的优缺点:

RedHat的优点:

-专业的技术支持和服务

-更长的支持周期

-一流的安全性和稳定性

-适合企业关键任务使用

RedHat缺点:

-需要购买订阅才能获得支持和更新

-软件更新速度可能较慢

-价格相对较高

CentOS的优点:

-免费使用和更新

-非常稳定和可靠

-社区活跃,有更多的社区支持和帮助

-拥有与RHEL相似的功能和性能

CentOS的缺点:

-不提供商业支持

-更新可能比RHEL版本稍慢

-对于一些生产环境来说,不如RedHat稳定

centos最小化安装优点

(1)Linux系统的第一个进程(pid=1)为init:

Linux操作系统的启动首先从BIOS开始,接下来进入bootloader,由bootloader载入内核,进行内核初始化。内核初始化的最后一步就是启动pid为1的init进程。这个进程是系统的第一个进程。它负责产生其他所有用户进程。

(2)init进程是所有进程的祖先,不可以kill(也kill不掉)

init以守护进程方式存在,是所有其他进程的祖先。init进程非常独特,能够完成其他进程无法完成的任务。Init系统能够定义、管理和控制init进程的行为。它负责组织和运行许多独立的或相关的始化工作(因此被称为init系统),从而让计算机系统进入某种用户预订的运行模式。

(3)大多数linux发行版的init系统是和systemV相兼容的,被称为sysvinit

sysvinit就是systemV风格的init系统,顾名思义,它源于SystemV系列UNIX。它提供了比BSD风格init系统更高的灵活性。是已经风行了几十年的UNIXinit系统,一直被各类Linux发行版所采用。

(1)CentOS5

(2)CentOS6

(1)优点

sysVinit运行非常良好,概念简单清晰,它主要依赖于shell脚本。

(2)缺点

按照一定的顺序执行--启动太慢、很容易夯(hang)住,fstab与nfs挂载问题

说明:CentOS6采用了Upstart技术代替sysvinit进行引导,Upstart对rc.sysinit脚本做了大量的优化,缩短了系统初始化时的启动时间,但是CentOS6为了简便管理员的操作,Upstart的很多特性并没有凸显或者直接不支持,因此在CentOS6中的服务启动脚本还是以原来的sysv的形式提供的,

(1)CentOS6

(2)Ubuntu14

说明:systemd技术的设计目标是克服sysvinit固有的缺点,提高系统的启动速度,和sysvinit兼容,降低迁移成本,

做主要的优点:并行启动

(1)RedHat7/CentOS7

(2)Ubuntu15

方法1(在装系统时修改):

在安装系统的时候配置,修改内核选项:net.ifnames=0biosdevname=0

方法2(装系统时忘记修改,装系统后修改):

(1)编辑网卡

#cd/etc/sysconfig/network-scripts/#mvifcfg-ens160ifcfg-eth0#mvifcfg-ens192ifcfg-eth1#vimifcfg-eth0TYPE=EthernetBOOTPROTO=noneDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=eth0#网卡名称改为eth0DEVICE=eth0#设备名称改为eth0ONBOOT=yesIPADDR=xxx.xxx.x.xxPREFIX=24GATEWAY=xxx.xxx.x.xDNS1=xxx.xxx.x.xIPV6_PEERDNS=yesIPV6_PEERROUTES=yesIPV6_PRIVACY=no注:删掉网卡内的UUID=176582f7-d198-4e4f-aab0-34ab10d17247通用唯一识别码和HWADDR=00:0c:29:a5:3f:39MAC地址这两行。所有网卡都需要修改

(2)编辑grub文件

[root@localhostnetwork-scripts]#cp-a/etc/sysconfig/grub/etc/sysconfig/grub.bak#备份文件[root@localhostnetwork-scripts]#vim/etc/sysconfig/grubGRUB_TIMEOUT=5GRUB_DISTRIBUTOR="$(sed's,release.*$,,g'/etc/system-release)"GRUB_DEFAULT=savedGRUB_DISABLE_SUBMENU=trueGRUB_TERMINAL_OUTPUT="console"GRUB_CMDLINE_LINUX="crashkernel=autonet.ifnames=0biosdevname=0rhgbquiet"#这行添加net.ifnames=0biosdevname=0GRUB_DISABLE_RECOVERY="true"

(3)生成启动菜单

[root@localhostnetwork-scripts]#grub2-mkconfig-o/boot/grub2/grub.cfgGeneratinggrubconfigurationfile...Foundlinuximage:/boot/vmlinuz-3.10.0-514.el7.x86_64Foundinitrdimage:/boot/initramfs-3.10.0-514.el7.x86_64.imgFoundlinuximage:/boot/vmlinuz-0-rescue-7d9a96ac2162427d937e06ede5350e9eFoundinitrdimage:/boot/initramfs-0-rescue-7d9a96ac2162427d937e06ede5350e9e.imgdone

然后重启服务器:reboot,重启服务器后查看网卡信息,

再安装操作系统的时候使用的最小化安装,有很多包没有安装,使用时发现好多命令没有如{vim、wget、tree...等},下面就安装命令,可以根据需求自行调整。

yum-yinstallwgetnet-toolsscreenlsoftcpdumpncmtropenssl-develvimbash-completionlrzsznmaptelnettreentpdateiptables-services

rpm-ivh

需要开机自启动的脚本或者配置,可以放在/etc/rc.local里,但是发现并没有执行,下面我们看一下原因。

#ll/etc/rc.locallrwxrwxrwx1rootroot13Jan523:31/etc/rc.local-rc.d/rc.local#发现是个软连接文件#ls-l/etc/rc.d/rc.local-rw-r--r--1rootroot473Oct2011:07/etc/rc.d/rc.local#问题在这里,没有执行权限#chmod+x/etc/rc.d/rc.local#添加执行权限#ls-l/etc/rc.d/rc.local-rwxr-xr-x1rootroot473Oct2011:07/etc/rc.d/rc.local注:这样添加在rc.local里的开机自启动配置就可以执行了。

linux系统下都有一个默认的超级管理员root,ssh服务的默认端口是22,圈内都知道,那么接下来我们可以修改一下我们的默认端口和禁止root用户远程登录,初步提高一下服务器的安全

1、首先修改ssh的默认端口#sed-i"s#\#Port22#Port53226#g"/etc/ssh/sshd_config#端口可以改成1-65535之间任意端口,建议改成较大的端口,因为一万以内的端口常用的服务有占用,防止冲突(需要注意的是:这个端口要记住,否则连接不上服务器)2、禁止root用户远程登陆a):添加一个普通用户并设置密码(注:这一步必须执行,否则将造成远程连接不上服务器)#useraddxxx#添加xxx用户#echo"pass"|passwd--stdinxxx#给xxx用户设置密码为passb):修改ssh服务配置文件并撑起服务#sed-i's/#PermitRootLoginyes/PermitRootLoginno/'/etc/ssh/sshd_config#systemctlrestartsshd

此时断开当前连接或者新开一个连接就会发现使用root用户连接不上服务器了,莫慌,使用xxx用户连接然后切换到root用户即可

SELinux(Security-EnhancedLinux)是美国国家安全局(NSA)对于强制访问控制的实现,说白了就是安全机制,当然如果会配置的话建议配置更好,这里就介绍一下如何关闭吧,哈哈哈。

#sed-i.bak's#SELINUX=enforcing#SELINUX=disabled#g'/etc/selinux/config#修改配置文件需要重启服务器配置才会生效,如何立即生效那?#setenforce0#关闭SELinux立即生效,重启服务器后配置失效。

防火墙,不解释,内网服务建议关掉,对外开放的服务器需要配置规则,这里先关掉,关于防火墙配置规则等待后续更新。

#systemctlstopfirewalld#临时关闭#systemctldisablefirewalld#永久关闭

装机后主机名默认为localhost,这里个人想更改自己的主机名,在不搭建内网DNS的情况,能通过主机名找到本机的IP地址。

#hostnamectlset-hostnameweb01#设置主机名为web01,这样设置连配置文件里都修改了

#echo"192.168.6.6web01"/etc/hosts#192.168.6.6为本机IP

如果是云服务器,这步优化基本都被作了,如果是物理机需要执行此步

#sed-i.bak's@#UseDNSyes@UseDNSno@g;s@^GSSAPIAuthenticationyes@GSSAPIAuthenticationno@g'/etc/ssh/sshd_config#systemctlrestartsshd

说明:GSSAPIAuthentication参数是用于Kerberos验证的,而对于绝大多数人来说,不可能使用这种验证机制的,所以要注意把他们停掉。然后重启服务会发现远程连接速度有明显提升

设置服务器字符集,国际通用utf-8,根据自身业务来定

#localectlstatus#查看当前字符集SystemLocale:LANG=en_US.UTF-8VCKeymap:usX11Layout:us#localectlset-localeLANG=zh_CN.UTF-8#修改字符集为zh_CN.UTF-8,命令行和配置文件都生效#cat/etc/locale.conf#查看配置文件LANG=zh_CN.UTF-8

CentOS7.2系统默认最大打开文件限制为1024,每建立一个TCP连接既浪费一个限制(这里不细讲,后续会更新详细说明),为了提升服务器性能,所以我们要增加打开文件的最大限制

#ulimit-n#默认大小1024#echo"*softnofile65536"/etc/security/limits.conf#xi修改最大限制为65535#echo"*hardnofile65536"/etc/security/limits.conf

时间同步,这里不多说了,向OpenStack的所有节点的时间不一致会导致创建不了虚拟机,也会有其他的问题,不多说,我们生产上所有服务器时间都是同步的。

#yuninstall-yntpdate#前面已经装过了#ntpdatentp1.aliyun.com#这里同步的是aliyun的时间,公司内部建议自己搭建时间服务器(减少流量、广播等),然后加入crontab即可,内网时间服务器等待后续更新。

TCP断开连接时会有一个等待时间为2msl(60秒)对应的状态为TIME_WAIT,如果业务并发较大的话会有很多的TIME_WAIT状态(详细等待后续更新),如何来解决那?

#cat/proc/sys/net/ipv4/tcp_timestamps#时间戳,默认是开启的#cat/proc/sys/net/ipv4/tcp_tw_reuse#连接复用,tcp_timestamps是开启的状态下是可以开启的,1为开启,默认是关闭的状态。#cat/proc/sys/net/ipv4/tcp_tw_recycle#socket快速回收,net网络状态下不可以开启,负载均衡上不可以打开,读者根据自身情况开启或关闭,默认为关闭状态。

好了,服务器优化就介绍到这里,以上优化不分先后顺序!!

Centos7系统有什么特点?

CentOS7是一款基于RedHatEnterpriseLinux(RHEL)开发的免费开源操作系统。它具有以下特点:

兼容性高:CentOS7兼容大多数硬件,可以运行在多种计算机硬件平台上,包括x86、x64和ARM等处理器体系结构。

稳定性好:CentOS7采用了RHEL的源代码,在稳定性方面有很大优势。

安全性高:CentOS7安装时会自动开启防火墙和SELinux,可以有效保护系统安全。

支持软件包管理:CentOS7采用了YUM包管理器,可以方便地安装、升级和卸载软件包。

网络功能强大:CentOS7提供了丰富的网络功能,包括虚拟网络、Bonding、VLAN等,可以满足各种网络需求。

免费开源:CentOS7是一款免费开源的操作系统,可以免费下载使用。

CentOS有哪些常见的处理目录的命令

CentOS基础命令大全

1.关机(系统的关机、重启以及登出)的命令

shutdown-h now关闭系统(1)

init 0关闭系统(2)

telinit 0关闭系统(3)

shutdown-h hours:minutes&按预定时间关闭系统

shutdown-c取消按预定时间关闭系统

shutdown-r now重启(1)

reboot重启(2)

logout注销

2.查看系统信息的命令

arch显示机器的处理器架构(1)

uname-m显示机器的处理器架构(2)

uname-r显示正在使用的内核版本

dmidecode-q显示硬件系统部件-(SMBIOS/ DMI)

hdparm-i/dev/hda罗列一个磁盘的架构特性

hdparm-tT/dev/sda在磁盘上执行测试性读取操作

cat/proc/cpuinfo显示CPU info的信息

cat/proc/interrupts显示中断

cat/proc/meminfo校验内存使用

cat/proc/swaps显示哪些swap被使用

cat/proc/version显示内核的版本

cat/proc/net/dev显示网络适配器及统计

cat/proc/mounts显示已加载的文件系统

lspci-tv罗列 PCI设备

lsusb-tv显示 USB设备

date显示系统日期

cal 2007显示2007年的日历表

date 041217002007.00设置日期和时间-月日时分年.秒

clock-w将时间修改保存到 BIOS

3.文件和目录操作命令

cd/home进入'/ home'目录'

cd..返回上一级目录

cd../..返回上两级目录

cd进入个人的主目录

cd~user1进入个人的主目录

cd-返回上次所在的目录

pwd显示工作路径

ls查看目录中的文件

ls-F查看目录中的文件

ls-l显示文件和目录的详细资料

ls-a显示隐藏文件

mkdir dir1创建一个叫做'dir1'的目录'

mkdir dir1 dir2同时创建两个目录

mkdir-p/tmp/dir1/dir2创建一个目录树

rm-f file1删除一个叫做'file1'的文件'

rmdir dir1删除一个叫做'dir1'的目录'

rm-rf dir1删除一个叫做'dir1'的目录并同时删除其内容

rm-rf dir1 dir2同时删除两个目录及它们的内容

mv dir1 new_dir重命名/移动一个目录

cp file1 file2复制一个文件

cp dir/*.复制一个目录下的所有文件到当前工作目录

cp-a/tmp/dir1.复制一个目录到当前工作目录

cp-a dir1 dir2复制一个目录

ln-s file1 lnk1创建一个指向文件或目录的软链接

ln file1 lnk1创建一个指向文件或目录的物理链接

touch file1创建一个文件

4.文件搜索命令

find/-name file1从'/'开始进入根文件系统搜索文件和目录

find/-user user1搜索属于用户'user1'的文件和目录

find/home/user1-name \*.bin在目录'/ home/user1'中搜索带有'.bin'结尾的文件

find/usr/bin-type f-atime+100搜索在过去100天内未被使用过的执行文件

find/usr/bin-type f-mtime-10搜索在10天内被创建或者修改过的文件

locate \*.ps寻找以'.ps'结尾的文件-先运行'updatedb'命令

whereis file显示一个二进制文件、源码或man的位置

which file显示一个二进制文件或可执行文件的完整路径

5.查看文件内容

cat file1从第一个字节开始正向查看文件的内容

tac file1从最后一行开始反向查看一个文件的内容

more file1查看一个长文件的内容

less file1类似于'more'命令,但是它允许在文件中和正向操作一样的反向操作

head-2 file1查看一个文件的前两行

tail-2 file1查看一个文件的最后两行 5.挂载命令

mount/dev/hda2/mnt/hda2挂载一个叫做hda2的盘(注:确定目录'/ mnt/hda2'已经存在)

umount/dev/hda2卸载一个叫做hda2的盘(先从挂载点'/ mnt/hda2'退出)

fuser-km/mnt/hda2当设备繁忙时强制卸载

umount-n/mnt/hda2运行卸载操作而不写入/etc/mtab文件(当文件为只读或当磁盘写满时非常有用)

mount/dev/fd0/mnt/floppy挂载一个软盘

mount/dev/cdrom/mnt/cdrom挂载一个光盘

mount/dev/hdc/mnt/cdrecorder挂载一个cdrw或dvdrom

mount/dev/hdb/mnt/cdrecorder挂载一个cdrw或dvdrom

mount-o loop file.iso/mnt/cdrom挂载一个文件或ISO镜像文件

mount-t vfat/dev/hda5/mnt/hda5挂载一个Windows FAT32文件系统

mount/dev/sda1/mnt/usbdisk挂载一个usb捷盘或闪存设备

mount-t smbfs-o username=user,password=pass//WinClient/share/mnt/share挂载一个windows网络共享

6.磁盘空间操作的命令

df-h显示已经挂载的分区列表

ls-lSr|more以尺寸大小排列文件和目录

du-sh dir1估算目录'dir1'已经使用的磁盘空间'

du-sk*| sort-rn以容量大小为依据依次显示文件和目录的大小

7.用户和群组相关命令

groupadd group_name创建一个新用户组

groupdel group_name删除一个用户组

groupmod-n new_group_name old_group_name重命名一个用户组

useradd-c"Name Surname"-g admin-d/home/user1-s/bin/bash user1创建一个属于"admin"用户组的用户

useradd user1创建一个新用户

userdel-r user1删除一个用户('-r'同时删除除主目录)

passwd user1修改一个用户的口令(只允许root执行)

chage-E 2005-12-31 user1设置用户口令的失效期限

ls-lh显示权限

chmod 777 directory1设置目录的所有人(u)、群组(g)以及其他人(o)以读(r)、写(w)和执行(x)的权限

chmod 700 directory1删除群组(g)与其他人(o)对目录的读写执行权限

chown user1 file1改变一个文件的所有人属性,为use1。

chown-R user1 directory1改变一个目录的所有人属性并同时改变改目录下所有文件的属性都为use1所有

chgrp group1 file1改变文件的群组为group1

chown user1:group1 file1改变一个文件的所有人和群组属性,所属组为group1,用户为use1。

find/-perm-u+s罗列一个系统中所有使用了SUID控制的文件

chmod u+s/bin/file1设置一个二进制文件的 SUID位-运行该文件的用户也被赋予和所有者同样的权限

chmod u-s/bin/file1禁用一个二进制文件的 SUID位

chmod g+s/home/public设置一个目录的SGID位-类似SUID,不过这是针对目录的

chmod g-s/home/public禁用一个目录的 SGID位

chmod o+t/home/public设置一个文件的 STIKY位-只允许合法所有人删除文件

chmod o-t/home/public禁用一个目录的 STIKY位

8.打包和解压缩文件的命令

bunzip2 file1.bz2解压一个叫做'file1.bz2'的文件

bzip2 file1压缩一个叫做'file1'的文件

gunzip file1.gz解压一个叫做'file1.gz'的文件

gzip file1压缩一个叫做'file1'的文件

gzip-9 file1最大程度压缩

rar a file1.rar test_file创建一个叫做'file1.rar'的包

rar a file1.rar file1 file2 dir1打包'file1','file2'以及目录'dir1'

rar x file1.rar解rar包

unrar x file1.rar解rar包

tar-cvf archive.tar file1创建一个非压缩的tar包

tar-cvf archive.tar file1 file2 dir1创建一个包含了'file1','file2''dir1'的包

tar-tf archive.tar显示一个包中的内容

tar-xvf archive.tar释放一个包

tar-xvf archive.tar-C/tmp将压缩包释放到/tmp目录下(-c是指定目录)

tar-cvfj archive.tar.bz2 dir1创建一个bzip2格式的压缩包

tar-xvfj archive.tar.bz2解压一个bzip2格式的压缩包

tar-cvfz archive.tar.gz dir1创建一个gzip格式的压缩包

tar-xvfz archive.tar.gz解压一个gzip格式的压缩包

zip file1.zip file1创建一个zip格式的压缩包

zip-r file1.zip file1 file2 dir1将几个文件和目录同时压缩成一个zip格式的压缩包

unzip file1.zip解压一个zip格式压缩包

9.关于RPM包的命令

rpm-ivh package.rpm安装一个rpm包

rpm-ivh--nodeeps package.rpm安装一个rpm包而忽略依赖关系警告

rpm-U package.rpm更新一个rpm包但不改变其配置文件

rpm-F package.rpm更新一个确定已经安装的rpm包

rpm-e package_name.rpm删除一个rpm包

rpm-qa显示系统中所有已经安装的rpm包

rpm-qa| grep httpd显示所有名称中包含"httpd"字样的rpm包

rpm-qi package_name获取一个已安装包的特殊信息

rpm-ql package_name显示一个已经安装的rpm包提供的文件列表

rpm-qc package_name显示一个已经安装的rpm包提供的配置文件列表

rpm-q package_name--whatrequires显示与一个rpm包存在依赖关系的列表

rpm-q package_name--whatprovides显示一个rpm包所占的体积

rpm-q package_name--scripts显示在安装/删除期间所执行的脚本l

rpm-q package_name--changelog显示一个rpm包的修改历史

rpm-qf/etc/httpd/conf/httpd.conf确认所给的文件由哪个rpm包所提供

rpm-qp package.rpm-l显示由一个尚未安装的rpm包提供的文件列表

rpm--import/media/cdrom/RPM-GPG-KEY导入公钥数字证书

rpm--checksig package.rpm确认一个rpm包的完整性

rpm-qa gpg-pubkey确认已安装的所有rpm包的完整性

rpm-V package_name检查文件尺寸、许可、类型、所有者、群组、MD5检查以及最后修改时间

rpm-Va检查系统中所有已安装的rpm包-小心使用

rpm-Vp package.rpm确认一个rpm包还未安装

rpm2cpio package.rpm| cpio--extract--make-directories*bin*从一个rpm包运行可执行文件

rpm-ivh/usr/src/redhat/RPMS/`arch`/package.rpm从一个rpm源码安装一个构建好的包

rpmbuild--rebuild package_name.src.rpm从一个rpm源码构建一个 rpm包

10.YUM软件包升级器

yum install package_name下载并安装一个rpm包

yum localinstall package_name.rpm将安装一个rpm包,使用你自己的软件仓库为你解决所有依赖关系

yum update package_name.rpm更新当前系统中所有安装的rpm包

yum update package_name更新一个rpm包

yum remove package_name删除一个rpm包

yum list列出当前系统中安装的所有包

yum search package_name在rpm仓库中搜寻软件包

yum clean packages清理rpm缓存删除下载的包

yum clean headers删除所有头文件

yum clean all删除所有缓存的包和头文件

CentOS7常用命令集合不过其实大多和DOS是一样的,只是命令的表达上可能有点儿不一样,毕竟这些都不是一家出来的嘛~

解决centos7.2中磁盘iowait过高(centos7启动后盘符错位问题)

(一)简述

每天都收到磁盘iowait告警信息,尤其是日志服务器在进行大量的读写操作过程中,从而造成系统处于崩溃边缘,为查找磁盘iowait由于什么原因造成的以及后续的系统的优化点。centos有许多查找问题的工具,也有高级的。

I/O Wait就是一个需要使用高级的工具来debug的问题,当然也有许多基本工具的高级用法。I/O wait的问题难以定位的原因是因为我们有很多工具可以告诉你说I/O受限了,但是并没有告诉你具体是哪些进程们引起的。

具体的思路如下:top。查看由cpu一行浪费在iowait上的cpu百分比=iostat-x 2 5查看某块磁盘正在被写入= iotop查找最高的磁盘I/O对应的进程= lsof-p pid查看通过一个进程打开所有文件或打开一个文件的所有进程。

(二)具体步骤如下:

(1)通过top命令来确认是否是I/O导致系统缓慢。

[root@iZ23iod5vslZ~]# toptop- 15:38:32 up 40 days, 5:59, 3 users, load average: 0.00, 0.01, 0.05Tasks: 128 total, 1 running, 127 sleeping, 0 stopped, 0 zombieCpu(s): 0.4 us, 0.2 sy, 0.0 ni, 99.2 id, 98 wa, 0.0 hi, 0.0 si, 0.1 stKiB Mem: 32520424 total, 31492136 used, 1028288 free, 412772 buffersKiB Swap: 0 total, 0 used, 0 free. 25902892 cached Mem PID USER PR NI VIRT RES SHR S CPU MEM TIME+ COMMAND 18988 root 20 0 11.647g 3.611g 7896 S 2.7 11.6 507:57.30 java 28 root 20 0 0 0 0 S 0.3 0.0 6:43.31 rcuos/3 1 root 20 0 49556 3412 1912 S 0.0 0.0 0:14.60 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:48.28 ksoftirqd/0 5 root 0-20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 7 root rt 0 0 0 0 S 0.0 0.0 0:00.83 migration/0 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/0 10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/1 11 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/2 12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/3 13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/4 14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/5 15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/6 16 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/7

从Cpu一行我们可以看到浪费在I/O Wait上的CPU百分比;这个数字越高说明越多的CPU资源在等待I/O权限.具体的解释如下:

0.4 us用户空间占用CPU的百分比。

0.2 sy内核空间占用CPU的百分比。

0.0 ni改变过优先级的进程占用CPU的百分比

2 id空闲CPU百分比

98 wa IO等待占用CPU的百分比

0.0 hi硬中断(Hardware IRQ)占用CPU的百分比

0.0 si软中断(Software Interrupts)占用CPU的百分比

在这里CPU的使用比率和windows概念不同,如果你不理解用户空间和内核空间,需要充充电了

(2)通过iostat-x 3 3查看那块磁盘正在被写入。

[root@iZ23iod5vslZ~]# iostat-x 3 3Linux 3.10.0-123.9.3.el7.x86_64(iZ23iod5vslZ) 08/14/2017 _x86_64_(4 CPU)avg-cpu: user nice system iowait steal idle 0.70 0.00 0.16 0.75 0.05 98.34Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm utilxvda 0.00 21.18 0.32 18.33 9.94 195.06 21.98 0.08 4.11 11.44 3.98 1.54 2.88xvdb 0.00 15.21 1.23 1.98 38.41 68.76 66.70 0.08 25.48 3.59 39.10 1.09 0.35xvdc 0.00 0.07 0.00 0.91 0.00 36.25 79.43 0.10 106.88 12.53 106.92 1.33 0.12avg-cpu: user nice system iowait steal idle 0.75 0.00 0.17 0.08 0.08 98.91Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm utilxvda 0.00 2.33 0.00 0.67 0.00 12.00 36.00 0.00 5.50 0.00 5.50 5.50 0.37xvdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00xvdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00avg-cpu: user nice system iowait steal idle 0.75 0.00 0.17 0.00 0.00 99.08Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm utilxvda 0.00 3.33 0.00 1.67 0.00 34.67 41.60 0.01 3.00 0.00 3.00 1.60 100.27xvdb 0.00 9.00 0.00 1.67 0.00 42.67 51.20 0.01 5.40 0.00 5.40 1.80 0.30xvdc 0.00 0.33 0.00 0.67 0.00 4.00 12.00 0.00 2.00 0.00 2.00 2.00 0.13

每隔三秒更新一次,一共打印了三次。-x时打印出扩展选项。第一次打印的信息可以被忽略,剩下的报告,都是基于上一次间隔的时间打印出来。

上述的列子中xvda的 util(利用率)是100.27,有进程往磁盘中写入数据。

(3)通过iotop查找高I/O对应的进程

[root@iZ23iod5vslZ~]# iotopTotal DISK READ: 0.00 B/s| Total DISK WRITE: 15.67 K/sActual DISK READ: 0.00 B/s| Actual DISK WRITE: 0.00 B/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND 18793 be/4 root 0.00 B/s 3.92 K/s 0.00 0.00 java-Djava.util.logging.config.file=/usr/to~p org.apache.catalina.startup.Bootstrap start18987 be/4 root 0.00 B/s 3.92 K/s 0.00 0.00 cronolog/guojinbao/tomcat/logs/catalina.Y-m-d.out18796 be/4 root 0.00 B/s 3.92 K/s 0.00 0.00 java-Djava.util.logging.config.file=/usr/to~p org.apache.catalina.startup.Bootstrap start13193 be/4 root 0.00 B/s 3.92 K/s 0.00 0.00 java-Djava.util.logging.config.file=/usr/to~p org.apache.catalina.startup.Bootstrap start 1 be/4 root 0.00 B/s 0.00 B/s 0.00 0.00 systemd--switched-root--system--deserialize 22 2 be/4 root 0.00 B/s 0.00 B/s 0.00 0.00 [kthreadd] 3 be/4 root 0.00 B/s 0.00 B/s 0.00 0.00 [ksoftirqd/0]16388 be/4 root 0.00 B/s 0.00 B/s 0.00 0.00 AliYunDun 5 be/0 root 0.00 B/s 0.00 B/s 0.00 0.00 [kworker/0:0H]16390 be/4 root 0.00 B/s 0.00 B/s 0.00 0.00 AliYunDun 7 rt/4 root 0.00 B/s 0.00 B/s 0.00 0.00 [migration/0] 8 be/4 root 0.00 B/s 0.00 B/s 0.00 0.00 [rcu_bh] 9 be/4 root 0.00 B/s 0.00 B/s 0.00 0.00 [rcuob/0] 10 be/4 root 0.00 B/s 0.00 B/s 0.00 0.00 [rcuob/1] 11 be/4 root 0.00 B/s 0.00 B/s 0.00 0.00 [rcuob/2]

从上述的例子中可以看出进程号为cronolog18987占用了大量的磁盘IO

(4)通过lsof-p pid查找由那个文件引起的IOwait

[root@iZ23iod5vslZ~]# lsof-p 18987COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEcronolog 18987 root cwd DIR 202,17 20480 2400258/guojinbao/tomcat/logscronolog 18987 root rtd DIR 202,1 4096 2/cronolog 18987 root txt REG 202,1 48627 152798/usr/local/sbin/cronologcronolog 18987 root mem REG 202,1 2107600 132826/usr/lib64/libc-2.17.socronolog 18987 root mem REG 202,1 160240 132819/usr/lib64/ld-2.17.socronolog 18987 root 0r FIFO 0,8 0t0 42614018 pipecronolog 18987 root 1w CHR 1,3 0t0 1028/dev/nullcronolog 18987 root 2u CHR 136,0 0t0 3/dev/pts/0(deleted)cronolog 18987 root 3w REG 202,17 5704875979 2400280/guojinbao/tomcat/logs/catalina.2017-08-14.out

lsof命令可以展示一个进程打开的所有文件,或者打开一个文件的所有进程。从这个列表中,我们可以找到具体是什么文件被写入,根据文件的大小和/proc中io文件的具体数据.

为了确认我们的怀疑,我们可以使用/proc文件系统,每个进程目录下都有一个叫io的文件,里边保存这和iotop类似的信息

[root@iZ23iod5vslZ~]# cat/proc/18987/io rchar: 58891582418wchar: 58891579778syscr: 46556085syscw: 46556077read_bytes: 212992write_bytes: 59580235776cancelled_write_bytes: 0

read_bytes和write_bytes是这个进程从磁盘读写的字节数。这个例子中cronolog读取了212992byte(0.2M)数据,写入了59580235776bytes(55.4G)数据到磁盘上。

(5)通过df-h/guojinbao来查看服务器那块磁盘的根目录

[root@iZ23iod5vslZ~]# df-h/guojinbao/Filesystem Size Used Avail Use Mounted on/dev/xvdb1 45G 38G 4.7G 89/guojinbao

最后,通过以上的信息我们可以放心的说lsof的结果就是我们要查找的文件

阅读剩余
THE END