美文网首页
Linux系统排查3——I/O篇

Linux系统排查3——I/O篇

作者: 我只是一个小白木木 | 来源:发表于2018-08-01 14:03 被阅读0次

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

  • 文件系统只读
  • 磁盘已满
  • 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  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 工具查看保留块的大小。

例3. 使用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命令可以查看文件系统上所有目录的大小。

例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文件截断,实际上就是删除指定日志文件的内容。当然也可以直接删除对应的日志文件。
三、I节点不足
当df显示磁盘空间充足,但文件系统却报错自己已满,无法写入时,需要检查是否耗尽了I节点。

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

例5. 查看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节点,再将文件复制回去。

相关文章

  • Linux系统排查3——I/O篇

    当磁盘无法写入的时候,一般有以下可能: 文件系统只读 磁盘已满 I节点使用完 一、 遇到只读的文件系统文件系统自动...

  • Linux系统I/O操作与零拷贝

    Linux系统I/O Linux中传统的I/O操作是一种缓存I/O,I/O过程中产生的数据传输通常需要在缓冲区中进...

  • Linux文件描述符

    玩转Linux旧群已满,请加新群:278378501。 在Linux通用I/O模型中,I/O操作系列函数(系统调用...

  • 其他 I/O 模型总结

    I/O 多路复用 信号驱动I/O Linux专有epoll I/O多路复用 通过select系统调用或者poll系...

  • I/O访问方式

    缓存IO 缓存I/O又被称作标准I/O,大多数文件系统的默认I/O操作都是缓存I/O。在Linux的缓存I/...

  • Linux/UNIX系统编程手册-文件IO

    Linux/UNIX系统编程手册 [德] Michael Kerrisk 第4章 文件I/O: 通用的I/O模型 ...

  • 线上linux系统故障排查之二:内存占用过高

    《线上linux系统故障排查之一:CPU使用率过高》《线上linux系统故障排查之二:内存占用过高》 前一篇文章介...

  • linux I/O5中模型认识

    linux I/O5中模型 引入I/O模型 标准I/O: 缓存 IO 又被称作标准 IO,大多数文件系统的默认 I...

  • 文件I/O(一)

    本文转载自实验楼:文件I/O(一) Linux系统调用 Linux系统调用(system call)是指操作系统提...

  • 零拷贝原理详解

    引言 传统的 Linux 操作系统的标准 I/O 接口是基于数据拷贝操作的,即 I/O 操作会导致数据在操作系统内...

网友评论

      本文标题:Linux系统排查3——I/O篇

      本文链接:https://www.haomeiwen.com/subject/pvzlvftx.html