NingG +

Linux下查询磁盘空间和扩充磁盘空间

背景与分析

磁盘空间占满,文件无法写入,此时应用运行出错,面对此情况,基本思路如下:

定位问题

磁盘分区及占用

简要说明几点:

具体示例代码:

# 查看磁盘分区情况
$ df -hT
	Filesystem    Type    Size  Used Avail Use% Mounted on
	/dev/sda3     ext4     58G   31G   25G  56% /
	tmpfs        tmpfs     32G     0   32G   0% /dev/shm
	/dev/sda1     ext4    485M   38M  423M   9% /boot
	/dev/sda5     ext4     94G  845M   89G   1% /home


# 查看每个分区inode的使用情况
$ df -ihT
	Filesystem    Type    Inodes   IUsed   IFree IUse% Mounted on
	/dev/sda3     ext4      3.7M    114K    3.6M    4% /
	tmpfs        tmpfs      7.9M       1    7.9M    1% /dev/shm
	/dev/sda1     ext4      126K      39    125K    1% /boot
	/dev/sda5     ext4      6.0M    7.9K    6.0M    1% /home



# 查看指定目录所在分区的情况
$ df -hT /tmp
	Filesystem    Type    Size  Used Avail Use% Mounted on
	/dev/sda3     ext4     58G   31G   25G  56% /



# 查看指定目录文件的大小
$ du -hs /tmp
	2.3M	/tmp

特别说明:几点:

文件查找

典型场景:

按大小查找文件

示例代码:

# 查找文件大小 > 1GB 的文件
# find命令中 -type -size 两个选项
find -type f -size +1G | xargs du -h | sort -h

查找最大的10个文件

文件夹大小排序

典型场景:

某一文件夹下,所有文件/文件夹大小

利用du -hsx命令查询文件大小,具体命令:

# 查询根目录 ‘/’ 下,所有文件/文件夹的大小(排除p开头的文件)
# -h, --human-readable, print sizes in human readable format (e.g., 1k 234M 2G)
# -s, --summarize, display only a total for each argument
# -x, --one-file-system, display only a total for each argument
du -hsx /[^p]* | sort -rh | head -n 3

查询文件夹下,递归几级目录的大小:

du -hx --max-depth=1 | sort -rh | head -n 3

某一文件夹下,所有文件大小(不统计文件夹)

利用ls -lhS命令即可,具体命令:

# 指定目录下,文件按照大小来排序
# -l, use a long listing format
# -h, print sizes in human readable format (e.g., 1K 23M 4G)
# -S, sort by file size
# -d, list directory entries instead of contents
ls -lhSd /

特别说明:只能查询文件的大小,而无法查询文件夹大小

解决问题

面对磁盘空间不足,两个思路解决办法:

(todo:直接删除文件,对磁盘扩容,两个方面:增加inode、通过lvm扩容,等到需要磁盘扩容时,再整理这一部分内容)

几个命令

与文件系统相关的几个常用命令:

安装

lsblk命令是在util-linux或者util-linux-ng包中的,如果本机没有lsblk命令,需要先安装一下,具体:

yum install util-linux-ng

lsblk

关于此命令,没有太多要说的,其选项,大部分涉及的内容很琐碎,磁盘的细节信息,暂时未用到,关于其输出只列几个常识。

$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 558.9G  0 disk 
├─sda1   8:1    0   500M  0 part /boot
├─sda2   8:2    0  97.7G  0 part /
├─sda3   8:3    0  62.5G  0 part [SWAP]
├─sda4   8:4    0     1K  0 part 
└─sda5   8:5    0 398.2G  0 part /home
sdb      8:16   0   256M  1 disk 
└─sdb1   8:17   0   251M  0 part 

关于上述条目的名称:

特别说明lsblk命令会显示,所有的磁盘,包含unmounted disk

find

find命令,几个选项,简要说明如下:

(doing… 陆续补充,每次补充都是回顾)

Top