2010-10-26 71 views
1

有沒有一種很好的方法來檢測Linux上通過Java在服務器上離線的特定磁盤?如何在Linux上通過Java可靠地檢測磁盤已關閉

我有一個應用程序,由於性能原因,直接寫入所有磁盤(中間沒有任何RAID)。

我需要檢測Linux是否會在運行時由於磁盤崩潰而卸載任何磁盤,所以我會停止使用它。問題是每個掛載都有一個根目錄,所以如果沒有正確的檢測,應用程序就會填滿根分區。

對此將不勝感激。

+0

正如旁白一樣,請記住,您的操作系統(帶或不帶RAID控制器)可以做出令人驚歎的事情來優化IO(緩存,延遲寫入,預讀,...),所以當繞過它來獲得表演時要小心。 .. – Guillaume 2010-10-26 14:57:54

+0

我實際上使用標準的Java調用,所以沒有操作系統繞過這裏。 – SyBer 2010-10-26 16:24:59

+0

如果僅用於Linux,您可以閱讀並解析[/proc/mounts](http://www.kernel.org/doc/Documentation/filesystems/proc.txt)並檢查那裏的目錄。 – krico 2010-10-26 14:31:02

回答

1

在Linux中,所有內容都可以通過文本文件訪問。我真的不明白什麼是您所需要的準確信息,但檢查/proc/diskstat/proc/mounts/proc/mdstat(突襲),等等

+0

+1讀取過程是unix方式來執行此操作。 – Zoe 2010-10-26 14:34:44

+0

@Guillaume那麼,對於OP來說,相當驚人的顯然是不夠的。他正試圖做一個微型優化(幾個百分點),爲什麼不使用原始系統調用和C呢? – 2010-10-26 14:36:36

+0

@SyBer你也可以使用df命令來知道佔用的磁盤空間。 – 2010-10-26 14:48:08

1

任何人與系統管理員的經驗可以告訴你,硬盤崩潰或以其他方式消失了一個惡劣的習慣,使任何接觸任何掛載點下的任何過程等待不間斷的睡眠。此外,根據我的經驗,這可能包括嘗試讀取/ proc/mounts或運行'df'命令。

我的建議是使用RAID,如果需要的話,投資你的出路。比如說,如果性能受到小型隨機寫入的限制,那麼帶有電池備份寫入緩存的RAID卡可以創造奇蹟。

+0

感謝您的建議,遺憾的是不使用RAID是在開發早期採取的「戰略」決策之一:)。 – SyBer 2010-10-26 17:36:18