linux 系统io 排查,Linux系统排查3—I/O篇

Linux系统排查3—I/O篇

常见工作中,计算机系统的资源主要包括CPU,内存,硬盘以及网络,过度使用这些资源将使系统陷入困境。本系列一共四篇博文,结合我在实习期间的学习,介绍一些常见的Linux系统排障工具及方法。

第1篇—内存篇

第2篇—CPU篇

第4篇—网络篇

当磁盘无法写入的时候,一般有以下可能:

文件系统只读

磁盘已满

I节点使用完

1 遇到只读的文件系统

文件系统自动设置成只读可能是系统自我保护的一种机制,因此需要实现弄清究竟是什么原因造成了文件系统的只读。如果想要改变文件系统的只读属性,重新挂载目标分区即可。

重新挂载改变/home分区的读写属性

# mount -o remount, rw /home

-o 选项后面接了两个mount 命令的专有选项,remount是指重新挂载指定文件系统,rw指定重新挂载时的读写属性,该命令不改变挂载点,只是改变指定分区的读写属性。

2 磁盘满

磁盘使用率、剩余空间等可以使用 df 命令查看,

2.1 查看当前已挂载的所有分区及使用情况

# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/sda2 133G 8.6G 118G 7% /

none 4.0K 0 4.0K 0% /sys/fs/cgroup

udev 5.9G 4.0K 5.9G 1% /dev

tmpfs 1.2G 868K 1.2G 1% /run

none 5.0M 0 5.0M 0% /run/lock

none 5.9G 0 5.9G 0% /run/shm

none 100M 0 100M 0% /run/user

/dev/sda1 93M 3.4M 90M 4% /boot/efi

-h 自动以适合阅读的单位显示,该例子的磁盘空间显然还很充分。

有时候会发现,df 结果中的使用空间 "Used" 和容量 "Size" 存在一定的差距,但是可用空间 "Avail" 却所剩无几,同时使用率 “Use %”居高不下,甚至达到100%。这种情况并不奇怪,因为Linux为了避免系统存储空间完全占用导致的root用户无法登陆,为root用户保留了一块保留区块,供磁盘使用率过高时root用户登陆系统完成必要的清理操作。仅有root用户可以在这些保留块中写入数据,可以通过 tune2fs 工具查看保留块的大小。

2.2 使用tune2fs查看系统保留块

# tune2fs -l /dev/sda2 | grep -i "block"

Block count: 35400448

Reserved block count: 1770022

Free blocks: 33183919

First block: 0

Block size: 4096

Reserved GDT blocks: 1015

Blocks per group: 32768

Inode blocks per group: 512

Flex block group size: 16

Reserved blocks uid: 0 (user root)

Reserved blocks gid: 0 (group root)

Journal backup: inode blocks

其中,第3行显示系统保留块的数量,第6行显示每块的大小(4KB),二者相乘可以计算保留区块的总大小;

第11, 12行显示能对保留区块执行写入操作的用户和用户组编号,这里都是root;

上面只是查看某个文件系统的占用,如何知道这个文件系统中相关目录的空间占用情况呢?du命令可以查看文件系统上所有目录的大小。

2.4 使用du查看目录占用的空间

# cd /

# du -ckx | sort -n > /tmp/dir_space

使用 tail 查看保存的/tmp/dir_space文件可以看到根文件系统下最大的10个目录:

674236 ./var/log

904232 ./usr/lib

1372776 ./var/lib/glance/images

1372868 ./var/lib/glance

1523512 ./var/lib/mongodb

2082052 ./usr

4003024 ./var/lib

4878944 ./var

8798036 .

8798036 total

这里可以看到/var/log目录是很大的,由于/var/log/目录存放的是一些日志文件,日志文件通常也是占用系统空间的源泉,可以通过释放日志文件空间来获得存储空间:

# ls -lhs /var/log/syslog.1

1.3M -rw-r----- 1 syslog adm 1.3M Aug 12 06:34 syslog.1

# bash -c "> /var/log/syslog.1"

# ls -lhs /var/log/syslog.1

0 -rw-r----- 1 syslog adm 0 Aug 12 15:16 syslog.1

该例子将分卷后的syslog文件截断,实际上就是删除指定日志文件的内容。当然也可以直接删除对应的日志文件。

3 I节点不足

当df显示磁盘空间充足,但文件系统却报错自己已满,无法写入时,需要检查是否耗尽了I节点。

在系统中创建一个新文件将会获得一个唯一的I节点,一旦把I节点用光,就无法再创建新的文件了,这在系统创建大量文件时才有可能发生,使用 df -i 命令可以查看I节点的使用情况。

查看I节点的使用情况

# df -i

Filesystem Inodes IUsed IFree IUse% Mounted on

/dev/sda2 8855552 219633 8635919 3% /

none 1532516 2 1532514 1% /sys/fs/cgroup

udev 1529802 463 1529339 1% /dev

tmpfs 1532516 523 1531993 1% /run

none 1532516 12 1532504 1% /run/lock

none 1532516 1 1532515 1% /run/shm

none 1532516 3 1532513 1% /run/user

/dev/sda1 0 0 0 - /boot/efi

可以看到当前各个文件系统的I节点充足。

一旦遇到I节点用光的情形,有以下几种选择:

1. 删除大量文件

2. 将大量文件移动到其他的文件系统中;

3. 将大量的文件压缩成一个文件;

4. 备份当前文件系统中的所有文件,重新格式化之前的硬盘,获得更多的I节点,再将文件复制回去。

END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值