经常会出现磁盘满,无法写入数据的情况。为此我们就需要对磁盘进行监控,也就是对文件系统进行监控。
文件系统的指标有:名称、分区类型等基本信息;使用情况、读写次数等统计信息。
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>