Windows autochk和chkdsk有什么区别
主要分是否磁盘检测维度
一、磁盘检测维度
autochk
和 chkdsk
都是 Windows 系统中用于检查和修复磁盘错误的实用程序,但它们在使用场景和执行方式上有所不同。以下是它们之间的主要区别:
1、使用场景:
autochk
(自动检查)是在 Windows 启动过程中自动运行的实用程序。当系统检测到某个磁盘卷可能存在问题时,autochk
会自动运行,检查并修复问题。通常,用户无需手动运行autochk
。chkdsk
(检查磁盘)是一个手动运行的实用程序,用户可以在命令提示符或 Windows 资源管理器中运行它。chkdsk
允许用户指定要检查的磁盘卷,以及要执行的检查和修复操作。
2、执行方式:
autochk
在 Windows 启动过程中运行,此时文件系统尚未加载。因此,autochk
可以在未加载文件系统的情况下对磁盘进行全面检查和修复。chkdsk
在 Windows 运行时运行,此时文件系统已加载。如果chkdsk
需要对磁盘进行独占访问(例如,修复系统卷),则可能需要在下次启动时进行检查。
总之,autochk
和 chkdsk
都是用于检查和修复磁盘错误的实用程序,但它们在使用场景和执行方式上有所不同。autochk
在系统启动时自动运行,而 chkdsk
通常由用户手动运行。
二、其他维度
autochk
是一个多功能实用程序,它在 Windows 启动时运行,以确保操作系统的正常运行。除了检查和修复磁盘错误之外,autochk
还会执行以下任务:
- 检查注册表:
autochk
会在启动时检查 Windows 注册表,以确保注册表的一致性和完整性。如果发现问题,autochk
可能会尝试修复损坏的注册表项。 - 检查卷脏标志:
autochk
会检查文件系统上的卷脏标志(Dirty Bit),以确定是否需要运行磁盘检查。如果卷脏标志被设置,表明文件系统可能存在问题,autochk
将运行chkdsk
以检查和修复磁盘错误。 - 其他启动时的逻辑检查:
autochk
还可能执行其他一些与系统完整性和稳定性相关的启动时逻辑检查。
总之,autochk
不仅用于检查和修复磁盘错误,还负责执行其他一些启动时任务(非taskschd.msc计划任务),以确保操作系统的正常运行。
曾经遇到个奇葩案例,一个server2019自定义镜像啥都没变过,开同样的机型,2024.1.9之前创建的机器首次开机速度一样快,2024.1.9之后创建的机器首次开机速度比之前的慢了不下一倍。针对这个问题,做了如下研究:
注册表路径:C:WindowsSystem32config
1、导出原始.raw镜像,不改configsystem和configsoftware内容,只把时间改到1月10日后,转为vmdk,在VMware虚拟机里首次开机耗时长
2、导出原始.raw镜像,改configsystem和configsoftware(集成wpt到注册表,注册表文件时间自动更新了)已经验证过首次开机耗时短,且在集成wpt后再把2个注册表的时间改到1月9日之前,转为vmdk,在VMware虚拟机里首次开机耗时也短。规律就是只要动了configsystem和configsoftware注册表内容,就失去开机耗时长的现场了。
综上,跟注册表文件的时间戳关系不大,跟注册表文件内容的变化有关。百思不得其解,最后想到时间因子是关键,毕竟云平台侧啥都没变,镜像放了几个月突然到某个时间点就开机耗时变长了。我能想到的就是Server2019的生命周期,正好Mainstream End Date就是2024.1.9
而我最后一次测试开机耗时正常就是2024.1.9,过了1周,2024.1.16发现开机耗时变长
不清楚2024.1.9-2024.1.16期间发生了什么,云平台侧查了好几圈都没发现问题
经过十几次测试,发现原镜像的注册表改动一下,现场就丢失了
联想到微软的多个操作系统的end date都在1.10附近,猜测跟这个关系很大,记得上大学时做了一个小软件,当时给这个软件设置了过期时间,到了未来那个时间后就会自动出现一种强制交互机制,如果微软有这种类似机制,完全有可能在Mainstream End Date后触发autochk重新校验硬件、文件系统、注册表,这点通过过滤系统日志EventID 4688能看到,可参考我这篇文档https://cloud.tencent.com/developer/article/2322936