我一直想知道的东西。在Windows上,convert命令能够无损地将FAT16或FAT32磁盘转换为NTFS(即不丢失任何数据):
convert X: /fs:ntfs
Windows如何精确执行此操作的技术细节是什么?在不擦除磁盘上的数据的情况下转换磁盘的文件系统正在做什么,并且将相同的原理应用于其他文件系统是否会起作用?
我知道NTFS是专有的文件系统,因此详细信息可能只有Microsoft自己知道,但是我想知道他们是否已发布有关此问题的任何文档,或者其他人是否足够挑剔Windows / CMD来查找。
以下问题是关于exFAT到FAT32的问题,但这是一个完全不同的问题,涉及完全不同的文件系统,并且答案也完全不同。
再次,我特别想知道convert
在不擦除数据的情况下如何转换磁盘的文件系统,以及是否对其他文件系统应用相同的原理也想知道。
首先,我想区分两个截然不同的事物:
convert.exe
如何处理FAT32和NTFS之间的就地文件系统转换。对于第一个,我们主要由Microsoft来发布这些信息,因为任何访问Windows源程序的人都必须签署NDA。只有得到Microsoft法律团队的批准,它才会被释放。当然,也许有人读了这个问题,然后从泄漏的Windows源代码中获得了非法副本,并从代码中找出来了,但这是合法的灰色区域。
因此,我不会回答第一个问题,因为我没有答案。
但是,我将回答第二个问题。
文件系统的历史悠久,在许多情况下,我们都希望从一个文件系统升级到另一个文件系统,而无需擦除操作系统,重新安装或使用第二个磁盘。仅举几例:
开源fstransform程序旨在在许多不同的文件系统之间进行转换(有一些警告和限制)-它包括许多/最常见的Linux文件系统,以及令人印象深刻的NTFS!尽管它支持许多其他文件系统,但它尚不支持FAT32。
阅读其C ++代码将为您提供所需的有关在不同文件系统之间进行转换的通用算法的最详细的技术知识,即使原始文件系统作者既未计划也不设计兼容性或互操作性(源文件系统或目标文件系统均未计划或设计) !)。
一般的过程大致如下:
值得注意的是,至少最后两个步骤不是原子的; 这意味着,日记文件系统(例如NTFS,reiserfs,XFS,zfs等)的通常原子性保证不可用。如果系统崩溃,电源关闭,或者即使执行转换的用户空间程序在此过程中崩溃或挂起,文件系统也将需要数据恢复专家来恢复您的数据或恢复文件系统(旧的或新的)的完整性。在这些“破坏性”操作期间,由于该过程固有地绕过了旧文件系统的日志(为了从一个文件系统更改为日志文件,所以该过程)基础存储介质以一种不受文件系统日志备份的方式对关键数据进行破坏性覆盖。 FS到另一个文件,您无法通过用其他未知文件覆盖其核心元数据来告诉旧文件系统“安全地杀死自身”。
相比之下,实际上,要求执行数据日志记录的文件系统执行普通写入是原子的:要么是整个写入已完成,要么根本没有完成(如果日志记录区域的不完整部分写入可以回滚,则可以回退)。系统在写入过程中崩溃,这是系统BSOD或内核崩溃后启动时程序fsck
或chkdsk
程序的工作。)
进行就地FS转换非常冒险-就像BIOS闪存一样冒险(此外,在移动设备上,您可以通过无法启动的OS永久固定设备),因为不能保证许多操作的安全性,并且这往往需要花费很长时间才能完成,因此用户很有可能会认为操作系统已挂起,并且在转换过程中将其重新启动,或者电池供电的设备用完了电池。
为了更深入地了解如何可以做到这一点更安全与被两个文件系统的了解合作设计一个与其它之间的转换(这是,据我所知,与HFS +到的APF转换iOS上的情况下),这迷人演讲采用法医方法来弄清楚APFS到底发生了什么。它不能直接解决转换问题,但是可以从提供的信息中推断出有关转换的一些细节。
这就是说,可能永远找不到您确切的原始问题的明确答案,但是我认为提供有关就地FS转换的一般过程的大量知识应该为您提供足够的线索,以消除可能出现的神秘感成为...的过程convert.exe
。
顺便说一句,我本来以为“哦,太好了,ReactOS已经实现了这个工具,我们只能查看源代码!” -不 他们尚未在ReactOS上公开实现convert.exe。如果系统上的所有用户都使用过它,则他们必须正在执行专有的MS Windows二进制文件。否则,我猜他们根本不会在ReactOS中提供此实用程序。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句