有什么理由让 Windows 的主分区/驱动器 C: 保持较小?

有什么理由让 Windows 的主分区/驱动器 C: 保持较小?

大约二十年前,在我工作的时候,IT 专家会将 Windows 主分区(C 盘)的大小保持在与其他分区相比极小的水平。他们认为这样可以让 PC 以最佳速度运行而不会减慢速度。

但缺点是,如果 C: 盘空间太小,很容易就被占满,很快你就无法安装新软件了,因为空间不够了。即使我在 D: 盘安装了软件,其中的一部分也总是被复制到 C: 盘,这样就把 C: 盘占满了。

我的问题是这种做法还好吗?为什么要这样做。它的主要优点是什么?一个明显的优势是,如果主分区崩溃,你的数据在辅助分区中是安全的。

我之所以问这个问题是因为我正在尝试更新 Visual Studio,但是无法更新,因为主分区中只剩下 24MB。

答案1

在我近二十年前的工作中,IT 专家会将 Windows 的主分区(C 盘)的大小保持在与其他分区相比极小的水平。他们认为这可以让 PC 以最佳速度运行而不会减慢速度。[...] 我的问题是这种做法仍然有效吗?

一般来说:

在旧版 Windows 中,大型驱动器(更准确地说:大型文件系统)存在性能问题,主要是因为胖的Windows 使用的文件系统不能很好地支持大型文件系统。但是,所有现代 Windows 安装都使用 NTFS,这解决了这些问题。例如在大于 5 或​​ 6 TB 的卷中,NTFS 性能是否会显著下降?,这说明即使是 TB 大小的分区通常也不会有问题。

如今,通常没有理由不使用单个大型 C: 分区。Microsoft 自己的安装程序默认创建单个大型 C: 驱动器。如果有充分的理由创建单独的数据分区,安装程序会提供它 - 为什么 Microsoft 会让您以产生问题的方式安装 Windows?

主要的反对多个驱动器的理由是它增加了复杂性——这对 IT 来说总是不好的。它带来了新的问题,例如:

  • 您需要决定将哪些文件放到哪个驱动器上(并适当地更改设置,单击安装程序中的内容等)
  • 某些(编写不良的)软件可能不喜欢被放在 C 盘以外的其他驱动器上:
  • 你可能会发现一个分区上的可用空间太少,而另一个分区上仍然有可用空间,这可能很难修复

一些特殊情况其中多个分区仍然有意义:

  • 如果您想要双启动,您(通常)需要为每个操作系统安装单独的分区(但每个安装仍然只有一个分区)。
  • 如果您有多个驱动器(特别是具有不同特性的驱动器,例如 SSD 和 HD),您可能需要挑选并将哪个驱动器放到哪里 - 在这种情况下,例如将驱动器 C:放在 SSD 上而将 D:放在 HD 上是有意义的。

为了解决经常提出的一些支持小型/独立分区的论点:

  • 小分区更容易备份

你真的应该备份全部无论如何,将数据拆分到多个分区其实没什么用。另外,如果您确实需要这样做,我知道的所有备份软件都可以让您有选择地备份分区的一部分。

  • 如果一个分区损坏,另一个分区可能仍然正常

虽然理论上确实如此,但无法保证损坏会很好地限制在一个分区内(如果出现问题,则更难检查以确保这一点),因此这只能提供有限的保证。另外,如果您有良好的冗余备份,则增加的安全性通常很小,不值得费心。如果您没有备份,您就必须很多更大的问题……

  • 如果你将所有用户数据放在数据分区上,则可以擦除并重新安装/不备份操作系统分区,因为那里没有用户数据

虽然理论上可能确实如此,但实际上许多程序会将设置和其他重要数据写入 C 盘:(因为不幸的是它们被硬编码为这样做,或者因为您不小心忘记更改它们的设置)。因此,恕我直言,依赖这一点非常危险。此外,无论如何您都需要良好的备份(见上文),因此重新安装后您可以恢复备份,这将为您提供相同的结果(只是更安全)。现代 Windows 版本已将用户数据保存在单独的目录(用户配置文件目录)中,因此可以有选择地恢复。


也可以看看您会把软件安装在与Windows系统相同的分区上吗?了解更多信息。

答案2

这种做法的历史原因很可能根植于旋转磁性硬盘的性能特性。旋转磁盘上顺序访问速度最高的区域是最外层区域(靠近驱动器的开始处)。

如果您将整个驱动器用于操作系统,迟早(通过更新等)您的操作系统文件会分散到整个磁盘表面。因此,为了确保操作系统文件物理上位于最快的磁盘区域,您可以在驱动器的开头创建一个小的系统分区,并将驱动器的其余部分分散到任意数量的数据分区中。

寻道延迟也部分取决于磁头移动的距离,因此将所有小文件保持彼此靠近对于旋转驱动器也具有优势。

随着SSD存储的出现,这种做法已经失去了所有意义。

答案3

简短回答:不再。

根据我的经验(20 多年的 IT 管理工作),主要原因对于这种做法(其他列表如下)就是它用户基本上不信任 Windows 来管理他们的数据和硬盘空间。

长期以来,Windows 一直无法保持长期稳定性、自我清理、保持系统分区健康以及提供方便的用户数据访问。因此,用户宁愿拒绝 Windows 提供的文件系统层次结构,而在其之外自行开发。系统分区也充当了贫民窟的角色,阻止 Windows 在其范围之外制造混乱。

  • 包括微软在内的许多产品都无法彻底卸载,或导致兼容性和稳定性问题(最突出的表现就是到处都有残留的文件和注册表项,DLL地狱在其所有版本中)。操作系统创建的许多文件事后都没有清理(日志、Windows 更新等),导致操作系统随着时间的推移占用越来越多的空间。在 Windows 95 甚至 XP 时代,建议甚至建议偶尔重新安装一次操作系统。重新安装操作系统需要能够保证清除操作系统及其分区(同时清除文件系统中的任何虚假数据)——如果没有多个分区,这是不可能的。而且,分割驱动器而不丢失数据只有使用专门的程序才有可能(这些程序可能会有自己的令人讨厌的意外,例如在遇到坏扇区时退出并使数据处于不可用状态)。各种“清理”程序缓解了这个问题,但由于它们的逻辑是基于逆向工程和观察到的行为,更有可能导致重大故障,从而迫使重新安装(例如,微软RegClean自己的实用程序在 Office 2007 发布后被取消,因为它打破了对其所基于的注册表的假设)。许多程序将其数据保存到任意位置,这使得分离用户数据和操作系统数据变得更加困难,也使得用户在操作系统层次结构之外安装程序。
    • 微软尝试了多种方法来增强稳定性,并取得了不同程度的成功(共享 DLLWindows 文件保护及其后续产品 TrustedInstaller,并行子系统.NET 模块的单独存储库,其存储结构可防止版本和供应商冲突)。Windows Installer 的最新版本甚至具有基本的依赖性检查功能(可能是最后一个包含该功能的主流软件包管理器)。
    • 在第三方软件遵守最佳实践方面,他们在与编写粗糙但使用充分的软件保持兼容性(否则,其用户不会升级到新的 Windows 版本)之间进行权衡——这导致操作系统中出现大量令人难以置信的混乱和变通方法,包括未记录的 API 行为,实时修补第三方程序以修复其中的错误几个级别注册表和文件系统虚拟化——以及强制第三方供应商遵守认证徽标计划和驱动程序签名计划(从 Vista 开始强制执行)等措施。
  • 用户数据被埋在用户个人资料下的一条长路径下,这使得浏览和指定路径变得不方便。路径也用于长名字,有空格(命令 shell 无处不在的祸根)和国家字符(编程语言的主要问题,除了最近全面支持 Unicode 的语言),并且是特定于语言环境的(!),没有 winapi 访问权限就无法获得(!!)(破坏了脚本中的任何国际化工作),所有这些都无济于事。因此,
    将数据放在单独驱动器的根目录中被视为比 Windows 提供的数据结构更方便的数据结构。
    • 这个问题在最近的 Windows 版本中才得到修复。Vista 中路径本身也得到了修复,压缩了长名称,消除了空格和本地化名称。Win7 中修复了浏览问题,它为用户配置文件的根目录及其下的大多数其他目录提供了“开始”菜单条目,并在文件选择对话框中提供了诸如永久“收藏夹”文件夹之类的内容,并提供了合理的默认值,例如Downloads,这样就无需每次都浏览它们。
  • 总而言之,微软的努力最终取得了成果。自 Win7 以来,操作系统、原版和第三方软件(包括清理实用程序)都足够稳定和运行良好,硬盘容量也足够大,因此在典型工作站的整个使用寿命期间无需重新安装操作系统。原版层次结构足够实用和易于访问,因此人们可以在日常实践中接受和使用它。

次要原因是:

  • 早期软件(BIOS 和操作系统中的文件系统和分区支持)在支持大量数据方面落后于硬盘,需要将硬盘分成几部分才能充分利用其容量。
    • 这主要是 DOS 和 Windows 95 时代的问题。随着 FAT32(Windows 98)和 NTFS(Windows NT 3.1)的出现,这个问题暂时得到了很大程度的解决。
    • 最近出现的 2TB 障碍已被最新一代的文件系统修复(ext4NTFS 的最新版本),谷氨酰胺磷酸酶4k 磁盘
  • 各种优化性能的尝试。旋转硬盘从外圈轨道(映射到起始扇区)读取数据的速度比从内圈轨道读取数据的速度稍微快一些(约 1.5 倍),这表明应将经常访问的文件(如操作系统库和页面文件)放置在磁盘起始处附近。
    • 由于用户数据也被频繁访问,并且头部重新定位对性能的影响更大,因此在非常特定的工作负载之外,实际使用中的改进充其量只是微不足道的。
  • 多个物理磁盘。这对于工作站来说是一种非典型设置,因为现代硬盘本身通常就足够大,而笔记本电脑甚至没有空间容纳第二块硬盘。我见过的大多数(如果不是所有)采用这种设置的工作站都是台式机,它们(重新)使用仍可运行且加起来达到必要大小的旧硬盘——否则,要么应该使用 RAID,要么其中一个驱动器应该保存备份,而不是经常使用。
    • 这可能是将系统和数据拆分成单独的卷而获得真正好处的唯一情况:由于它们物理上位于不同的硬件上,因此可以并行访问(除非是同一根电缆上的两个 PATA 驱动器),并且在它们之间切换时,磁头重新定位不会对性能造成影响。
      • 为了重用 Windows 目录结构,我通常移至C:\Users数据驱动器。仅移动一个配置文件甚至只是DocumentsDownloadsDesktop被证明是较差的,因为配置文件的其他部分也会Public不受控制地增长(请参阅下面的“单独的配置和数据”设置)。
    • 虽然磁盘可以合并成一个跨度卷,我不使用或推荐它,因为动态卷是一种专有技术,第三方工具难以使用,并且如果任何一个驱动器出现故障,整个卷就会丢失。
  • M.2 SSD + HDD。
    • 在这种情况下,我宁愿建议仅将 SSD 用作缓存:这样,您就可以从 SSD 中受益,无论是对于整个数据阵列,还是只是其中的某个任意部分,并且加速的内容由您实际访问的内容自动确定。
    • 无论如何,笔记本电脑中的这种设置不如单个 SSD,因为 HDD 也无法耐受外部冲击和振动,而这对于笔记本电脑来说是很常见的现象。
  • 双启动场景。一般来说,两个操作系统不能共存于一个分区。据我所知,这是唯一一个需要在工作站上使用多个分区的情况。而且现在这种情况的用例已经非常少见,因为现在每个工作站都足够强大,可以运行虚拟机。
  • 在服务器上,还有许多其他有效的场景 - 但它们都不适用于超级用户的域。
    • 例如,可以将持久数据(程序和配置)与变化数据(应用程序数据和日志)分开,以防止失控应用程序破坏整个系统。还有各种特殊需求(例如,在嵌入式系统中,持久数据通常驻留在 EEPROM 上,而工作数据驻留在 RAM 驱动器上)。Linux 的文件系统层次标准非常适合进行这种类型的调整。

答案4

我是一名软件开发人员,但也花时间从事“常规”/后台 IT 工作。我通常将操作系统和应用程序保存在驱动器 C: 上,将我的个人文件保存在驱动器 D: 上。这些不一定需要是单独的物理驱动器,但目前我使用相对较小的 SSD 作为我的“系统”驱动器 (C:),并使用“传统”磁盘驱动器(即带有旋转磁盘)作为我的“主”驱动器 (D:)。

所有文件系统都会产生碎片。对于 SSD 来说,这基本上不是问题,但对于传统磁盘驱动器来说,这仍然是一个问题。

我发现碎片化会严重降低系统性能。例如,我发现在对驱动器进行碎片整理后,大型软件项目的完整构建速度提高了 50% 以上——而且构建过程花费了将近一个小时的时间,所以这是不是微小的差异。

将我的个人文件保存在单独的卷上,我发现:

  • 系统卷不会很快(或严重)碎片化;
  • 对两个独立卷进行碎片整理比对包含所有内容的单个卷进行碎片整理要快得多 - 每个卷所需的时间是组合卷所需时间的 20%-25%。

我在几代 PC 和多个版本的 Windows 上都观察到了这种情况。

(正如一位评论者指出的那样,这也有助于进行备份。)

我应该指出,我使用的开发工具往往会生成大量临时文件,这似乎是碎片化问题的一个重要因素。因此,这个问题的严重程度将根据您使用的软件而有所不同;您可能不会注意到差异,或者差异不大。(但还有其他活动——例如视频/音频合成和编辑——是 I/O 密集型的,并且根据所使用的软件,可能会生成大量临时/中间文件。我的观点是,不要将此视为仅影响一类用户的事情。)

警告:对于较新版本的 Windows(从 Windows 8 开始),这变得更加困难,因为除 C: 之外的卷上的用户文件夹不再受官方支持。我可以告诉你,我无法从 Windows 7 就地升级到 Windows 10,但 YMMV(有多种不同的方法可以 [重新] 定位用户文件夹,我不知道哪些会受到影响)。

另外需要注意的是:如果您在传统驱动器上维护两个单独的卷,则可能需要在 D: 卷上设置页面文件。出于 WooShell 的回答中所述的原因,这将减少写入页面文件时的寻道时间。

相关内容