Windows server 磁盘删除文件不释放空间的解决办法

 故事背景

我的Gen8上有2快各4T的数据盘,最近由于D盘住了很多小姐姐,磁盘红盘满了……于是使用剪贴来给小姐姐们搬家到E盘,事实上搬家成功了,D盘上小姐姐确实没了,但是小姐姐原来占用的空间没释放……

破案

首先清空回收站,回收站空空如也……

然后重启服务器,空间依然没释放……

最后祭出神器SpaceSniffer来查看哪个文件夹占用的空间最大,结果是system volume information,直接删是删不掉的,因为是系统的权限,上PE应该是可以的,但是建议你不要这么做,我也很庆幸没有这么做。



网上搜索这个文件夹一般是用来存储系统备份和卷影副本的,然后发现服务器系统压根没开备份,卷影副本没开,就算开了也是可以设置配额的,经过Google了无数次才发现是因为我启用了“重复数据删除”的原因造成的。

凶手的面目

重复数据删除,是win server 2012开始有的功能,我的Gen8都装上server 2019了,哪能不启用?!

我最开始对这个功能的理解应该是和云盘一样根据文件的哈希值创建硬链接,在硬盘上只存一份,但事实上巨硬使用的是很硬核的块存储办法,就是把文件相同的块只存储1份,具体原理可以参考巨硬这个链接:了解重复数据删除

了解了原理你就明白我为啥庆幸没用PE直接强制删除system volume information这个文件夹了,因为真删了,这个盘里边其他的数据估计也就都要丢失了。

找回空间

删除文件,空间没释放,本质上是因为删除的只是文件的索引节点信息,文件的块信息没有被及时删除,如果你不想管理的话,“重复数据删除"功能默认的定时计划是一周清理一次垃圾,你服务器开着一个星期内空间一定会回来。

治标

立即运行“重复数据删除" 的垃圾回收功能即可。

Start-DedupJob -Type GarbageCollection -Priority High -Volume *Volume:* //红色为卷标,如 D: ,运行后虽然没啥反应,但是不要急,要有耐心。
get-dedupjob //检查状态,只要刚才的任务还是run就行,根据数据量不同,耗时也不同,你会发现空间开始慢慢的一点点在释放。


治本

治标完后为了避免下次还出现类似情况就应该彻底关闭“重复数据删除"这个功能,但是这个功能要是通过GUI直接关闭或删除后还是有问题,因为正常的文件现在还是块存储着呢,我们需要做如下几点步骤:
1、在卷中设置重复数据删除,再排除文件夹中设置为整个卷。
2、运行“取消优化作业”命令

Start-DedupJob -Type Unoptimization -Priority High  -Volume <Desired-Volume>
3、运行查看状态命令,等待上一步的任务完毕才可以下一步
get-dedupjob
4、运行“垃圾清理”命令
Start-DedupJob -Type GarbageCollection -Priority High -Volume <Desired-Volume>  
5、运行步骤3的命令来查看运行状态
6、服务器彻底删除重复数据删除这个功能。

参考:

感想

个人用作NAS服务器的win server 完全没必要使用重复数据删除这个功能,如果电影比较多建议使用tinyMediaManager来对电影进行管理,本身可以发现重复的电影,哪怕一个是1080p一个是720p的,如果使用了重复数据删除功能的话,假如分区出现问题,或者硬盘出现故障的话数据恢复都不能恢复。
卷影副本这个功能针对共享文件夹倒是可以使用,但是针对个人用处依然很鸡肋,默认是每天2次,如果误删的文件是备份后的数据,那么依然不能直接还原,还是需要找寻数据恢复软件。


评论

此博客中的热门博文

搭梯子:V2RAY配置WebSocket + TLS + Web

Oracle Cloud甲骨文免费VPS 梯子防火墙设置

在vps上搭建Zerotier的Moon节点