Sigar使用之:取得平台文件系统的数据

梵天的读书笔记 2008-01-04

在网络应用中,从最初为用户提供文本数据,发展到现在为用户提供视频数据。网络的内容更丰富了,当然资源所占用的服务器硬盘空间也更大了。经常会出现磁盘满,无法写入数据的情况。为此我们就需要对磁盘进行监控,也就是对文件系统进行监控。

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

当然了使用sigar也可以获得分件系统的这些数据。

下面通过例子说明:

package lab.sigar;

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;

/**
 * 文件系统数据
 * 
 * 使用Sigar获得文件系统信息
 * 
 * @author wangrui
 * 
 */
public class FileSystemData {

    private FileSystem config;
    private FileSystemUsage stat;

    public FileSystemData() {}

    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 FileSystem getConfig() {
        return config;
    }

    public FileSystemUsage getStat() {
        return stat;
    }
    
	public static void main(String[] args) throws Exception {
    	Sigar sigar = new Sigar();
    	FileSystem[] fsArr = sigar.getFileSystemList();
    	List fsList = new ArrayList();
    	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));
    }
}

用到的jar包可以在《Sigar使用之:取得系统内存的数据》中取得

相关推荐