是否有理由保持 Windows 的主分区/驱动器 C: 小?

hk_*_*hk_ 71 windows performance hard-drive partitioning

大约二十年前,在我的工作中,IT 专家会将 Windows 的主分区(C 盘)的大小与其他分区相比保持得非常小。他们会争辩说这会以最佳速度运行 PC 而不会减慢速度。

但它的缺点是,如果 C: 驱动器很小,很容易装满,很快你就无法安装新软件,因为它的空间用完了。即使我在 D: 驱动器中安装软件,它的一部分也总是被复制到 C: 中,它会填满它。

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

我问这个问题的原因是因为我正在尝试更新 Visual Studio 而我不能,因为我的主分区中只剩下 24MB。

sle*_*ske 89

大约二十年前,在我的工作中,IT 专家会将 Windows 的主分区(C 盘)的大小与其他分区相比保持得非常小。他们会争辩说这会以最佳速度运行 PC 而不会减慢速度。[...] 我的问题是这种做法还好吗?

一般来说:没有

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

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

主要针对多个驱动器的理由是,它增加了复杂性-这始终是坏它。它会产生新的问题,例如:

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

某些特殊情况下,多个分区仍然有意义:

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

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

  • 小分区更容易备份

无论如何,您应该真正备份所有数据,将其拆分到多个分区并没有真正的帮助。此外,如果您真的需要这样做,我知道的所有备份软件都可以让您有选择地备份分区的一部分。

  • 如果一个分区损坏,另一个分区可能还可以

虽然这在理论上是正确的,但不能保证损坏会很好地将其自身限制在一个分区(并且在出现问题时更难检查以确保这一点),因此这只能提供有限的保证。另外,如果您有良好的冗余备份,那么增加的安全性通常很小,值得麻烦。如果你没有备份,你有很多更大的问题...

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

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


另请参阅您是否将软件安装在与 Windows 系统相同的分区上?想要查询更多的信息。

  • 您的其余答案很好,但是“安装程序让您这样做”是_不是_检查某些东西是否好用的有效方法。他们为什么要这样做?健忘、愚蠢、懒惰、无知、技术限制、中层管理……默认情况下,安装程序可能会做错事的原因有一百万个,更不用说_让_你做错事了。这对于像 Windows 这样复杂的系统来说是双重的。 (26认同)
  • 如果您想将用户数据从 C:\ 中移出,将其与操作系统的 (m) 任何问题分离,多个分区也很有意义。然后你可以说,在它的位置安装另一个操作系统,你的用户数据保持安全(只要用户分区没有被删除) (3认同)
  • 我记得 WinXP 和 Win 7 允许用户在安装过程中创建多个分区并设置分区的大小。不过,我不记得是不是这种情况了。MS 以做出错误的决定而闻名,似乎是一时兴起,并在做出另一个“修复”(非)问题的错误决定之前支持他们多年。此外,需要在本地操作大文件的技术/艺术用户通常需要更多驱动器来处理工作。并且:“增加了复杂性——这在 IT 中总是很糟糕”,一般来说只对了一半。我的推理离题了,所以我就不说了。 (2认同)
  • “为什么微软应该让你以一种会产生问题的方式安装 Windows?” 因为您假设 Microsoft 总是允许您在默认情况下使用最佳和优化的选项? (2认同)

Woo*_*ell 24

这种做法的历史原因很可能源于旋转磁性 HDD 的性能特性。具有最高顺序访问速度的旋转磁盘上的区域是最外面的扇区(靠近驱动器的开头)。

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

寻道延迟还部分取决于磁头必须移动多远,因此将所有小文件保持在一定程度的彼此附近也有利于旋转驱动器。

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

  • *"访问速度最高的是最里面的扇区。"*, *"因此,为了确保操作系统文件物理上停留在最快的磁盘区域,您将在驱动器的开头创建一个小的系统分区"* --不,你把它倒退了,就像这个问题:https://superuser.com/questions/643013/are-partitions-to-the-inner-outer-edge-显着更快。此外,您对*“历史原因”* 的说法是可疑的。在 ATAPI 驱动器开始使用区域位记录之前,所有先前的 HDD 都使用恒定角度记录,因此柱面之间没有速度差异可言。 (6认同)
  • @sawdust,历史原因不是读取延迟,而是查找延迟。FAT 存储在最低的磁道地址,因此磁盘磁头至少在每次创建或扩展文件时都必须返回到那里。对于 1980 年代的磁盘,性能差异是可以衡量的。HPFS(NTFS 的祖先)的设计特点之一是将 MFT 放在分区的中间以减少平均寻道时间。当然,一旦在磁盘上放置多个分区,就会有多个 FAT / MFT 区域,因此不再优化搜索。 (3认同)

Fan*_*que 5

是否有理由保持 Windows 的主分区/驱动器 C: 小?

以下是这样做的几个原因:

  1. 所有系统文件和操作系统本身都在主分区上。最好将这些文件与其他软件、个人数据和文件分开,因为不断干预可引导分区并将文件混合在那里可能偶尔会导致错误,例如意外删除系统文件或文件夹。组织很重要。这就是主分区的大小很小的原因——以阻止用户将所有数据转储到那里。
  2. 备份- 备份和恢复较小的分区比备份和恢复较大的分区更容易、更快、更有效,具体取决于系统的用途。正如@computercarguy在评论中所指出的,除非需要,否则最好备份特定文件夹和文件,而不是备份整个分区。
  3. 然而,它可以以几乎不明显的方式提高性能。在NTFS文件系统上,每个分区上都有所谓的主文件表,它包含有关分区上所有文件的元数据:

    描述卷上的所有文件,包括文件名、时间戳、流名称和数据流所在的簇号列表、索引、安全标识符以及“只读”、“压缩”、“加密”等文件属性。

可能会带来一个优势,虽然不明显,因此可以忽略它,因为它实际上并没有什么区别。@WooShell 的答案与性能问题更相关,尽管它仍然可以忽略。

另一件需要注意的事情是,如果有 SSD + HDD,最好将您的操作系统存储在 SSD 上,并将您的所有个人文件/数据存储在 HDD 上。您很可能不需要为大多数个人文件使用 SSD 来提高性能,而消费级固态驱动器通常没有太多空间,因此您宁愿不要尝试用个人文件填充它.

有人可以解释为什么要进行这种做法并且它仍然有效吗?

描述了完成它的一些原因。是的,它仍然有效,尽管看起来不再是一个好习惯。最显着的缺点是最终用户必须跟踪应用程序建议安装文件的位置并更改该位置(几乎在任何软件安装期间都可能发生,特别是如果专家/高级安装是一个选项),因此可引导分区不会“ t 填满,因为操作系统有时确实需要更新,另一个缺点是当将文件从一个分区复制到另一个分区时,它实际上需要复制它们,而如果它们在同一个分区中,它只会更新 MFT 和元数据,不需要再次写入整个文件。

不幸的是,其中一些可能会带来更多问题:

  1. 它确实增加了结构的复杂性,这使得管理起来更加困难和耗时。
  2. 即使安装在另一个分区中,某些应用程序仍然会将文件/元数据写入系统分区(文件关联、上下文菜单等),因此这使得备份更加困难,并且可能会导致分区之间的同步失败。(感谢@Bob 的评论)

为了避免您遇到的问题,您需要:

  1. 始终尝试在其他分区上安装应用程序(更改默认安装位置)。
  2. 确保仅在可引导分区中安装重要软件。其他不需要和不重要的软​​件应该放在它之外。

我也不是说有多个分区和一个小的主分区是最好的主意。这一切都取决于系统的用途,尽管它引入了一种更好的文件组织方式,但它也有其缺点,在当前的 Windows 系统上,这些缺点比优点还多。

注意:正如您自己提到的,如果可引导分区发生故障,它确实可以确保单独分区中的数据安全。

  • _“由于主文件表存储有关分区上所有文件的信息,因此在对该分区上的任何文件执行任何操作时,它都会查看整个表。”_ 哦,绝对不是。这种说法只能在几乎完全不了解文件系统如何工作以及磁盘存储组织是如何完成的情况下做出。如果这是真的,那么任何涉及 MFT 的操作的性能都会随着 MFT 的大小线性下降(或更糟!),而且这种情况不会发生。 (5认同)
  • “最好将这些 [OS] 文件与其他软件分开” — 不。这种方法的问题是许多软件都与操作系统保持安装状态(和卸载程序)。许多软件还向操作系统的各个部分注册自己 - 文件关联、上下文菜单条目、预览渲染器等。将软件本身安装在单独的分区中并不能阻止这些;它只是使它们分布在两个分区中。如果有的话,这比将它们放在一起更糟糕 - 您现在增加了两个分区在备份中变得不同步的风险。 (2认同)

iva*_*eev 5

简短的回答:没有了。

根据我的经验(20 多年的 IT 管理工作),这种做法的主要原因(其他在下面列出)用户基本上不信任 Windows 的数据和硬盘空间。

长期以来,Windows 在保持稳定、自行清理、保持系统分区健康以及提供对用户数据的便捷访问方面一直是出了名的糟糕。因此,用户更愿意拒绝 Windows 提供的文件系统层次结构,并在其之外推出自己的文件系统层次结构。系统分区还充当隔都,拒绝 Windows 在其范围之外造成严重破坏。

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

次要原因是:

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