SSD不会,我重复一遍,不会在文件系统级别工作!
文件系统和SSD的工作方式之间没有1:1的关联。
文件系统和SSD之间没有1:1的关联。
随意以任何方式对SSD进行分区(假设每个分区都正确对齐,现代的操作系统将为你处理所有这些);它不会伤害任何东西,也不会对访问时间或其他任何东西产生不利影响,也不用担心对SSD进行大量的写入。他们有他们,所以你可以每天写50 GB的数据,它将持续10年。
回应 Robin Hood 的回答 ,
磨损平移不会有那么多的自由空间来玩,因为写操作将分布在一个较小的空间里,所以你 “可能",但不一定会比整个驱动器是一个单一的分区更快地磨损驱动器的那部分,除非你将在额外的分区上执行同等的磨损(例如,双启动)。
这是完全错误的。 不可能磨损一个分区,因为你只读/写到那个分区。这根本不是SSD的工作原理。
SSD的工作原理是比文件系统所看到的更低级的访问;SSD的工作原理是块和页。
在这种情况下,实际发生的情况是,即使你在特定的分区中写入大量数据,文件系统也会受到分区的限制,但SSD却不会。SSD的写入次数越多,SSD就会有更多的块/页被交换出来,以便进行磨损均衡。它无法关心文件系统如何看待事物! 这意味着,在某一时间,数据可能驻留在SSD上的特定页面,但是,另一时间,它可以而且会有所不同。SSD会跟踪数据被洗牌的位置,而文件系统不会知道数据到底在SSD上的什么地方。
为了让这个问题更简单:假设你在分区1上写了一个文件。操作系统会告诉文件系统存储需求,文件系统会分配 "扇区",然后告诉SSD需要X的空间。文件系统看到文件的逻辑块地址 (LBA)为123(例如)。SSD会注意到LBA 123正在使用块/页#500(例如)。因此,每次操作系统需要这个特定的文件时,SSD都会有一个指向它正在使用的确切页面的指针。现在,如果我们不断向SSD写入数据,磨损均衡开始发挥作用,并说block/page #500,我们可以更好地优化你的block/page #2300。现在,当操作系统请求相同的文件时,文件系统再次请求LBA 123,这次,SSD将返回block/page #2300,而不是#500。
像硬盘一样,nand-flash S.S.D's是顺序访问,所以你从额外分区写入/读取的任何数据都会比在单个分区中写入的数据 "可能 "更远,因为人们通常会在分区中留下空闲空间。这将增加存储在附加分区上的数据的访问时间。
不,这又错了! 罗宾汉是从文件系统的角度来考虑问题,而不是像SSD到底是如何工作的。同样,文件系统也无法知道SSD是如何存储数据的。这里没有 "更远的距离";这只是文件系统的看法,而不是SSD存储信息的实际方式。SSD有可能将数据分散在不同的NAND芯片中,而用户不会注意到访问时间的增加。Heck,由于NAND的并行性质,它甚至可能比以前更快,但我们在这里谈论的是纳秒,眨眼间你就错过了。
更少的总空间增加了写入碎片文件的可能性,虽然对性能的影响不大,但请记住,一般认为对nand-flash S.S.D.进行碎片化处理是个坏主意,因为它会磨损硬盘。当然,这取决于你使用的是什么文件系统,有些文件系统的碎片数量极低,因为它们被设计成尽可能地将文件作为一个整体写入,而不是为了创造更快的写入速度而将文件转储到各个地方。
不,对不起;这又是错误的。文件系统对文件的看法和固态硬盘对这些文件的看法完全不一样。在最坏的情况下,文件系统可能会将文件视为碎片,但是,SSD对相同数据的视图几乎总是优化的。
因此,一个碎片整理程序会看着那些LBA说,这个文件一定是真的被碎片化了! 但是,由于它对SSD的内部结构一无所知,所以它是100%错误的。这就是defrag程序无法在SSD上工作的原因,是的,defrag程序也会造成不必要的写入,就像前面提到的。
如果你想对SSD的工作原理有更多的技术性了解,系列文章 SSD的编码 是一个很好的概述。
如果想了解更多关于FTL的 "浅显 "读物 (Flash Translation Layer)实际工作,我还建议你阅读 Critical Role of Firmware and Flash Translation Layers in Solid State Drive Design (PDF),来自 Flash Memory Summit 网站。
他们也有很多其他的论文,比如。
另一篇关于如何工作的论文。 闪存概述 (PDF)。 参见 "写入数据 "一节(第 26-27页)。
如果你更喜欢视频,请看 一个高效的页级FTL来优化闪存中的地址转换 和相关的 幻灯片。
这里有很长的答案,而答案很简单,直接从固态硬盘的常识中就可以得出。我们不需要多看维基百科上的【固态硬盘】(https://en.wikipedia.org/wiki/Solid-state_drive)就能明白答案,那就是:
“不要分割SSD "的建议是无稽之谈。
在过去(现在已经很遥远了),操作系统对SSD的支持并不是很好,尤其是在分区时没有注意根据擦除块的大小来对齐分区。
这种不对齐的情况,当操作系统的逻辑磁盘扇区被拆分在物理SSD块之间时,当操作系统只打算更新一个物理扇区时,可能会要求SSD闪现两个物理扇区,从而减慢磁盘访问速度,增加Wear leveling。
目前SSD的体积越来越大,操作系统对擦除区块和对齐方式了如指掌,所以这个问题已经不存在了。也许这个建议曾经是为了避免分区对齐上的错误,但如今这些错误已经完全不可能了。
事实上,今天对SSD进行分区的论点与传统磁盘完全相同: 为了更好地组织和分离数据。
例如,将操作系统安装在一个单独的较小的分区上,便于在对操作系统进行大规模更新时,将其作为备份镜像。
分区固态硬盘没有任何缺点,实际上你可以通过留下一些未分区的空间来延长其寿命。
磨损均衡应用于设备的所有块(参考惠普白皮书,链接如下)
在静态磨损均衡中,设备中所有可用闪存的所有块都参与磨损均衡操作。这确保了所有的块都得到相同的磨损量。静态损耗均衡最常用于台式机和笔记本固态硬盘。
从这一点,我们可以得出结论,分区对于损耗均衡并不重要。这是有道理的,因为从硬盘和控制器的角度来看,分区并不真正存在。只有区块和数据。即使是分区表也是写在相同的块上(MBR的第1块硬盘)。然后是操作系统读取该表,并决定将数据写入哪个区块,不写入哪个区块。OS使用LBA看到块,给每个块一个唯一的编号。然而,控制器会将逻辑块映射到实际的物理块上,并考虑到磨损水平方案。
同一份白皮书给出了一个延长设备寿命的好建议:
接下来,过度配置您的硬盘。您可以通过只对设备总容量的一部分进行分区来延长寿命。例如,如果您有一个 256 GB 的硬盘–只将其分区为 240 GB。这将大大延长硬盘的使用寿命。20%的超额配置水平(只分区200 GB)将进一步延长使用寿命。一个好的经验法则是,每当你将硬盘的超额配置增加一倍,你就会增加1倍的硬盘寿命。
这也暗示了即使是未分区的空间也会被用来进行磨合,从而进一步证明了上面的观点。
资料来源。技术白皮书–SSD耐久度 http://h20195.www2.hp.com/v2/getpdf.aspx/4AA5-7601ENW.pdf )
磁盘扇区一直以来都是512字节,而机械硬盘有一个特性,那就是影响读/写一个扇区所需时间的唯一因素就是寻道延迟。所以机械硬盘的主要优化步骤是尽量按顺序读/写扇区,以减少寻道时间。
闪存的工作原理与机械硬盘有很大的不同。在原始闪存层面,你没有块,而是页和 “擦除块"(借用Linux MTD术语)。你可以一次向闪存写入一个页面,也可以一次擦除闪存中的一个擦除块。
闪存的典型页面大小是2KBytes,擦除块的典型大小是128KBytes。
但是SATA SSD向操作系统展示的接口是512字节扇区大小。
如果页和扇区之间有1:1的映射,你可以看到如果你的分区表开始于奇数页或擦除块中间的页,你会遇到什么麻烦。考虑到操作系统更喜欢以4K字节为单位从驱动器中获取数据,因为这与x86的分页硬件一致,你可以看到这样一个4K字节的块可能会横跨一个擦除块,这意味着更新它需要擦除,然后重写2个块而不是1个块,从而导致性能降低。
然而,SSD固件并没有维持1:1的映射,它做的是物理块地址(PBA)到逻辑块地址(LBA)的转换。这意味着你永远不知道比如说5000扇区或任何其他给定扇区在闪存中的真实位置。它在幕后做了很多设计,试图总是写到预先擦除的擦除块。在没有拆解固件的情况下,你无法确定它到底在做什么,但除非固件完全是垃圾,否则固件可能会绕过这个问题。
你可能听说过4Kn硬盘。这些是机械硬盘,内部使用4K字节的扇区大小,但仍向操作系统提供512字节的扇区接口。之所以需要这样做,是因为盘片上扇区之间的间隙需要变小,以容纳更多的数据。
这意味着在内部它总是读取和写入4K扇区,但对操作系统隐藏了它。在这种情况下,如果你不写入属于4KByte边界的扇区,你将会产生速度上的损失,因为每一次这样的读写都会导致两个内部4KByte扇区被读取和重写。但这不适用于SSD。
总之,这是我能想到的唯一一种建议不要给SSD分区的情况。但这并不适用。
这些答案忽略的是Windows SSD的优化。我不知道这是否意味着分区会变得更好,但对于分区后的C盘,作为Windows盘,你可以。
我决定一些背景信息可能会有助于使这个答案清晰,但正如你所看到的,我有点强迫症,所以你可能想跳到最后,然后在需要的时候回去。虽然我确实知道一点,但我不是S.S.D.s的专家,所以如果有人看到错误,编辑它。 :).
什么是S.S.D.:
S.S.D.或固态硬盘是一种没有活动部件的存储设备。S.S.D.一词通常是指基于nand-flash的固态硬盘,旨在作为硬盘驱动器的替代品,但实际上它们只是S.S.D.的一种形式,甚至不是最流行的一种。最流行的S.S.D.类型是基于nand-flash的可移动媒体,如usb棒(闪存驱动器)和存储卡,尽管它们很少被称为S.S.D.。S.S.D.s也可以是基于内存的,但大多数内存驱动器是软件生成的,而不是物理硬件。
**为什么Nand-flash S.S.D.s旨在作为硬盘驱动器的替代品存在?
为了运行操作系统及其软件,需要快速的存储介质。这就是内存的作用,但历史上内存是昂贵的,而且cpu无法处理大量的内存。当你运行一个操作系统或程序时,当前需要的数据部分会被复制到你的内存中,因为你的存储设备不够快。这就形成了一个瓶颈,因为你必须等待数据从慢速存储设备复制到ram。虽然并不是所有的nand-flash S.S.D.s都能比传统的硬盘驱动器获得更好的性能,但那些能提供更快的访问时间、读取速度和写入速度的S.S.D.s有助于减少瓶颈。
什么是Nand-flash?
闪存是一种使用电力而非磁力来存储数据的存储介质。Nand-flash是使用NAND网关的闪存。与A nor-flash是随机访问不同,nand-flash是顺序访问。
Nand-flash S.S.D.s是如何存储数据的:
Nand-flash存储是由块组成的,这些块被分割成单元,单元中包含页面。与硬盘使用磁力存储数据不同,闪存介质使用电力,正因为如此,数据不能被过度写入,数据必须被擦除才能重新使用空间。该设备不能擦除单个页面,擦除必须在块级进行。由于数据不能写入已经使用过的块(即使不是所有的页面都使用过),所以必须先擦除整个块,然后再将数据写入现在空白的块的页面。问题是,你会失去这些页面中已有的任何数据,包括你不想丢弃的数据! 为了防止这些现有的数据被保留,必须在执行擦除块之前将其复制到其他地方。这个复制过程不是由计算机的操作系统执行的,而是在设备层面由一个称为垃圾收集的功能执行的。
在硬盘驱动器上,磁板用于存储数据。就像黑胶唱片一样,磁板上有磁道,这些磁道被划分为称为扇区的部分。一个扇区可以容纳一定量的数据(通常是512字节,但一些新的扇区是4KB)。当你应用文件系统时,扇区会被分组到簇中(根据你指定的大小,称为分配大小或簇大小),然后在簇间写入文件。也可以划分扇区,使簇小于您的扇区大小。一个文件跨簇(或几个簇)写入后,簇中未使用的空间是不能使用的,下一个文件在新的簇中开始。为了避免大量的不可用空间,人们通常会使用较小的簇大小,但这在写入大文件时可能会降低性能。Nand-flash S.S.D.s没有磁板,它们使用电通过内存块。一个块是由包含页的单元组成的。页的容量为X(通常为4KB),因此页的数量将决定一个块的容量(通常为512KB)。在SSD上,页相当于硬盘上的扇区,因为它们都代表了存储的最小划分。
什么是损耗均衡:
Nand-flash存储块可以被写入和擦除的次数是有限的(称为其生命周期)。為了避免硬碟機的容量減少(死區塊),盡可能平均地磨損區塊是有道理的。有限的生命周期也是为什么很多人建议,如果你使用的是基于Nand-flash的S.S.D.,就不要在你的操作系统中设置页面文件或交换分区的主要原因(尽管从设备到ram的快速数据传输速度也是这个建议的主要因素)。
什么是超额供应:
超额供应定义了可用空间的多少,与看起来有多少的区别。基于Nand-flash的存储设备宣称自己是 “Nand-flash"。比它们更小,这样才能保证有空块供垃圾处理使用。还有第二种超额供给叫做动态超额供给,简单的说就是在显示的空闲空间内有已知的空闲空间。动态超额供给有两种类型:操作系统级和驱动器控制器级。在操作系统层面,Trim可以用来释放可以立即写入的块。在控制器级别,可以使用未分配的驱动器空间(没有分区,没有文件系统)。拥有更多的空闲区块有助于保持驱动器以最佳性能运行,因为它可以立即写入。它还增加了按顺序定位的块的可能性,从而减少了访问时间,因为Nand-flash S.S.D.s使用顺序访问来读写数据。
什么是写放大?
由于Nand-flash介质要求在写入之前先擦除一个块,因此必须通过垃圾处理将块内未被擦除的任何数据复制到新的块中。这些额外的写入被称为写放大。
什么是 Trim.:
操作系统是以传统硬盘为基础构建的。记住传统硬盘可以直接覆盖数据。当你删除一个文件时,操作系统会将其标记为已删除(可以覆盖),但数据仍然存在,直到那里发生写操作。在基于Nand-flash的S.S.D.上,这是一个问题,因为数据必须首先被擦除。擦除发生在块级,所以可能有额外的数据没有被删除。垃圾处理会将任何没有被删除的数据复制到空块中,然后再将有关的块擦除。这一切都需要时间,并导致不必要的写入(写放大)!为了解决这个问题,有一个叫做Traditional Data的功能。为了解决这个问题,我们做了一个叫做Trim的功能。Trim给了操作系统权力,让它告诉S.S.D.在你没有请求写操作的时候,擦除含有被操作系统标记为已删除数据的页面的块。垃圾收集做了它的事情,结果块被释放出来,这样写就可以希望发生在不需要先被擦除的块上,这使得这个过程更快,并有助于将写放大降低到最小。这不是在文件的基础上进行的,Trim使用逻辑块寻址。L.B.A.指定了要擦除的扇区(页),擦除发生在块级。
基于内存的S.S.D.s:
完全没有缺点,因为它们是随机访问的!
基于Nand-flash的S.S.D.s:
我唯一想到的缺点是。
1.磨平将不会有那么多的自由空间可以使用,因为写操作将分布在一个较小的空间里,所以你 "可以",但不一定会比整个硬盘是一个单一分区的情况下更快地磨掉这部分硬盘,除非你将在额外的分区上进行同等的磨平(例如:双启动)。
像硬盘一样,nand-flash S.S.D’s 是顺序访问的,所以您从附加分区写入/读取的任何数据都会比在单一分区中写入的数据 "可能 "更远,因为人们通常会在分区中留下空闲空间。这将增加存储在附加分区上的数据的访问时间。
更少的总空间增加了写入碎片文件的可能性,虽然对性能的影响不大,但请记住,一般认为对nand-flash S.S.D.进行污损是个坏主意,因为它会磨损硬盘。当然,这取决于你使用的是什么文件系统,有些文件系统的碎片量极低,因为它们被设计成尽可能地将文件作为一个整体写入,而不是将文件转储到各个地方,以创造更快的写入速度。
我想说的是,拥有多个分区是可以的,但如果你有一些分区得到了大量的写入活动,而其他分区得到的活动很少,那么磨损水平可能是一个问题。如果你不把你不打算使用的空间分区,而把它留给动态超额配置,你可能会得到性能提升,因为它将更容易释放块和写入顺序数据。然而,我们并不能保证一定会需要超额配置空间,这就回到了第一点关于损耗均衡的问题。
在这个主题中,其他一些人已经提出了关于分区如何影响Trim对动态超额供给的贡献的讨论。根据我的理解,TRIM是用来指出有数据标记要删除的扇区(页),这样垃圾处理就可以免费清除这些块。这个空闲空间只在该分区内起到动态超额供给的作用,因为这些扇区是集群的一部分。被该分区的文件系统使用;其他分区有自己的文件系统。然而,我可能完全错了,因为过度供应的整个想法对我来说有点不清楚,因为数据将被写入甚至没有文件系统或出现在驱动器容量的地方。这让我怀疑,也许过度供应空间是在对文件系统内的块进行最后的选择化写入操作之前临时使用的?当然,Trim对文件系统内动态超额供给的贡献不会是临时性的,因为它们已经在可用空间中,可以直接写入。至少我的理论是这样的。也许我对 filesytems 的理解是错误的?我一直找不到任何资源来详细说明这个问题。
不,这是有道理的。
SSD的速度直接与使用中分区的可用空间大小有关。如果你把硬盘分区成小块,SSD的效率就会因为缺少可用空间而受到影响。
所以说,对SSD进行分区是没有缺点的,但硬盘上没有可用空间是有缺点的。
参考本超级用户【帖子】(https://superuser.com/questions/162155/does-low-disk-space-affect-ssd-performance)。