Sigar获取磁盘信息

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

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

当然了使用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));  
        }  
    }  
<FileSystemDatas>
  <FileSystemData>
    <config>
      <dirName>C:\</dirName>
      <devName>C:\</devName>
      <typeName>local</typeName>
      <sysTypeName>FAT32</sysTypeName>
      <type>2</type>
      <flags>0</flags>
    </config>
    <stat>
      <total>38418048</total>
      <free>27689856</free>
      <used>10728192</used>
      <avail>27689856</avail>
      <files>-1</files>
      <freeFiles>-1</freeFiles>
      <diskReads>17762</diskReads>
      <diskWrites>50748</diskWrites>
      <diskReadBytes>317399040</diskReadBytes>
      <diskWriteBytes>1591675392</diskWriteBytes>
      <diskQueue>0</diskQueue>
      <diskServiceTime>-1.0</diskServiceTime>
      <usePercent>0.28</usePercent>
    </stat>
  </FileSystemData>
  <FileSystemData>
    <config>
      <dirName>D:\</dirName>
      <devName>D:\</devName>
      <typeName>local</typeName>
      <sysTypeName>FAT32</sysTypeName>
      <type>2</type>
      <flags>0</flags>
    </config>
    <stat>
      <total>66496576</total>
      <free>49064928</free>
      <used>17431648</used>
      <avail>49064928</avail>
      <files>-1</files>
      <freeFiles>-1</freeFiles>
      <diskReads>67354</diskReads>
      <diskWrites>19482</diskWrites>
      <diskReadBytes>817295872</diskReadBytes>
      <diskWriteBytes>230753792</diskWriteBytes>
      <diskQueue>0</diskQueue>
      <diskServiceTime>-1.0</diskServiceTime>
      <usePercent>0.27</usePercent>
    </stat>
  </FileSystemData>
  <FileSystemData>
    <config>
      <dirName>E:\</dirName>
      <devName>E:\</devName>
      <typeName>local</typeName>
      <sysTypeName>FAT32</sysTypeName>
      <type>2</type>
      <flags>0</flags>
    </config>
    <stat>
      <total>69111712</total>
      <free>49214624</free>
      <used>19897088</used>
      <avail>49214624</avail>
      <files>-1</files>
      <freeFiles>-1</freeFiles>
      <diskReads>41340</diskReads>
      <diskWrites>8119</diskWrites>
      <diskReadBytes>222592512</diskReadBytes>
      <diskWriteBytes>91557888</diskWriteBytes>
      <diskQueue>0</diskQueue>
      <diskServiceTime>-1.0</diskServiceTime>
      <usePercent>0.29</usePercent>
    </stat>
  </FileSystemData>
  <FileSystemData>
    <config>
      <dirName>F:\</dirName>
      <devName>F:\</devName>
      <typeName>local</typeName>
      <sysTypeName>FAT32</sysTypeName>
      <type>2</type>
      <flags>0</flags>
    </config>
    <stat>
      <total>70109376</total>
      <free>46776096</free>
      <used>23333280</used>
      <avail>46776096</avail>
      <files>-1</files>
      <freeFiles>-1</freeFiles>
      <diskReads>16</diskReads>
      <diskWrites>39</diskWrites>
      <diskReadBytes>151552</diskReadBytes>
      <diskWriteBytes>830976</diskWriteBytes>
      <diskQueue>0</diskQueue>
      <diskServiceTime>-1.0</diskServiceTime>
      <usePercent>0.34</usePercent>
    </stat>
  </FileSystemData>
  <FileSystemData>
    <config>
      <dirName>H:\</dirName>
      <devName>H:\</devName>
      <typeName>cdrom</typeName>
      <sysTypeName>cdrom</sysTypeName>
      <type>5</type>
      <flags>0</flags>
    </config>
  </FileSystemData>
</FileSystemDatas>

下载地址: 见内容底部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值