4.Sigar获取磁盘信息

经常会出现磁盘满,无法写入数据的情况。为此我们就需要对磁盘进行监控,也就是对文件系统进行监控。 

文件系统的指标有:名称、分区类型等基本信息;使用情况、读写次数等统计信息。

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>
发布了45 篇原创文章 · 获赞 21 · 访问量 66万+

猜你喜欢

转载自blog.csdn.net/yin_jw/article/details/40188743