磁盘分析

本机的系统盘是C盘,操作系统是Windows 7 专业版,通过磁盘属性可以看到C盘的已用空间是69.4G。

而我们运行自己编写的脚本(脚本程序参考附录,统计原理:计算目录下各个文件的大小,然后相加,即为该目录的大小;再将各个目录占用空间相加,即为总的占用空间),可以发现,占用空间为59G。

计算机的“文件夹选项”中“显示隐藏的文件、文件夹和驱动器”选项开关也是打开的。

因此,极有可能是存在某些系统级别的隐藏文件,脚本在统计磁盘占用空间时,没有把这些文件统计上。我们使用磁盘修复分区工具DiskGenius进行分析,发现存在hiberfil.sys和pagefile.sys两个隐藏文件。

其中,hiberfil.sys这个文件就是系统的休眠功能所占用的磁盘空间的文件,Windows默认休眠功能是处于打开状态的,电脑处于休眠状态时,内存中的所有内容将保存到硬盘。电脑在返回打开状态之后,关闭电脑时,打开的所有程序和文档将全部还原到桌面,参考链接1

pagefile.sys这个文件是安装过程中创建的虚拟内存页面文件。如果计算机在较低的RAM下运行,并且立即需要更多的RAM,则Windows会用硬盘空间来模拟系统RAM,这就叫做虚拟内存,通常称之为页面文件,由于虚拟内存的设定,因此产生了pagefile.sys文件,参考链接2

磁盘整理

由于系统空间紧张,因此我们可以关闭休眠,从而删除hiberfil.sys这个文件,以及修改虚拟内存文件pagefile.sys的存放地址,存放在其他磁盘,从而避免将pagefile.sys占用系统磁盘空间。

1.删除hiberfil.sys

删除hiberfil.sys文件,主要是通过关闭休眠功能来实现,参考链接3

在cmd窗口中敲入“powercfg -h off”命令后,即可关闭系统的休眠功能。

我们再用磁盘修复分区工具DiskGenius进行分析,发现hiberfil.sys已经不存在了。

2.修改pagefile.sys存放地址

修改pagefile.sys到其他空闲的磁盘中,参考链接4

单击“开始”-->右击“计算机”-->“属性”-->“高级系统设置”-->“高级”>性能栏里的“设置”-->“高级”>虚拟内存“更改”>取消“自动管理所有驱动器的分页文件大小”。选择C盘,点击“无分页文件”,点击“设置”,再选择D盘,点击“系统管理的大小”,点击“设置”,即可。

再用磁盘修复分区工具DiskGenius进行分析,发现pagefile.sys在D盘中出现。系统重新启动后,C盘中已经不存在pagefile.sys文件了。

通过磁盘属性可以看到C盘的已用空间是55.5G,比之前减少的13.9G。其中hiberfil.sys大小是5.9G,pagefile.sys大小是7.9G,共13.8G,也即我们上面两步骤已经生效,减少了系统盘的占用空间。

3.大文件分析

我们通过运行自己编写的脚本(脚本程序参考附录,统计原理:计算各个文件的大小,并根据文件大小排序,将前20个最大的文件输出)。

可以发现,红框中的文件均为log文件。

这些日志都是提供有关脱机处理故障的详细信息的处理日志文件,微软官方不建议用户自己删除系统文件。因此这些文件,后续再处理,参考链接5

具体实现

统计各个目录占用空间,并按照目录占用空间降序输出;统计文件占用空间,并按照文件占用空间降序输出前20个文件。

#!/usr/bin/env python
# -*- coding:utf-8 -*- import os #统计指定目录下各个文件夹的大小,方便观察具体目录的大小
def CountDirSize(srcDir):
dirSizeDict = {}
fileSizeDict = {}
for fileList in os.listdir(srcDir): filePath = os.path.join(srcDir,fileList)
if os.path.isdir(filePath):
size = 0
for roots,dirs,files in os.walk(filePath):
for fileName in files:
fileNamePath = os.path.join(roots,fileName)
sizetemp = 0
try:
sizetemp = os.path.getsize(fileNamePath)
if sizetemp > 1024*1024:
fileSizeDict[fileNamePath] = sizetemp
except:
sizetemp = 0
size += sizetemp
dirSizeDict[fileList] = size
#按照从大到小的顺序降序排列
dirSizeDict = sorted(dirSizeDict.items(),key = lambda dirSizeDict:dirSizeDict[1],reverse = True)
Sum = 0
print "各个目录占用空间"
for ele in dirSizeDict:
temp = ele[1]/1024/1024
Sum += temp
#以单位为M,输出大小
print ele[0] + ":" + str(temp) + " M"
#以单位为G,输出大小
print "Total use:" + str(Sum / 1024) +" G"
print "" print "前20个大文件占用空间"
fileSizeDict = sorted(fileSizeDict.items(),key = lambda fileSizeDict:fileSizeDict[1],reverse = True)
for ele in fileSizeDict[:20]:
print ele[0] + ":" +str(ele[1]/1024/1024) + " M" if __name__ == "__main__":
srcDir = "c:\\"
CountDirSize(srcDir)

Windows系统盘占用空间分析的更多相关文章

  1. 几个常用内核函数(《Windows内核情景分析》)

    参考:<Windows内核情景分析> 0x01  ObReferenceObjectByHandle 这个函数从句柄得到对应的内核对象,并递增其引用计数. NTSTATUS ObRefer ...

  2. 记一次深度系统安装至windows系统盘提示挂载为只读模式问题

    记一次深度系统安装至windows系统盘提示挂载为只读模式问题 来到新公司新电脑自己要安装deepin,安装的时候没考虑双系统直接装至默认win系统盘,导致deepin启动后提示如下: 提示多个挂载分 ...

  3. [1]windows 内核情景分析---说明

    本文说明:这一系列文章(笔记)是在看雪里面下载word文档,现转帖出来,希望更多的人能看到并分享,感谢原作者的分享精神. 说明 本文结合<Windows内核情景分析>(毛德操著).< ...

  4. Windows系统内存分析工具的介绍

      Windows系统内存分析工具的介绍(进程管理器,资源管理器,性能监视器, VMMap, RamMap,PoolMon) 微软官方提供多种工具来分析Windows 的内存使用情况,除了系统自带的任 ...

  5. windows内核情景分析之—— KeRaiseIrql函数与KeLowerIrql()函数

    windows内核情景分析之—— KeRaiseIrql函数与KeLowerIrql()函数 1.KeRaiseIrql函数 这个 KeRaiseIrql() 只是简单地调用 hal 模块的 KfRa ...

  6. [14]Windows内核情景分析 --- 文件系统

    文件系统 一台机器上可以安装很多物理介质来存放资料(如磁盘.光盘.软盘.U盘等).各种物理介质千差万别,都配备有各自的驱动程序,为了统一地访问这些物理介质,windows设计了文件系统机制.应用程序要 ...

  7. windows 服务器系统日志分析及安全

    一.利用Windows自带的防火墙日志检测入侵 下面是一条防火墙日志记录 2005-01-1300:35:04OPENTCP61.145.129.13364.233.189.104495980 200 ...

  8. 通过Windows常见性能计数器分析服务器性能瓶颈

    转载 http://www.cnblogs./junzhongxu/archive/2011/02/15/1954889.html 监测对象 Ø System(系统) l %Total Process ...

  9. [15]Windows内核情景分析 --- 权限管理

    Windows系统是支持多用户的.每个文件可以设置一个访问控制表(即ACL),在ACL中规定每个用户.每个组对该文件的访问权限.不过,只有Ntfs文件系统中的文件才支持ACL. (Ntfs文件系统中, ...

随机推荐

  1. Linux Crontab语法

    Crontab语法 Lists 链表值 : 逗号,表示并列,要依次序;Examples:"1,2,5,9", "0-4,8-12". Ranges of num ...

  2. 弱省互测#0 t1

    题意 给一个\(N \times M\)的01网格,1不能走,从起点\((1, 1)\)走到\((N, M)\),每次只能向下或向右走一格,问两条不相交的路径的方案数.(n, m<=1000) ...

  3. 【BZOJ1911】[Apio2010]特别行动队 斜率优化DP

    想了好久啊....——黑字为第一次更新.——这里是第二次更新,维护上下凸包据题而论,第一种方法是化式子的方法,需要好的化式子的方法,第二种是偏向几何,十分好想,纯正的维护凸包的方法,推荐. 用了我感觉 ...

  4. (转)名称和本质 by王珢

    名称和本质 by 王垠 我很喜欢 Richard Feynman 写的 <What Do You Care What Other People Think>.在最开头 Feynman 讲到 ...

  5. 移动前端不得不了解的html5 head 头标签

    本文主要内容来自一丝的常用的 HTML 头部标签和百度FEX的HTML head 头标签. 移动端的工作已经越来越成为前端工作的重要内容,除了平常的项目开发,HTML 头部标签功能,特别是meta标签 ...

  6. 如何在select下拉列表中添加复选框?

    近来在给一个公司做考试系统的项目,遇到的问题不少,但其中的几个让我对表单的使用颇为感兴趣,前端程序员都知道,下拉列表有select标签,复选框有checkbox,但是两者合在一起却少有人去研究,当时接 ...

  7. 利用DOS批处理实现定时关机操作

    10月1放假回来,寝室晚上10:30就停电了,最无法让人理解的是第二天早上8:00才来电.原来晚上电脑都是不关机的,开着WiFi一直到天亮,可是现在不行了,电脑如果一直开着第二天早上起来电脑肯定没电, ...

  8. 下载判断Android和iOS

    //下载 function down(){ var url = ''; var u = navigator.userAgent, app = navigator.appVersion; var isA ...

  9. <2048>调查报告心得与体会

    老师这次给我们布置了一个任务,就是让我们写一份属于自己的调查报告,针对这个任务,我们小组的六个人通过积极的讨论,提出了一些关于我们产品的问题,当然这些问题并不是很全面,因为我们是从自己的角度出发,无法 ...

  10. Visual Studio 2015 CTP6 发布

    微软发布ASP.NET 5 支持在Windows.Mac和Linux上构建程序,Visual Studio 2015 CTP6(社区预览版)现已发布了.感兴趣的朋友们可以登录官网下载[http://w ...