分区SSD的缺点?


79

一个名叫NickN的聪明人在关于建立一台功能强大的计算机的观点上保留了一篇冗长的论坛帖子(旨在播放要求非常高的软件Microsoft Flight Simulator X)。

他总结了某处有关SSD驱动器的要点,并总结了如下列表:

请勿分割SSD

不幸的是,他没有详细说明,但是我想知道他为什么这么说。分区SSD有什么缺点?(在这种情况下进行分区意味着> = 2个分区)


13
好吧,您必须对其进行分区才能使用它。大概,他的意思是不要创建多个分区,尽管他建议这样做的原因超出了我。
ChrisInEdmonton 2014年

1
@ChrisInEdmonton是的,这就是他的意思。
MarioDS 2014年

4
我无法理解为什么这很重要。即使您使用逻辑分区而不是物理分区,一旦操作系统告诉文件系统驱动程序要使用驱动器的哪个部分,分区也就无关紧要。唯一可能重要的是分区对齐,但与分区数量无关。
Darth Android

2
我只能猜测他的意思是:“不要分区非常小的驱动器”,无论它是HDD还是SDD。
Hennes 2014年

6
我唯一能想到的其他选择是(错误地)假设SSD控制器需要卷上的可用空间才能使用。它需要磁盘上的可用空间来提高效率。不会占用已安装卷中的可用空间。调整仅是决定过度配置并设置主机保护区
轩恩斯

Answers:


118

我再说一遍,SSD在文件系统级别上不起作用!

文件系统如何看待事物与SSD如何看待事物之间没有1:1的相关性。

随意以任何想要的方式对SSD进行分区(假设每个分区都正确对齐,并且现代化的操作系统将为您处理所有这一切);它不会伤害任何东西,不会对访问时间或其他任何问题产生不利影响,也不必担心对SSD进行大量写入操作。他们有它们,因此您每天可以写入50 GB的数据,并且将持续10年。

回应罗宾汉的回答

损耗均衡将没有足够的可用空间,因为写操作将分散在较小的空间中,因此您可以“做到”,但不一定会比整个驱动器磨损更快除非您将对其他分区执行相同的磨损(例如,双引导),否则它是单个分区。

那是完全错误的。磨损分区是不可能的,因为您只能对该分区进行读/写操作。这甚至不是SSD的远程工作方式。

SSD的访问级别比文件系统看到的级别低得多。SSD可处理块和页面。

在这种情况下,实际发生的情况是,即使您在特定分区中写入大量数据,文件系统也受该分区(但BUT而不是SSD)的约束。SSD获得的写入次数越多,为了进行损耗平衡,SSD将交换出更多的块/页面。它一点也不在乎文件系统如何看待事物!这意味着,数据可能一次驻留在SSD上的特定页面中,但是另一次,它可能并且将有所不同。SSD会跟踪将数据移至何处,而文件系统将不知道数据在SSD上的实际位置。

为了使操作更简单:说您在分区1上写了一个文件。操作系统告诉文件系统有关存储的需求,然后文件系统分配“扇区”,然后告诉SSD它需要X数量的空间。例如,文件系统在逻辑块地址(LBA)为123的情况下查看文件。SSD记下LBA 123正在使用块/页面#500(例如)。因此,每次操作系统需要此特定文件时,SSD都会有一个指向其正在使用的确切页面的指针。现在,如果我们继续写入SSD,开始进行耗损均衡,并说出块/第500页,我们可以在块/第2300页更好地优化您。现在,当操作系统请求相同的文件,并且文件系统再次请求LBA 123时,此时,SSD将返回块/页面#2300,而不是#500。

就像硬盘驱动器一样,nand-flash SSD是顺序访问的,因此,从其他分区写入/读取的任何数据都将比在单个分区中写入的“可能”要远,因为人们通常会在其分区中留下可用空间。这将增加对存储在其他分区上的数据的访问时间。

不,这又是错误的!罗宾汉正在从文件系统的角度思考问题,而不是像固态硬盘的工作原理那样思考。同样,文件系统无法知道SSD如何存储数据。这里没有“更远的地方”。那只是在文件系统的眼中,而不是SSD存储信息的实际方式。SSD可能会将数据散布在不同的NAND芯片中,并且用户不会注意到访问时间的增加。哎呀,由于NAND的并行特性,它甚至可能比以前更快,但是我们在这里谈论的是纳秒级。眨眼,你错过了。

较少的总空间会增加写入碎片文件的可能性,并且虽然对性能的影响很小,但请记住,对nand-flash SSD进行碎片整理通常被认为是一个坏主意,因为它会损坏驱动器。当然,根据所使用的文件系统的不同,碎片的数量极低,这是因为它们被设计为在可能的情况下整体写入文件,而不是将其全部丢弃以提高写入速度。

不,谢谢; 再次这是错误的。文件系统的文件视图和SSD的相同文件视图甚至都没有远程关闭。在最坏的情况下,文件系统可能会看到文件碎片化,但是,几乎总是对同一数据的SSD视图进行优化。

因此,碎片整理程序将查看这些LBA,并说该文件必须是真正的碎片!但是,由于它不了解SSD的内部结构,因此100%错误。这就是碎片整理程序无法在SSD上运行的原因,是的,如前所述,碎片整理程序还会导致不必要的写入。

如果您想对SSD的工作方式有更多的了解,文章系列的SSD编码很好地概述了正在发生的事情。

要获得有关FTL(闪存转换层)实际工作原理的更多“轻松”阅读,我还建议您 从Flash Memory Summit网站上阅读固件和闪存转换层在固态硬盘设计(PDF)中的关键作用

他们还提供许多其他论文,例如:

关于此工作原理的另一篇文章:闪存概述  (PDF)。请参见“写入数据”一节(第26-27页)。

如果您更喜欢视频,请参阅高效的页面级FTL,以优化闪存和相关幻灯片中的地址转换


您好,能否请您添加一些指向备份您信息的资源的链接?另一个答案很可能是事实不正确,但我无法得知您也是正确的。
MarioDS '16

4
摘自Windows Internals第6版,第2部分,ch。在9(存储管理)和12(文件系统)中,您可以了解对文件的I / O请求如何通过文件系统驱动程序,然后是卷驱动程序,最后是磁盘驱动程序(也用于SSD)。FSD将文件中的块转换为分区中的块;卷驱动程序将后者转换为磁盘内的块,即LBA。因此,当请求到达磁盘驱动程序时,所有与文件和分区相关的上下文都消失了。磁盘无法识别文件或分区,因为该信息根本不在请求中。
杰米·汉拉汉

5
RobinHood也误认为“就像硬盘驱动器和闪存SSD是顺序访问”。这些是随机访问设备。如果它们是顺序访问,那么您就不能告诉他们“读或写块n”。您可以访问的唯一块是紧随其后的那个块,或者可能是紧接在其之前的那个块。在内部,NAND闪存SSD一次只能在大的“页面”中写入数据,但这并不能使它们顺序访问。磁带是顺序访问。查一下
杰米·汉拉罕

除了回答中的第一个链接外,我还添加了另一个pdf。
Time Twin

1
@TimeTwin Man,我越读越多您的答案,我就觉得自己盲目相信Robin Hood的答案是愚蠢的,如果确实如此,其中确实包含使SSD设计看起来非常愚蠢的陈述。这提醒我们,即使在可信赖的网站上并获得了很多支持,我们也必须对信息保持批判。您在此站点上做了非常出色的输入,享受了声望提升,请继续传播您的(已验证)知识。
MarioDS '16

15

如果答案很简单并且仅根据SSD的常识直接得出,则答案非常长。只需阅读Wikipedia 固态驱动器一词即可了解答案,即:

建议“不要分区SSD”是胡说八道。

在过去(现在很遥远),操作系统不能很好地支持SSD,尤其是在分区没有注意根据擦除块的大小对齐分区的情况下。

当将OS逻辑磁盘扇区划分为物理SSD块时,这种缺乏对齐的情况可能会要求在OS仅打算更新一个逻辑扇区的情况下,SSD刷新两个物理扇区,从而减慢了磁盘访问速度并提高了损耗水平

当前,SSD正变得越来越大,并且操作系统了解擦除块和对齐方式,因此该问题不再存在。也许此建议曾经是为了避免分区对齐错误,但如今这些错误几乎是不可能的。

实际上,如今对SSD进行分区的观点与经典磁盘完全相同:
为了更好地组织和分离数据。

例如,在对操作系统进行较大更新时,将操作系统的备份映像作为预防措施很容易在一个单独的较小分区上安装操作系统。


4

分区SSD没有任何缺点,实际上,您可以通过保留一些未分区的空间来延长其使用寿命。

磨损均衡应用于设备的所有模块(请参阅HP白皮书,在下面链接)

在静态损耗均衡中,设备中所有可用闪存中的所有块都参与损耗均衡操作。这样可确保所有块均受到相同的磨损。静态损耗平衡最常用于台式机和笔记本电脑的SSD。

由此,我们可以得出结论,分区对于损耗均衡无关紧要。这是有道理的,因为从HDD和控制器的角度来看,分区实际上并不存在。只有块和数据。偶数分区表被写入相同的块(MBR驱动器的第一个块)上。然后由操作系统读取表,然后决定向哪些块写入数据,哪些不写入数据。OS使用LBA看到块,从而为每个块赋予唯一编号。然而,控制器然后考虑损耗均衡方案将逻辑块映射到实际物理块。

同一白皮书为延长设备使用寿命提供了一个很好的建议:

接下来,过度配置驱动器。您可以通过仅分区设备总容量的一部分来延长使用寿命。例如,如果您有256 GB的驱动器,请仅将其分区为240 GB。这将大大延长驱动器的使用寿命。20%的超额配置级别(仅分区200 GB)将进一步延长使用寿命。一个好的经验法则是,每次将驱动器的超额配置增加一倍时,驱动器的耐用性就会增加1倍。

这也暗示了即使是未分配的空间也用于磨损均衡,从而进一步证明了这一点。

资料来源:技术白皮书-SSD耐用性(http://h20195.www2.hp.com/v2/getpdf.aspx/4AA5-7601ENW.pdf


1

磁盘扇区已很长一段时间为512字节,并且机械磁盘具有以下特性:唯一会影响读取/写入扇区所需时间的因素是寻道延迟。因此,机械硬盘驱动器的主要优化步骤是尝试顺序读取/写入块以最大程度地减少寻道。

闪存的工作原理与机械硬盘不同。在原始闪存级别上,您没有块,但是没有页面和“ eraseblocks”(借用Linux MTD术语)。您可以一次写入闪存页面,也可以一次擦除闪存。

闪存的典型页面大小为2KB,擦除块的典型页面大小为128KB。

但是SATA SSD提供了一个与OS配合使用512字节扇区大小的接口。

如果页面和扇区之间存在1:1的映射关系,则可以看到如果分区表从奇数页或擦除块中间的页面开始时会遇到麻烦。鉴于OS倾向于从4KB的块中获取驱动器中的数据,因为这与x86分页硬件保持一致,因此您可以看到这样的4KB块如何跨越一个擦除块,这意味着对其进行更新将需要擦除,然后重写2个块而不是1个。较低的性能。

但是,SSD固件不维护1:1映射,而是将物理块地址(PBA)转换为逻辑块地址(LBA)。这意味着您永远不知道扇区5000或任何其他给定扇区实际上是在闪存中写入的位置。根据设计,它在幕后做了很多事情,以尝试始终写入预先擦除的擦除块。您无法确定不拆卸固件就可以做什么,但是除非固件完全被淘汰,否则固件可能会解决此问题。

您可能听说过4Kn硬盘驱动器。这些是机械式硬盘驱动器,内部使用4 KB的扇区大小,但仍为操作系统提供512字节的扇区接口。之所以需要这样做是因为扇区之间的间隙需要在盘片上缩小以容纳更多数据。

这意味着在内部它总是读取和写入4K扇区,但对OS隐藏。在这种情况下,如果您不写入位于4KB边界上的扇区,则会造成速度损失,因为每次这样的读/写操作都会导致两个内部4KB扇区被读取和重写。但这不适用于SSD。

无论如何,这是我能想到的唯一情况,建议不要对SSD进行分区。但这并不适用。


-1

这些答案忽略的是Windows SSD优化。我不知道这是否意味着分区会变得更好,但是对于作为Windows驱动器的分区C驱动器,您可以:

  1. 索引转弯
  2. 无需跟踪上次访问的时间
  3. 不需要存储旧的8个字符的dos名称
  4. 绕过Windows垃圾桶

关闭索引不仅会减慢搜索速度,而且还意味着您无法在文件内部进行搜索。这不是一个好建议。
理查德(Richard)

-2

我认为一些背景信息可能有助于使这个答案更清楚,但是如您所见,我有点强迫症,所以您可能希望跳到最后,然后在需要时再返回。虽然我确实知道一点,但我不是SSD方面的专家,所以如果有人看到错误,请对其进行编辑。:)。

背景资料:

什么是SSD ?:

SSD或固态驱动器是没有活动部件的存储设备。术语“ SSD”通常旨在专门指代旨在用作硬盘替代品的基于nand-flash的固态驱动器,但实际上,它们只是SSD的一种形式,甚至不是最受欢迎的一种形式。最流行的SSD类型是基于nand-flash的可移动介质,例如usb棒(闪存驱动器)和存储卡,尽管它们很少被称为SSD。SSD也可以基于内存,但大多数内存驱动器是由软件生成的,而不是物理硬件。

为什么要用作硬盘替代方案的Nand-flash SSD存在?:

为了运行操作系统及其软件,需要快速存储介质。这是ram发挥作用的地方,但从历史上看,ram昂贵且CPU无法解决大量问题。当您运行操作系统或对程序进行编程时,由于存储设备的速度不够快,因此当前需要的数据部分将复制到ram中。创建瓶颈是因为您必须等待将数据从慢速存储设备复制到内存。尽管不是所有的nand-flash SSD都能获得比传统硬盘更好的性能,但确实可以通过提供更快的访问时间,读取速度和写入速度来帮助减少瓶颈。

什么是Nand-flash ?:

闪存是一种使用电而不是磁来存储数据的存储介质。Nand-flash是使用NAND网关的闪存。与随机访问的非闪存不同,顺序访问非闪存。

Nand-flash SSD如何存储数据?:

Nand Flash存储由块组成,这些块被拆分为单元,单元包含页面。与使用磁性存储数据的硬盘驱动器不同,闪存介质使用电,因为该数据不能被覆盖。必须删除数据才能重新使用该空间。设备无法擦除单个页面;擦除必须在块级别进行。由于无法将数据写入已使用的块(即使不是其中的所有页面),因此必须首先擦除整个块,然后现在空白的块可以将数据写入其页面。问题是您将丢失那些页面中已经存在的所有数据,包括您不想丢弃的数据!为了防止保留现有数据,必须在执行块擦除之前将其复制到其他位置。

在硬盘驱动器上,磁性板用于存储数据。就像黑胶唱片一样,盘子上有迹线,这些迹线被分成称为扇区的部分。一个扇区可以容纳一定数量的数据(通常为512字节,但一些较新的为4KB)。应用文件系统时,将扇区分组到群集中(基于您指定的大小,称为分配大小或群集大小),然后跨群集写入文件。也可以划分扇区以使群集小于扇区大小。跨集群(或多个集群)写入文件后,集群中未使用的空间不可用,下一个文件在新集群中启动。为了避免大量无法使用的空间,人们通常使用较小的群集大小,但这会在写入大文件时降低性能。Nand-flash SSD没有磁板,他们用电通过存储块。一个块由包含页面的单元格组成。页面具有X容量(通常为4 KB),因此页面数将决定一个块的容量(通常为512 KB)。在SSD上,一页等于硬盘驱动器上的扇区,因为它们都代表最小的存储分区。

什么是磨损均衡?:

可以将Nand-Flash存储块写入并擦除有限的次数(称为其生命周期)。为了防止驱动器遭受容量降低(死块)的困扰,应尽可能均匀地磨损这些块。有限的生命周期也是许多人建议您在使用基于Nand-flash的SSD的情况下在操作系统中没有页面文件或交换分区的主要原因(尽管从设备到ram的快速数据传输速度也是主要原因建议中的因素)。

什么是过度配置?:

过度配置定义了有多少可用空间与看起来有多少可用空间之间的差异。基于Nand-flash的存储设备声称比它们小,因此必须保证有空块供垃圾处理使用。还有第二种类型的过度配置,称为动态过度配置,它简单地指的是所示可用空间内的已知可用空间。动态过量供应有两种类型:操作系统级别和驱动器控制器级别。在操作系统级别,可以使用Trim释放块,然后可以将这些块立即写入。在控制器级别,可以使用未分配的驱动器空间(未分区,没有文件系统)。拥有更多的可用块有助于使驱动器以最佳性能运行,因为它可以立即写入。

什么是写放大?:

因为Nand-flash介质需要先擦除一个块才能写入,所以该块中任何未被擦除的数据都必须通过垃圾处理复制到一个新块中。这些额外的写入称为写入放大。

什么是修剪?:

构建操作系统时要考虑传统的硬盘驱动器。请记住,传统的硬盘驱动器可以直接覆盖数据。当您删除文件时,操作系统会将其标记为已删除(可以覆盖),但是数据仍然存在,直到在那里进行写操作为止。在基于Nand-flash的SSD上,这是一个问题,因为必须首先擦除数据。擦除发生在块级别,因此可能有其他未删除的数据。垃圾处理会将所有无法删除的数据复制到空块,然后可以删除有问题的块。这全部花费时间,并导致不必要的写入(写入放大)!为了解决这个问题,我们制作了一个称为Trim的功能。修剪使操作系统有能力告诉SSD 当您不要求在其中进行写操作时,要擦除带有包含数据的页面的块,操作系统已将其标记为已删除。垃圾回收就可以了,结果释放了块,因此希望可以对不需要先擦除的块进行写操作,从而使处理速度更快,并有助于将写放大率降低到最小。这不是基于文件的;修剪使用逻辑块寻址。LBA指定要擦除的扇区(页面),并且擦除发生在块级别。并有助于将写入放大降低到最小。这不是基于文件的;修剪使用逻辑块寻址。LBA指定要擦除的扇区(页面),并且擦除发生在块级别。并有助于将写入放大降低到最小。这不是基于文件的;修剪使用逻辑块寻址。LBA指定要擦除的扇区(页面),并且擦除发生在块级别。

您的问题的答案“分区SSD的缺点?”:

基于Ram的SSD:

绝对没有缺点,因为它们是随机访问的!

基于Nand-flash的SSD:

我想到的唯一缺点是:

  1. 损耗均衡将没有足够的可用空间,因为写操作将分散在较小的空间中,因此您可以“做到”,但不一定会比整个驱动器更快地磨损该部分驱动器是单个分区,除非您要对其他分区执行同等的磨损(例如:双引导)。

  2. 就像硬盘驱动器一样,nand-flash SSD是顺序访问的,因此,从其他分区写入/读取的任何数据都将比在单个分区中写入的“可能”要远,因为人们通常会在其分区中留下可用空间。这将增加对存储在其他分区上的数据的访问时间。

  3. 较少的总空间会增加写入碎片文件的可能性,并且虽然对性能的影响很小,但请记住,对nand-flash SSD进行碎片整理通常被认为是一个坏主意,因为它会损坏驱动器。当然,根据所使用的文件系统的不同,碎片的数量极低,这是因为它们被设计为在可能的情况下整体写入文件,而不是在整个位置将其转储以提高写入速度。

我会说有多个分区是可以的,但是如果您有一些分区有很多写入活动,而另一些分区却很少的话,那么损耗平衡可能是一个问题。如果您不对空间进行分区,则不打算使用它,而是将其用于动态过度配置,您可能会获得性能提升,因为释放块和写入顺序数据会更容易。但是,没有保证会需要过多的配置空间,这使我们回到了损耗平衡的第一点。

该主题中的其他一些人提出了关于分区如何影响Trim对动态过度配置的贡献的讨论。据我了解,TRIM用于指出已标记数据要删除的扇区(页面),因此垃圾处理可以释放这些块。该可用空间仅在THAT分区内充当动态的预配置,因为这些扇区是该分区的文件系统正在使用的群集的一部分。其他分区具有自己的文件系统。但是,我对此可能完全错了,因为对我来说,过度配置的整体思路还不太清楚,因为数据将被写入甚至没有文件系统或驱动器容量的地方。这使我想知道是否可能在对文件系统内的块进行最后的优化写操作之前临时使用了过度配置空间?当然,Trim对文件系统内动态超置备的贡献不是暂时的,因为可以将它们直接写入,因为它们已经在可用空间中。至少那是我的理论。也许我对文件系统的理解是错误的?我一直找不到任何详细的资源。


17
“ 1.损耗均衡将没有太多可用空间,因为写操作将分散在较小的空间(...)”。这似乎不正确,因为损耗均衡是由SSD控制器(至少对于支持Trim的 SSD和操作系统)在较低级别执行的。superuser.com/a/901521/517270
misko321 2015年

4
基于NAND的存储器允许随机访问块。不允许的是随机访问块中的位。因此分区可以随机访问,因为它们是块大小的倍数(至少应该是,如果用户不以某种方式弄乱内存,即使用分区应用程序而不知道发生了什么)
Miguel Angelo

5
点1和2似乎完全是错误的
underscore_d

-14

不,这很有意义。

SSD的速度直接与使用中的分区上的可用空间量有关。如果将驱动器分成小部分,则由于缺少可用空间,SSD的效率将受到影响。

因此,对SSD进行分区没有缺点,但在驱动器上没有可用空间也有缺点。

请参阅此SuperUser 帖子


1
创建逻辑分区不一定会填满它们吗?我看不到您如何在执行此操作时自动失去可用空间。
MarioDS 2014年

1
操作系统知道可以使用哪些块,哪些块可用,而驱动器则不能。通过分区,OS可以使用的空闲块更少。这会降低性能。TRIM由操作系统在分区级别执行。
Mark Lopez

10
但是可以。毕竟,这就是TRIM的目的。TRIM在扇区级别执行,SSD不在乎分区。它只关心扇区(又名闪存单元)。因此,分区对性能的影响(文件系统开销使用的空间)仅可忽略不计。
丹尼尔·B

1
实际上,HDD是您不应在
上面
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.