Linux系统排查3——I/O篇
当磁盘无法写入的时候,一般有以下可能:
- 文件系统只读
- 磁盘已满
- I节点使用完
一、 遇到只读的文件系统
文件系统自动设置成只读可能是系统自我保护的一种机制,因此需要实现弄清究竟是什么原因造成了文件系统的只读。如果想要改变文件系统的只读属性,重新挂载目标分区即可。
例1. 重新挂载改变/home分区的读写属性
# mount -o remount, rw /home
-o 选项后面接了两个mount 命令的专有选项,remount是指重新挂载指定文件系统,rw指定重新挂载时的读写属性,该命令不改变挂载点,只是改变指定分区的读写属性。
二、 磁盘满
磁盘使用率、剩余空间等可以使用 df 命令查看,
例2. 查看当前已挂载的所有分区及使用情况
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 133G .6G 118G % /
none .0K .0K % /sys/fs/cgroup
udev .9G .0K .9G % /dev
tmpfs .2G 868K .2G % /run
none 5.0M 5.0M % /run/lock
none .9G .9G % /run/shm
none 100M 100M % /run/user
/dev/sda1 93M 3.4M 90M % /boot/efi
-h 自动以适合阅读的单位显示,该例子的磁盘空间显然还很充分。
有时候会发现,df 结果中的使用空间 "Used" 和容量 "Size" 存在一定的差距,但是可用空间 "Avail" 却所剩无几,同时使用率 “Use %”居高不下,甚至达到100%。这种情况并不奇怪,因为Linux为了避免系统存储空间完全占用导致的root用户无法登陆,为root用户保留了一块保留区块,供磁盘使用率过高时root用户登陆系统完成必要的清理操作。仅有root用户可以在这些保留块中写入数据,可以通过 tune2fs 工具查看保留块的大小。
例3. 使用tune2fs查看系统保留块
# tune2fs -l /dev/sda2 | grep -i "block"
Block count:
Reserved block count:
Free blocks:
First block:
Block size:
Reserved GDT blocks:
Blocks per group:
Inode blocks per group:
Flex block group size:
Reserved blocks uid: (user root)
Reserved blocks gid: (group root)
Journal backup: inode blocks
其中,第3行显示系统保留块的数量,第6行显示每块的大小(4KB),二者相乘可以计算保留区块的总大小;
第11, 12行显示能对保留区块执行写入操作的用户和用户组编号,这里都是root;
上面只是查看某个文件系统的占用,如何知道这个文件系统中相关目录的空间占用情况呢?du命令可以查看文件系统上所有目录的大小。
例4. 使用du查看目录占用的空间
# cd /
# du -ckx | sort -n > /tmp/dir_space
使用 tail 查看保存的/tmp/dir_space文件可以看到根文件系统下最大的10个目录:
./var/log
./usr/lib
./var/lib/glance/images
./var/lib/glance
./var/lib/mongodb
./usr
./var/lib
./var
.
total
这里可以看到/var/log目录是很大的,由于/var/log/目录存放的是一些日志文件,日志文件通常也是占用系统空间的源泉,可以通过释放日志文件空间来获得存储空间:
# ls -lhs /var/log/syslog.
1.3M -rw-r----- syslog adm 1.3M Aug : syslog.
# bash -c "> /var/log/syslog.1"
# ls -lhs /var/log/syslog.
-rw-r----- syslog adm Aug : syslog.
该例子将分卷后的syslog文件截断,实际上就是删除指定日志文件的内容。当然也可以直接删除对应的日志文件。
三、I节点不足
当df显示磁盘空间充足,但文件系统却报错自己已满,无法写入时,需要检查是否耗尽了I节点。
在系统中创建一个新文件将会获得一个唯一的I节点,一旦把I节点用光,就无法再创建新的文件了,这在系统创建大量文件时才有可能发生,使用 df -i 命令可以查看I节点的使用情况。
例5. 查看I节点的使用情况
# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda2 % /
none % /sys/fs/cgroup
udev % /dev
tmpfs % /run
none % /run/lock
none % /run/shm
none % /run/user
/dev/sda1 - /boot/efi
可以看到当前各个文件系统的I节点充足。
一旦遇到I节点用光的情形,有以下几种选择:
1. 删除大量文件
2. 将大量文件移动到其他的文件系统中;
3. 将大量的文件压缩成一个文件;
4. 备份当前文件系统中的所有文件,重新格式化之前的硬盘,获得更多的I节点,再将文件复制回去。
Linux系统排查3——I/O篇的更多相关文章
- Linux系统排查2——CPU负载篇
本随笔介绍CPU负载的排查手段. 查看系统负载的工具:uptime,w,都能查看系统负载,系统平均负载是处于运行或不可打扰状态的进程的平均数, 可运行:运行态,占用CPU,或就绪态,等待CPU调度. ...
- Linux系统排查1——内存篇
常见工作中,计算机系统的资源主要包括CPU,内存,硬盘以及网络,过度使用这些资源将使系统陷入困境.本系列一共四篇博文,结合我在实习期间的学习,介绍一些常见的Linux系统排障工具及方法. 第1篇——内 ...
- Linux系统排查4——网络篇
用于排查Linux系统的网络故障. 网络排查一般是有一定的思路和顺序的,其实排查的思路就是根据具体的问题逐段排除故障可能发生的地方,最终确定问题. 所以首先要问一问,网络问题是什么,是不通,还是慢? ...
- Linux系统排查——CPU负载篇
本随笔介绍CPU负载的排查手段. 查看系统负载的工具:uptime,w,都能查看系统负载,系统平均负载是处于运行或不可打扰状态的进程的平均数, 可运行:运行态,占用CPU,或就绪态,等待CPU调度. ...
- (转)Linux系统排查4——网络篇
原文:http://www.cnblogs.com/Security-Darren/p/4700387.html 用于排查Linux系统的网络故障. 网络排查一般是有一定的思路和顺序的,其实排查的思路 ...
- Linux系统文件系统及文件基础篇
学习Linux,重难点在于掌握不同类别的文件系统及其作用.通过对Linux系统的安装,我们首先来了解下Linux系统里各个目录文件夹下的大致功能:主要的目录树的有/./root./home./usr. ...
- Linux系统NBD驱动安装拓展篇
前言: 最近在安装中标麒麟机器的时候,发现麒麟的操作系统找不到src.rpm包,且系统内部也没有内核文件,导致正常方法安装NBD驱动无法实施.故这里找了另一种办法帮助此类型操作系统安装NBD驱动. 一 ...
- 基于Linux系统的Shell编程-基础篇
1. Shell基础介绍 1.1 Shell编程的意义 为什么使用shell编程 节约时间 1.2 显示脚本执行过程 前面有+表示执行过的命令的 前面没有东西,表示输出到屏幕上的内容. [root@C ...
- linux系统排查数据包常用命令
1.查看当前系统中生效的所有参数 sysctl -a 2.统计处于TIME_WAIT状态的TCP连接数 netstat -ant|grep TIME_WAIT|wc -l 3.统计TCP连接数 net ...
随机推荐
- 【UVA 1583】Digit Generator
题 题意 a加上 a的各位数=b,则b是a的digitSum,a是b的generator,现在给你digitSum,让你求它的最小的generator. 分析 一种方法是: 预处理打表,也就是把1到1 ...
- opencv笔记5:频域和空域的一点理解
time:2015年10月06日 星期二 12时14分51秒 # opencv笔记5:频域和空域的一点理解 空间域和频率域 傅立叶变换是f(t)乘以正弦项的展开,正弦项的频率由u(其实是miu)的值决 ...
- 【BZOJ】【1009】 【HNOI2008】GT考试
DP/KMP/矩阵乘法 好神的题啊……跪了跪了 $n\leq 10^9$是什么鬼……我们还是先不要考虑这个鬼畜的玩意了>_> 用类似数位DP的思路,我们可以想到一个DP方程:$f[i][j ...
- JSON前端页面解析
JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言 * JSON 具有自我描述性,更 ...
- 获取Trustedinstalled权限.reg
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT*\shell\runas] @="获取TrustedInstaller权限&q ...
- Codeforces 578B "Or" Game
传送门 B. "Or" Game time limit per test 2 seconds memory limit per test 256 megabytes input s ...
- C# Attribute 特性 学习
一.特性的概述 公共语言运行库允许您添加类似关键字的描述性声明(称为特性 (Attribute))来批注编程元素,如类型.字段.方法和属性 (Property).属性与 Microsoft .NET ...
- alert对ajax阻塞调查(IE, Chrome, FF)
前阵子做保守工作,对一个js效果进行了改进,由于自己在chrome下测试没问题就丢给同事测试,同事用的是FF,发现不正常,后来又发现这个js在IE10下也不行,不得不调查,结果发现Chrome的ale ...
- 编写自己的Acunetix WVS漏洞扫描脚本详细教程
AWVS提供了自定义的脚本编程接口,可是网上的资料很少,只有官方的几篇介绍和参考手册,最近研究了一下怎么编写AWVS的漏洞脚本来写一篇简单性的文章 本文以8.0为例,首先呢安装好Acunetix We ...
- php-fpm.conf两个至关重要的参数
这里规定了PHP-CGI的连接.发送和读取的时间,300秒足够用了,因此我的服务器很少出现504 Gateway Time-out这个错误.最关键的是php-fpm.conf的设置,这个会直接导致50 ...