磁盤報警

問題拋出:

當一臺主機硬盤滿了或者達到一定程度時候,報警,該怎麼做?

A、怎麼查看硬盤信息:



如果是監控一些文件的大小,如日誌文件,要如何獲取文件大小?知道的方法有如下兩種:

1、ls -lh     2、du -sh *  

發現兩個方法得出的文件大小並不完全一致,這是因爲:du不是顯示文件的大小,而是顯示文件所佔用的block大小,默認Linux系統分區的block size是4k,也就是說即使文件只有一個字節,也會佔用4k。


那麼系統塊的大小是大點好,還是小點好呢?

如果將來在你的文件系統中是一些比較大的文件的話,使用較大的塊大小將得到較好的性能。將ext2文件系統的塊大小調整爲4096byte而不是缺省的1024byte,可以減少文件碎片,加快fsck掃描的速度和文件刪除以及讀操作的速度;使用多大的塊大小,需要根據你的系統綜合考慮,如果系統用作郵件或者新聞服務器,使用較大的塊大小,雖然性能有所提高,但會造成磁盤空間較大的浪費。比如文件系統中的文件平均大小爲2145byte,如果使用4096byte的塊大小,平均每一個文件就會浪費1951byte空間。如果使用1024byte的塊大小,平均每一個文件會浪費927byte空間。在性能和磁盤的代價上如何平衡,要看具體應用的需要。


那麼可不可以修改系統塊大小?該如何修改?


B、當/dev/sda5的使用率超過90%時,發出報警:

初步思路:首先先截取到  /dev/sda5  那行,然後截取這一行的第五列獲取到磁盤的使用率11%,爲了方便比較,將11%以 ”%”爲分隔符做列截取,可以截取到11,然後進行比較。

(爲了顯示效果,如果使用率超過10%就報警),簡單的腳本如下:


上面的簡單腳本,利用了grep、awk和cut這些字符截取命令。這對這些字符截取命令:


1、grep:行截取命令:可以截取含有關鍵字所在的那一行


2、cut:列截取命令:-f  列號    -d  分隔符

cut 命令的不足:不適合分隔符不標準


3、awk命令:

這裏會發現第一行並沒有按照分隔符“:”進行切分,這是由於awk執行的時候是將一整行讀入,把這一整行賦予了$1,$3爲空,此時再告訴它以“:”爲分隔符時已經遲了,那怎樣解決這個問題?首先要設個條件,在開始讀取一整行時就告訴awk,以“:”爲分隔符



C、現在又簡單的腳本可以可以執行確認磁盤容量有沒有報警,但是如果每次都要人去執行這個腳本,並不太現實,還缺少的一步,讓系統自動去執行這個腳本,去檢測磁盤容量是否報警。

這裏想到了用Linux中的計劃任務——crontab,簡單的學習了一下crontab後,也遇到了一些問題,成功解決後,待繼續學習後整理。

crontab -e:每分鐘去執行一次腳本,並將結果輸出的/tmp/log.txt下:


至此,大概實現了磁盤報警(除了日誌監控)。

(未完待續)



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章