isp*_*iro 18 windows ssd partitioning windows-10
在一个驱动器中移动文件时,文件不会被复制和删除。引用文件的表刚刚更新。据我所知,硬盘驱动器上的 2 个驱动器并非如此。但是 SSD 不同,每个驱动器都没有专用的物理空间。(来源)
所以我的问题是当文件从一个驱动器移动到同一个 SSD 上的另一个驱动器时会发生什么,是复制了字节并删除了原始字节,还是更新了一些表,从而减少了对 SSD 的冲击?
目前已经是一个重复的问题在这里。但两个答案都声称:
每个分区都有自己的驱动器物理区域
和
对硬盘进行分区实际上为每个分区指定了物理区域。[并在评论中:] SSD 仍然是硬盘,只是没有磁盘。
据我所知这是错误的。见这里。
那么,请对 SSD 有更多了解的人告诉我,尽管他们有错误,但他们的评估是否正确?
use*_*686 38
据我所知这是错误的
引用的描述一半正确,一半错误。但对于 HDD 来说,这也有一半是错误的。
对驱动器进行分区为每个分区指定逻辑区域。操作系统根本不关心物理位置——它只是要求驱动器“读取逻辑块#31415926”,驱动器本身决定数据的位置。这对磁性和闪存的工作方式相同。
这实际上与过去 20 到 25 年的 HDD相同:尽管早期操作系统使用物理柱面/磁头/扇区位置,但现在早已不复存在。您不知道 LBA #1234 保存在哪个盘片上的确切位置。HDD 甚至会自动重新映射坏的物理扇区,因此可以突然从完全不同的物理区域读取相同的 LBA——就像使用 SSD 一样。
因此,对于 HDD 和 SSD,操作系统只有一系列 LBA(例如 0–999999)来读取和写入数据。分区的目的是在其中分配子范围——例如分区 A 得到 10–499999,分区 B 得到 500000–999999。每个分区都有一个独立的文件系统,每个分区内部的文件系统不能引用它外部的数据——它们不能跨越分区边界。(例如,分区 A不能有数据保存在扇区 #600000 中的文件。)
因此,从一个移动到另一个的所有文件都必须完整复制。
(也就是说,理论上操作系统可以要求磁盘本身将数据从一个区域复制到另一个区域(例如“将 LBA #1234 复制到 #567890”),而无需将其复制到主内存然后再复制回来,当然,这将完全绕过分区边界。例如,这可以利用 SSD 的“闪存转换层”。但实际上,据我所知,这并没有完成。)
Old*_*Pro 10
当数据写入固态硬盘时会发生什么值得多篇文章(这里总结得很好),因为它非常复杂,而且取决于底层技术。简而言之,SSD 通常不能将零位写入内存。相反,他们必须将整个内存部分清零(擦除),然后他们可以通过向其中写入数据来存储数据。如今,他们通常会写入512 字节的块,但会擦除8 块的页面,即 4096。这一点以及每个写入/擦除周期都会导致内存的一些物理磨损并且内存最终会磨损的事实,使 SSD 变得非常不同而不是旋转磁性硬盘。
撇开这一点,SATA 驱动器(和 AFAIK SAS 驱动器)不会实现将数据从一个扇区复制到另一个扇区的本机命令。(或者至少 SATA 或 SAS 规范中没有任何东西要求它们,因此操作系统不能指望这样的命令可用。)因此跨分区的文件复制将涉及从一个驱动器扇区读取数据到主机内存,然后写入它返回到不同扇区的驱动器。
这是因为就操作系统而言,驱动器是一组编号的逻辑扇区,它所能做的就是从扇区读取和写入扇区。操作系统无法告诉驱动器重新映射扇区。
此外,文件系统(HFS+、NTFS、ext3 等)是一组对一组逻辑块施加顺序的数据结构。这些数据结构实现了“文件”、“文件名”、“目录”、“权限”等。所以,是的,当你将文件从一个目录移动到另一个目录时,它不会被复制;只有指示文件所在目录的文件系统数据才会更新。
分区的概念是它是驱动器上由单个文件系统声明的一组逻辑扇区。其推论是文件系统可能无法访问其分区之外的扇区。在很大程度上,这是一个安全特性,但它也源于这样一个事实,即文件系统的数据结构都是围绕着文件系统所有权下的驱动器的每个扇区而构建的,并且添加或删除扇区并非易事到那些结构。这就是为什么你必须运行特殊的例程来调整分区的大小,也是为什么文件系统坚持在一组连续的扇区上运行。
因此,将文件副本实现为仅将扇区从一个文件系统传输到另一个文件系统是不切实际且危险的。在旋转的磁驱动器上,这也将是一个性能噩梦,因为尽管该驱动器会对坏扇区进行例外处理,但通常它会以优化连续编号的读写速度的方式来安排扇区的物理位置部门。
此外,2 个文件系统可能不会以相同的方式将文件数据存储在磁盘上,这意味着即使交换扇区可行,也不会起作用。即使它们是完全相同的文件系统类型,比如 NTFS,一个可能使用加密或压缩而另一个不使用,或者两者都可以加密数据,但使用不同的密钥。不要求文件中的数据与磁盘上存储的数据完全一致,只需要存储数据的可逆转换,这样文件系统就可以通过做一些事情来获取文件的数据磁盘上的数据。因此,除非两个文件系统使用完全相同的转换,否则简单地交换扇区将无法实现传输文件数据的目标。
由于所有这些原因,对于操作系统编写者和文件系统编写者来说,实现优化跨分区移动的功能对于 SSD 来说是太多的工作而获得的收益太少。因此,任何跨分区移动都将是一次读取和一次写入。
在 SSD 内部,情况略有不同。尽管操作系统没有告诉驱动器它正在将数据从一个地方复制到另一个地方,但写入 SSD 非常昂贵(且复杂),以至于 SSD 控制器做了很多工作来最小化写入。一些 SSD 甚至尝试检测写入存储的扇区何时与已存储的扇区匹配,并将该物理内存标记为现在映射到 2 个不同的逻辑扇区而不是复制它,在内部驱动器级别执行操作系统不能。
但不要指望它。
| 归档时间: |
|
| 查看次数: |
4290 次 |
| 最近记录: |