我脑子里浮现出一个愚蠢的问题:如果我在 C:/test1 中有一个文件,然后将其移动到 C:/test2,再移动到 D:/Other 等等……一遍又一遍,文件会损坏吗?如果一遍又一遍地复制该文件(复制、复制、复制、复制)会怎么样?
答案1
他们不应该这样做;文件是开/关模式,所有操作(如移动和复制)都旨在移动整个数据,而不会丢失任何数据。这不像人类的“电话”游戏,一遍又一遍地复制文件会使它每次都变得更加含糊和混乱,直到剩下的都是废话。
但每次你做某件事,都有可能出错。你做的事情越多,出错的几率就越大。例如,其中之一就是在移动过程中断电 - 最终你会得到什么?文件不完整?没有文件?还是两个文件?
没有什么是完美的;这里,2005 年,一项研究查看磁盘驱动器错误率,并发现:
我们在读取 1.4 PB 时观察到 3 次丢失事件,这是 3 个丢失的文件。在数据中心环境中,我们丢失了 32,000 个 10GB 文件中的 2 个,在办公室环境(系统 1)中,我们在 35,000 次尝试中丢失了一个 10GB 文件,在 7,560 次尝试中没有丢失 100GB 文件。
那只是磁盘错误,他们也"experienced at least 4 controller firmware or driver errors"
。
除此之外,还有内存错误——在将信息加载到计算机内存中并再次将其写出之间发生损坏的可能性。维基百科引用了一项臭名昭著的谷歌研究,他们在数千台服务器上跟踪内存中的错误这里其中指出:
“在 SIGMETRICS/Performance'09 会议上,谷歌公布了一项基于其海量服务器的大规模研究。[4] 实际错误率为每兆比特每十亿设备小时 25,000 到 70,000 个错误,每年有超过 8% 的 DIMM 内存模块受到错误的影响。”
当然,还存在出现错误、误读、因电源尖峰或宇宙射线造成的损坏、设计缺陷、超出廉价硬件的低容忍度、在磁盘上的磁性介质中、在通过电缆的传输中、在主板中、芯片组、处理器、内存、固件或软件以及所有回来的路上的可能性。
顺便,这是一篇精彩的文章基于这样一种想法:如果计算设备在查找互联网地址时破坏了内存中的数据,它可能会查找错误的地址。因此,作者注册了一些“错误地址”(如果您破坏了某个流行互联网站点名称的某个部分,则会得到这些地址),以查看是否有任何设备连接到它们 - 他在近 6 个月内收到了 52,000 个请求。
如何使计算更加可靠的研究是一个繁忙的领域。从 CRC 和校验和,到带奇偶校验的 RAID、基于校验和树的文件系统 ZFS,到自动复制,到 ECC 内存,等等。
答案2
在同一文件系统内移动文件根本不会触及文件的数据,而只会改变包含该文件的目录。
答案3
硬件和软件随时都可能出现故障,我们可以采取很多措施来避免数据损坏,但我们几乎无法确保数据完全不损坏。宇宙射线甚至大气层都可能导致数据位衰减,大多数用户如何避免这种情况?对吗?数据损坏也可能发生在数据传输过程中,这是最困难的部分,因为 99% 的网站不会为用户提供校验和文件来测试他们下载的副本是否完整。
毕竟,根据我的经验,数据损坏很少发生。
答案4
现代存储驱动器并不像大多数用户想象的那样,只是以简单的物理方式移动文件。如今的操作系统会给出简单的逻辑命令来移动数据,以便以后可以完全再次访问。不再需要告诉驱动器如何完成其工作。
但是我们假设它是旧驱动器,具有旧数据管理机制。如果是这样的话,操作系统可能需要担心数据损坏,因此它必须自行处理备份计划,无论是通过镜像、条带化还是奇偶校验。
但利用当今的存储技术,它完全由驱动器物理处理。