During the server operation and maintenance process, we often encounter such a situation and receive a server disk space alarm: <br>
Log in to the server and view it through df -Hl
is consistent with the alarm information. Then we need to find the directory or file that causes the disk space to become full.
A relatively stupid method is to use the du -hs command in the root directory to list the space occupied by each directory
Then use the same method to continue to the corresponding directory to find
A more efficient method is to set the directory depth of the query through the -d parameter of du, or -max-depth. As the directory depth increases, a lot of the queried directories will be displayed. At this time, you can filter through grep. .
du -h -d 2|grep [GT] |sort -nr du -h --max-depth=2|grep [GT] |sort -nr
In this way, you can search for large directories that occupy disk space in units of G or T and sort them
Or you can query it through find
find / -type f -size +1G -exec du -h {} \;
In terms of efficiency, find is faster and more flexible than du.
Through these two methods, we can quickly find the culprit taking up disk space.
Do you think it’s that simple? Many times, you will find that after searching for a long time through find or du, you will find that the total occupied space is very different from the disk space occupied by df, such as the two pictures above.
Viewed through df, the disk usage is 37G, but viewed through du -hs in the root directory, the total adds up to almost 10G, there is no hidden directory, who is eating the space?
Obviously, there is space occupied by deleted files. The files are deleted, but the resources are not released.
I introduced a very useful command before: lsof, we can check it through the following command
lsof +L1
It can be seen from the results that there is a large log file of about 28G. It was deleted, but the space was not released. This is a very common situation.
The corresponding solution is to restart the tomcat application and free up space
There is another question that is often asked, that is, the disk viewed through df
You will find that the sum of Used and Avail is not enough for Size, and part of it is eaten inexplicably
In fact, this is a security policy of the Linux file system. By default, it will reserve 5% of the disk space for the root user for emergency use. This can ensure that some key applications (such as databases) have some leeway when the hard disk is full, so that they will not crash immediately
We can modify the ratio of reserved space through tune2fs
tune2fs -m 1 /dev/vda1
You can see the before and after comparison through the picture below
The space that was eaten up in this way is released!
The above is the detailed content of Linux disk space is abnormally full, how to check?. For more information, please follow other related articles on the PHP Chinese website!