问题起因?

可能你会比较奇怪,我这什么鬼情况,原来标题:显示大小与分配大小不一致+DBR记录的分区扇区小于实际数目+$Bitmap卷位图错误,这么长~~~~。

前几日发现C盘实在吃紧,使用不便就算了,Windows更新都罢工了,决定还是重新整一下分区大小分配。使用的是SSD,此前分配了约10G左右给HDD做L2Cache(PrimoCache的二级缓存),后来因为HDD罢工现在变成全SSD笔记本了,也可以不需要这二级缓存了。

按照常理来说,这个操作非常简单,先到PrimoCache解除L2卷,然后使用Windows自带的磁盘管理删掉L2的分区,然后扩容C盘即可。于是一波操作没有任何报错后,发现C盘在磁盘管理中显示93.12GB,但卷容量、资源管理器和其他应用中显示C盘只有83.12GB,那么问题来了,这10G去哪了?

可以看到在磁盘管理中上方显示的卷容量和下方明显不一致

由于这是第二次碰到这个问题了,准备刨一刨根。上一次遇到非常相似的情况是在给一个Win Server挂的iSCSI盘做分区的时候,分区扩容但实际可用容量没变,后来直接删了重建了,当时还以为是不是什么控制器问题或者Windows Explorer出Bug了,现在想想可能PrimoCache是罪魁祸首。由于是基于区块缓存,之前开写缓还有数据丢失问题,现在只开读缓,没想到还是出了岔子。

修复步骤

由于这是很明显的分区表/索引问题,而不是硬件造成的,所以优先试一下Windows自带的磁盘检查,按照常理来说这个问题应该能够发现?运气好的话可能修修正了。但实际情况试了发现,由于是系统盘,在启动后检查只能查出有错误,但未能修复。那只能先敲一波预约了开机检查。

重启自动修复后,再次检查发现还是有错误?后来琢磨是C盘剩余空间太小,不足以提供回复损坏文件的空间,遂尽力清了几波,最后查错不会报错了。但空间还是没有变化??

既然如此那只能上第三方工具瞅瞅了,最常见的DiekGenius,扫描磁盘分区表错误,直接报 DBR记录的分区扇区小于实际数目。但给出的修复方案是重新格式化?Excuse me?既然分区都能正常引导驱动,那应该还不至于到格式化的地步。

问了一波度娘后,发现网传解决方案都不是很靠谱,有说用傲梅做4K对齐的,又说要上低格的。那我先是试试DG能不能先缩小分区再复原,达到校准更新的目的,但DG直接给出Bitmap文件错误,而且没有任何修复方案。后又用傲梅做4K对齐,然而磁盘分区都是已经做过对齐的。

最后还是咕鸽娘,找到了一个类似的博文:DBR记录的分区扇区总数溢出的解决方法-nullas,经过几波操作,终于修正了,下面说下详细操作再做一些补充。

文中提到按照NTFS模板修改分区扇区数,但楼下5楼的评论也吸引到了我的注意,到底扇区数要不要减一呢?还是对照修改下比较稳妥,先起DG,定位到一个正常的分区,查看一下总扇区树。

可以看到分区L在DG中显示的总扇区数为19178176

然后起WinHex大杀器, 先Tools->Open Disk。

注意!使用WinHex等工具,都是对磁盘的直接编辑操作,不要手滑脸滚键盘导致磁盘内容被意外修改或损坏。

然后选择需要操作的磁盘,注意不是选逻辑分区。

单击选中需要操作的分区,以定位偏移。

然后菜单选择 View->Template Manager,中文版就是 查看->模板管理器,也可以用快捷键Alt+F12调出。注意这边要用完整版的WinHex,不要用试用版之类的,否则没有分区模板分析之类的,或者报User.txt错误。

我分区是NTFS,选择"Boot Sector NTFS"。

可以看到展开了一个键值设定,下图是之前DG中查看的分区L,可以啊看到Total sectors excl. bac 是19178175,确实是比DG中显示的减1。

那现在就直接操作C盘了,在DG中看到的总扇区数,到WinHex编辑时减一填入。

分区C,DG显示总扇区数:19520481
修改之前的扇区数为:174312816,此处填入 19520480。

关闭即提示引导扇区修改,Yes保存。

在主视图Ctrl+S再保存。

如果是当前运行系统的系统盘可能会被占用,要到PE下编辑就成功。

保存完就皆大欢喜?重启发现直接Boom,现在直接系统都进不去了,直接转圈后无限重启。跑到PE里一看,分区直接读不出内容和容量了,且右键属性检查磁盘错误都直接提示无法访问。但是用DG查错时发现,此时磁盘一键没有分区表错误了,有点小刺激呢。不过调整容量的话还是会提示Bitmap文件错误。

还是用Chkdsk查错一波,既然属性页点不进去了,那只能命令行:

chkdsk E: /F
**(由于该分区在PE中分配为E,请以实际为准)

OK Fine!这次chkdsk很给面子,扫到Bitmap错误并且修复了,现在在PE中已经可以看到分区正常显示容量93GB,且可以正常访问,重启后就能正常进系统了。

可能很多人到这也就结束了,但毕竟是分区出错,难免可能产生文件损坏之类的,为了以后平安的运行系统,还是检查一波系统文件有没有受到影响,现在网速也快乐,巨硬也有国内节点了,使用SFX进行在线检查就很方便,可以把各个系统包的文件全部检查修复(部分除外)。

至此,就结束了,从深夜0点折腾到1点,总的来说是一波无损操作,但如果当中出问题慌到,可能现在就在重做系统ing了。数据无价,磁盘操作需谨慎。


升空的焰火,从下面看还是从侧面看?