经常会出现磁盘满,无法写入数据的情况。为此我们就需要对磁盘进行监控,也就是对文件系统进行监控。
文件系统的指标有:名称、分区类型等基本信息;使用情况、读写次数等统计信息。
Java代码:
使用的Jar包:sigar.jar、xstream-1.3.1.jar
package test1;
import java.util.ArrayList;
import java.util.List;
import org.hyperic.sigar.FileSystem;
import org.hyperic.sigar.FileSystemUsage;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException;
import com.thoughtworks.xstream.XStream;
/**
* 获得文件系统信息
*/
public class FileSystemData {
private FileSystem config;
private FileSystemUsage stat;
public void populate(Sigar sigar, FileSystem fs) throws SigarException {
config = fs;
try {
stat = sigar.getFileSystemUsage(fs.getDirName());
} catch (SigarException e) {
}
}
public static FileSystemData gather(Sigar sigar, FileSystem fs) throws SigarException {
FileSystemData data = new FileSystemData();
data.populate(sigar, fs);
return data;
}
public static void main(String[] args) throws Exception {
Sigar sigar = new Sigar();
FileSystem[] fsArr = sigar.getFileSystemList();
List<FileSystemData> fsList = new ArrayList<FileSystemData>();
for (FileSystem fs : fsArr) {
FileSystemData fsData = FileSystemData.gather(sigar, fs);
fsList.add(fsData);
}
XStream xstream = new XStream();
xstream.alias("FileSystemDatas", List.class);
xstream.alias("FileSystemData", FileSystemData.class);
System.out.println(xstream.toXML(fsList));
}
public FileSystem getConfig() {
return config;
}
public FileSystemUsage getStat() {
return stat;
}
}
输出:
<FileSystemDatas>
<FileSystemData>
<config>
<dirName>C:\</dirName>
<devName>C:\</devName>
<typeName>local</typeName>
<sysTypeName>NTFS</sysTypeName>
<options>rw</options>
<type>2</type>
<flags>0</flags>
</config>
<stat>
<total>48010220</total>
<free>15470760</free>
<used>32539460</used>
<avail>15470760</avail>
<files>-1</files>
<freeFiles>-1</freeFiles>
<diskReads>139390</diskReads>
<diskWrites>203701</diskWrites>
<diskReadBytes>1010284032</diskReadBytes>
<diskWriteBytes>4063549440</diskWriteBytes>
<diskQueue>0.0</diskQueue>
<diskServiceTime>-1.0</diskServiceTime>
<usePercent>0.68</usePercent>
</stat>
</FileSystemData>
<FileSystemData>
<config>
<dirName>D:\</dirName>
<devName>D:\</devName>
<typeName>local</typeName>
<sysTypeName>NTFS</sysTypeName>
<options>rw</options>
<type>2</type>
<flags>0</flags>
</config>
<stat>
<total>144769712</total>
<free>139399108</free>
<used>5370604</used>
<avail>139399108</avail>
<files>-1</files>
<freeFiles>-1</freeFiles>
<diskReads>28937</diskReads>
<diskWrites>305</diskWrites>
<diskReadBytes>750892032</diskReadBytes>
<diskWriteBytes>1506816</diskWriteBytes>
<diskQueue>0.0</diskQueue>
<diskServiceTime>-1.0</diskServiceTime>
<usePercent>0.04</usePercent>
</stat>
</FileSystemData>
<FileSystemData>
<config>
<dirName>E:\</dirName>
<devName>E:\</devName>
<typeName>local</typeName>
<sysTypeName>NTFS</sysTypeName>
<options>rw</options>
<type>2</type>
<flags>0</flags>
</config>
<stat>
<total>144769712</total>
<free>130269648</free>
<used>14500064</used>
<avail>130269648</avail>
<files>-1</files>
<freeFiles>-1</freeFiles>
<diskReads>3474</diskReads>
<diskWrites>10618</diskWrites>
<diskReadBytes>88275968</diskReadBytes>
<diskWriteBytes>1341539328</diskWriteBytes>
<diskQueue>0.0</diskQueue>
<diskServiceTime>-1.0</diskServiceTime>
<usePercent>0.11</usePercent>
</stat>
</FileSystemData>
<FileSystemData>
<config>
<dirName>F:\</dirName>
<devName>F:\</devName>
<typeName>local</typeName>
<sysTypeName>NTFS</sysTypeName>
<options>rw</options>
<type>2</type>
<flags>0</flags>
</config>
<stat>
<total>150834252</total>
<free>145898596</free>
<used>4935656</used>
<avail>145898596</avail>
<files>-1</files>
<freeFiles>-1</freeFiles>
<diskReads>544</diskReads>
<diskWrites>1129</diskWrites>
<diskReadBytes>4238848</diskReadBytes>
<diskWriteBytes>35478016</diskWriteBytes>
<diskQueue>0.0</diskQueue>
<diskServiceTime>-1.0</diskServiceTime>
<usePercent>0.04</usePercent>
</stat>
</FileSystemData>
</FileSystemDatas>