windows server 硬盘满了怎么清理?

本文主要介绍我在维护windows server服务器期间总结的一些磁盘清理方式。如对您有所帮助,不甚荣幸。

一、C盘清理

我们在使用服务器的时候基本不会在C盘安装软件,那么用久了发现C盘满了,提示空间不足。

1. System32的日志文件

打开文件夹C:\Windows\System32\LogFiles 。全部删掉(跳过正在使用中的文件)。
在这里插入图片描述

2. IIS的日志文件

打开文件夹C:\inetpub\logs\LogFiles 。全部删掉(跳过正在使用中的文件)。
在这里插入图片描述

3. .Net Framework的缓存文件

.Net Framework也会有很多缓存文件:
在这里插入图片描述
分别找到Temporary ASP.NET Files文件(如果有),清一下缓存文件。
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files
在这里插入图片描述

4. 清理其他不必要文件

服务器IIS日志清理后,清理以下文件:
C:\WINDOWS\PCHealth\ERRORREP\QSIGNOFF
C:\WINDOWS\PCHealth\ERRORREP\UserDumps
C:\Windows\Temp

5. 虚拟内存从c盘移到其他硬盘

服务器虚拟内存默认是在C盘的,将虚拟内存转移到其他盘,如D盘或是E盘,可以增加C盘的空间,虚拟内存设置方法点击这里查看。
虚拟内存设置到其他盘服务器需要重启才能生效,服务器重启也可以关闭很多系统产生的缓存文件
删除不必要的文件对清理C盘作用不大,主要就是清理IIS系统日志和虚拟内存设置可以解决服务器c盘空间不足的问题
最后说一下,很多程序路径默认都是C盘,在安装的时候路径可以更换到D盘或是E盘,C盘很多都是系统文件,不好清理。

6. .net 运行时(runtime)的清理

.NET 程序员对 .NET肯定都不陌生。.NET 是由 Microsoft 创建的开源开发人员平台,用于生成许多不同类型的应用程序.
以我公司某一win server 服务器的程序和功能界面为例,按照大小排序可以看到.net 运行环境占用了大量的磁盘空间,而.net 运行环境都是强制安装在C盘的。这里我们有两种清理方案:
在这里插入图片描述

1.清理已经不再使用的.NET版本

从图中可以看到.net 版本分别有.N我 ET5.0、.NET Core 3.1、.NET Core 2.2。
这里我们需要判断服务器上部署的web应用有没有用到相关的.NET 版本。比方说,由于公司所有web应用都从早期的.NET Core 2.2升级到了.NET5.0和.NET Core 3.1此时就可以卸载.NET core 2.2。后期可以继续考虑全部升级到.NET5.0。这样就又能清理出不小的空间。

2.用.NET Rumtime代替.NET SDK

.NET SDK是微软提供的SDK用于,开发编译调试.NET 应用,说白了就是给Visual Studio用的。而一般而言,服务器上根本不需要安装VisualStudio来开发.NET应用,只需要部署.NET应用即可。
微软关于.NET SDK的介绍:
在这里插入图片描述
微软关于.NET Rumtime的介绍:

在这里插入图片描述
因此,我们可以卸载.NET SDK,而用相应版本的.NET Runtime取而代之。C盘空间会小很多。

二、其他软件清理

1. 清理各大软件日志

1.1 禅道:

禅道的备份文件路径:C:\xampp\zentao\tmp。用的越久占用越大,可以删掉。
在这里插入图片描述

1.2 数据库:

1.2.1 Sql server:

1.2.1.1:整理索引碎片

SQL Server 在使用过程中会产生索引碎片。我们可以通过整理索引碎片来压缩空间。

SQL Server查看数据库索引碎片情况的 SQL 语句:

-- SQL Server查看数据库索引碎片情况
SELECT OBJECT_NAME(ind.OBJECT_ID) AS TableName, 
ind.name AS IndexName, indexstats.index_type_desc AS IndexType, 
indexstats.avg_fragmentation_in_percent 
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, NULL) indexstats 
INNER JOIN sys.indexes ind  
ON ind.object_id = indexstats.object_id 
AND ind.index_id = indexstats.index_id 
WHERE indexstats.avg_fragmentation_in_percent > 30 
ORDER BY indexstats.avg_fragmentation_in_percent DESC

运行结果:
在这里插入图片描述
索引碎片整理的四种方法:
1)删除索引并重建
2)使用 DROP_EXISTING 语句重建索引
3)使用 ALTER INDEX REBUILD 语句重建索引
4)使用 ALTER INDEX REORGANIZE 重新组织索引
详见:SQL Server索引的维护 - 索引碎片、填充因子
我们使用方法主要是方法三 Rebuild (重建索引)和方法四 Reorganize (重新组织索引)。
重建索引,顾名思义就是删掉原来的索引并重新建立索引。空间回收程度高,操作比较危险,操作比较久。
重新组织索引,顾名思义就是不删掉原来的索引,在原有的基础上,重新组织索引。可以一定程度回收空间,但操作比较安全,操作速度快。

SQL Server自动重新组织索引的SQL 语句:

-- SQL Server重新组织索引
SET NOCOUNT ON
DECLARE @Objectid INT, @Indexid INT,@schemaname VARCHAR(100),@tablename VARCHAR(300),@ixname VARCHAR(500),@avg_fip float,@command VARCHAR(4000)
DECLARE IX_Cursor CURSOR FOR
SELECT  A.object_id,A.index_id,QUOTENAME(SS.NAME) AS schemaname,QUOTENAME(OBJECT_NAME(B.object_id,B.database_id))as tablename ,QUOTENAME(A.name) AS ixname,B.avg_fragmentation_in_percent AS avg_fip FROM sys.indexes A inner join  sys.dm_db_index_physical_stats(DB_ID(),NULL,NULL,NULL,'LIMITED') AS B 
ON A.object_id=B.object_id and A.index_id=B.index_id 
INNER JOIN SYS.OBJECTS OS ON A.object_id=OS.object_id
INNER JOIN sys.schemas SS ON OS.schema_id=SS.schema_id
WHERE B.avg_fragmentation_in_percent>10 and B.page_count>20    AND A.index_id>0 AND A.IS_DISABLED<>1--AND OS.name='book'
ORDER BY tablename,ixname
OPEN IX_Cursor
FETCH NEXT FROM IX_Cursor INTO @Objectid,@Indexid,@schemaname,@tablename,@ixname,@avg_fip
WHILE @@FETCH_STATUS=0
BEGIN
    
    IF @avg_fip<30.0
    SET @command=N'ALTER  INDEX '+@ixname+N' ON '+@schemaname+N'.'+ @tablename+N' REORGANIZE ';
    IF @avg_fip>=30.0 AND @Indexid=1
        BEGIN
        IF EXISTS (SELECT * FROM SYS.columns WHERE OBJECT_ID=@Objectid AND max_length in(-1,16))
        SET @command=N'ALTER  INDEX '+@ixname+N' ON '+@schemaname+N'.'+ @tablename+N' REBUILD ';
        ELSE
        SET @command=N'ALTER  INDEX '+@ixname+N' ON '+@schemaname+N'.'+ @tablename+N' REBUILD '+N' WITH (ONLINE = ON)';
        END
    IF @avg_fip>=30.0 AND @Indexid>1
        BEGIN    
        IF EXISTS (SELECT * FROM  SYS.index_columns IC INNER JOIN SYS.columns CS ON CS.OBJECT_ID=IC.OBJECT_ID AND CS.column_id=IC.column_id                   WHERE  IC.OBJECT_ID=@Objectid AND IC.index_id=@Indexid AND CS.max_length in(-1,16) )
        SET @command=N'ALTER  INDEX '+@ixname+N' ON '+@schemaname+N'.'+ @tablename+N' REBUILD ';
        ELSE
        SET @command=N'ALTER  INDEX '+@ixname+N' ON '+@schemaname+N'.'+ @tablename+N' REBUILD '+N' WITH (ONLINE = ON)';
        END
    --PRINT @command
    EXEC(@command)
 
 FETCH NEXT FROM IX_Cursor INTO @Objectid,@Indexid,@schemaname,@tablename,@ixname,@avg_fip
END

CLOSE IX_Cursor
DEALLOCATE IX_Cursor

运行结果:
在这里插入图片描述
在这里插入图片描述
手动重新生成索引

在这里插入图片描述
在这里插入图片描述

1.2.2 Mysql:

1.2.2.1 Mysql binlog日志清理:

MySQL中的binlog日志记录了数据库中数据的变动,便于对数据的基于时间点和基于位置的恢复,但是binlog也会日渐增大,占用很大的磁盘空间,因此,要对binlog使用正确安全的方法清理掉一部分没用的日志。
具体操作参考文章:mysql正确清理binlog日志的方法

1.3 :腾讯电脑管家智能备份文件夹 qqpcmgr_docpro

如果你平时使用腾讯电脑管家,它会生成一个qqpcmgr_docpro文件。本目录由电脑管家-文档守护者生成,用于存储“智能备份”产生的文件。
在这里插入图片描述
这是腾讯官方的说明文档:
在这里插入图片描述
平时注意删除或者限制大小。

2. 常用硬盘清理工具整理

未完待续


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

猜你喜欢

转载自blog.csdn.net/guigenyi/article/details/128420654