【MySQL】檔案描述符導致報警一則

楊奇龍發表於2014-01-12
下午收到報警:
xxxxxx:[didb..,][master,slave]/home used:94% free:0.6G 2014-01-12 16:42:40 DutyReceived!
【現象】
登陸機器檢視:
[root@xxxxx /root]
#df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              92G  4.2G   83G   5% /
/dev/sda6             9.6G  8.5G  626M  94% /home
可是到/home 目錄執行命令:
[root@xxxxx /home]
#du -sh ./* | grep G


[root@xxxxx /home]
#du -sh ./* | grep M
728M    ./admin
170M    ./tops
【分析】
/home 目錄並沒有佔用8.5G空間。這是怎麼回事?仔細思考一下之前的操作,我在沒有關閉nignix程式的情況下 rm  access.log 這裡有必要介紹一下檔案描述符
"檔案描述符是一個簡單的整數,用以標明每一個被程式所開啟的檔案和sock.最前面的三個檔案描述符:0 1 2分別與標準輸入(stdin),標準輸出(stdout)和標準錯誤(stderr)對應。"
 在程式沒有被關閉的情況下,手工刪除了檔案,但是檔案控制程式碼還是被程式佔用,導致上面的奇怪現象:df -h檢視磁碟空間被佔用,檢視具體佔用空間確很小。使用 lsof | grep deleted 可以檢視被刪除但是依然被程式佔用檔案控制程式碼檔案。


【解決】
針對報警解決方式 殺掉佔用檔案控制程式碼的程式即可
[root@xxxxx /home/admin/cai/bin]
#lsof | grep access.log
nginx-pro  3428  admin    5w      REG                8,6 7689831446        313 /home/admin/cai/logs/access.log (deleted)
nginx-pro  3429  admin    5w      REG                8,6 7689831446        313 /home/admin/cai/logs/access.log (deleted)
nginx-pro  3430  admin    5w      REG                8,6 7689831446        313 /home/admin/cai/logs/access.log (deleted)
nginx-pro  3431  admin    5w      REG                8,6 7689831446        313 /home/admin/cai/logs/access.log (deleted)
[root@xxxxx /home/admin/cai/bin]
#kill -9 3428
[root@xxxxx /home/admin/cai/bin]
#kill -9 3429
[root@xxxxx /home/admin/cai/bin]
#kill -9 3430
[root@xxxxx /home/admin/cai/bin]
#kill -9 3431
[root@xxxxx /home/admin/cai/bin]
#lsof | grep access.log
[root@xxxxx /home/admin/cai/bin]
#df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              92G  4.2G   83G   5% /
/dev/sda6             9.6G  1.2G  7.9G  13% /home

如何徹底解決?
可以透過設定crontab 命令 cat /dev/null > access.log 定期清理,而非選擇rm 的方式。

【擴充】
在資料庫運維過程中,如果遇到rm,drop 誤刪除表或者資料檔案等操作,在db 沒有關閉情況下 檢查/proc檔案系統是否存在被誤刪除的檔案控制程式碼,如果有,立即從其檔案描述符恢復。
1 檔案描述符file descriptor與inode的相關知識 

2  lsof 應用例項分享以及Oracle 資料檔案刪除恢復測試
 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-1069785/,如需轉載,請註明出處,否則將追究法律責任。

相關文章