[linux]df 磁盤100%Used告警,du顯示目錄狀態良好的故障排查


1.回顧:

某在線主機深夜連續接到告警系統的disk Used 超限告警。

登陸主機查看卻遇到了困惑:在檢查磁盤使用量 df –h 出來的磁盤使用量確實和告警信息一樣,已經被100%占用,但是查看目錄大小 du 時,卻顯示實際目錄大小並非這樣,而是有很大空閑空間。

image

如圖:磁盤用量 df –h 結果為100%Used,

        目錄實際總大小 du –h –max-depth=1,顯示總目錄大小為60k,幾乎可以忽略的使用比例。

 

【知識准備】 [linux] lsof 命令了解:

lsof(list open files)是一個查看當前系統文件的工具。在linux環境下,任何事物都以文件的形式存在,通過文件不僅僅可以訪問常規數據,還可以訪問網絡連接和硬件。如傳輸控制協議 (TCP) 和用戶數據報協議 (UDP) 套接字等,系統在后台都為該應用程序分配了一個文件描述符,該文件描述符提供了大量關於這個應用程序本身的信息。

lsof打開的文件可以是:

  1. 普通文件

  2. 目錄

  3. 網絡文件系統的文件

  4. 字符或設備文件

  5. (函數)共享庫

  6. 管道,命名管道

  7. 符號鏈接

  8. 網絡文件(例如:NFS file、網絡socket,unix域名socket)

  9. 還有其它類型的文件,等等

 

【man linux】結果:包含了大量的參數:

[root@demo1 local]# man lsof
LSOF(8)                                                                LSOF(8)

NAME
       lsof - list open files

SYNOPSIS
       lsof  [  -?abChlnNOPRtUvVX ] [ -A A ] [ -c c ] [ +c c ] [ +|-d d ] [ +|-D D ] [ +|-e s ] [ +|-f [cfgGn] ] [ -F [f] ] [
       -g [s] ] [ -i [i] ] [ -k k ] [ +|-L [l] ] [ +|-m m ] [ +|-M ] [ -o [o] ] [ -p s ] [ +|-r [t[m<fmt>]] ] [ -s [p:s] ]  [
       -S [t] ] [ -T [t] ] [ -u s ] [ +|-w ] [ -x [fl] ] [ -z [z] ] [ -Z [Z] ] [ -- ] [names]

命令參數

-a 列出打開文件存在的進程

-c<進程名> 列出指定進程所打開的文件

-g 列出GID號進程詳情

-d<文件號> 列出占用該文件號的進程

+d<目錄> 列出目錄下被打開的文件

+D<目錄> 遞歸列出目錄下被打開的文件

-n<目錄> 列出使用NFS的文件

-i<條件> 列出符合條件的進程。(4、6、協議、:端口、 @ip )

-p<進程號> 列出指定進程號所打開的文件

-u 列出UID號進程詳情

-h 顯示幫助信息

-v 顯示版本信息

 

 

實際使用:

$lsof| more
COMMAND     PID      USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME
init          1      root  cwd       DIR              253,0     4096          2 /
init          1      root  rtd       DIR              253,0     4096          2 /
init          1      root  txt       REG              253,0   150352    1310795 /sbin/init
init          1      root  mem       REG              253,0    65928    5505054 /lib64/libnss_files-2.12.so
init          1      root  mem       REG              253,0  1918016    5521405 /lib64/libc-2.12.so
init          1      root  mem       REG              253,0    93224    5521440 /lib64/libgcc_s-4.4.6-20120305.so.1
init          1      root  mem       REG              253,0    47064    5521407 /lib64/librt-2.12.so
init          1      root  mem       REG              253,0   145720    5521406 /lib64/libpthread-2.12.so
...

說明:

lsof輸出各列信息的意義如下:

  • COMMAND:進程的名稱

  • PID:進程標識符

  • PPID:父進程標識符(需要指定-R參數)

  • USER:進程所有者

  • PGID:進程所屬組

  • FD:文件描述符,應用程序通過文件描述符識別該文件。如cwd、txt等:

(1)cwd:表示current work dirctory,即:應用程序的當前工作目錄,這是該應用程序啟動的目錄,除非它本身對這個目錄進行更改
(2)txt :該類型的文件是程序代碼,如應用程序二進制文件本身或共享庫,如上列表中顯示的 /sbin/init 程序
(3)lnn:library references (AIX);
(4)er:FD information error (see NAME column);
(5)jld:jail directory (FreeBSD);
(6)ltx:shared library text (code and data);
(7)mxx :hex memory-mapped type number xx.
(8)m86:DOS Merge mapped file;
(9)mem:memory-mapped file;
(10)mmap:memory-mapped device;
(11)pd:parent directory;
(12)rtd:root directory;
(13)tr:kernel trace file (OpenBSD);
(14)v86  VP/ix mapped file;
(15)0:表示標准輸入
(16)1:表示標准輸出
(17)2:表示標准錯誤
一般在標准輸出、標准錯誤、標准輸入后還跟着文件狀態模式:r、w、u等
(1)u:表示該文件被打開並處於讀取/寫入模式
(2)r:表示該文件被打開並處於只讀模式
(3)w:表示該文件被打開並處於
(4)空格:表示該文件的狀態模式為unknow,且沒有鎖定
(5)-:表示該文件的狀態模式為unknow,且被鎖定
同時在文件狀態模式后面,還跟着相關的鎖
(1)N:for a Solaris NFS lock of unknown type;
(2)r:for read lock on part of the file;
(3)R:for a read lock on the entire file;
(4)w:for a write lock on part of the file;(文件的部分寫鎖)
(5)W:for a write lock on the entire file;(整個文件的寫鎖)
(6)u:for a read and write lock of any length;
(7)U:for a lock of unknown type;
(8)x:for an SCO OpenServer Xenix lock on part      of the file;
(9)X:for an SCO OpenServer Xenix lock on the      entire file;
(10)space:if there is no lock.
  • TYPE:文件類型,如DIR、REG等,常見的文件類型:

    (1)DIR:表示目錄
    (2)CHR:表示字符類型
    (3)BLK:塊設備類型
    (4)UNIX: UNIX 域套接字
    (5)FIFO:先進先出 (FIFO) 隊列
    (6)IPv4:網際協議 (IP) 套接字
    
  • DEVICE:指定磁盤的名稱

  • SIZE:文件的大小

  • NODE:索引節點(文件在磁盤上的標識)

  • NAME:打開文件的確切名稱

 

詳細使用實例:http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/lsof.html

 

2.故障排查

lsof | grep -i delete 或者 lsof +d /tmp 或者 lsof +D /tmp

image

非常多的fpm進程在操作 /tmp 目錄,重啟fpm之后。空間釋放:

image 

幾個資料:

https://mp.weixin.qq.com/s/bEhuc1PPGPuYuA2mQArHLQ

http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/lsof.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM