我购买了 Seagate Expansion 5TB 外置硬盘,并开始克隆我贡献的 git 存储库。
有一个很大的 git 存储库(约 16GB,其中 1GB 只是目录.git
):将其克隆到我的硬盘上后,硬盘开始变得非常慢。一开始我以为这只是一个格式问题。
感谢保修服务,我得到了一个新的硬盘,完全相同的型号。
现在我重复整个过程,一切都运行顺利(~300MB/sec
)。然后我克隆了这个大存储库,现在我硬盘上的所有数据都可能丢失了。我开始将其从存储库复制到我的电脑上,但速度非常慢(~18kB/sec
):
我已确保妥善保管 HDD 以免其损坏,但看起来这个存储库可能会损坏它。
我不知道这是否是硬件问题。保修服务人员没有告诉我问题是什么。他们只是给我寄了一个新的硬盘。
我正在运行 Ubuntu 15.10。这里的硬盘可以工作,但速度很慢。在 Windows 机器上它根本不起作用。整个文件资源管理器崩溃了。
我该如何解决这个问题?git 存储库会损坏这样的 HDD 吗?
为什么只有克隆这个特定的存储库后才会这么慢?我之前确实复制了很多 GB 的数据,速度很快。
答案1
不知道您使用什么操作系统,这有点像猜谜游戏,但在某些情况下和文件系统中,有可能从驱动器读取数据并导致同时写入驱动器,同时系统会更新文件的“访问”时间。
如果驱动器有 4k 扇区,而您的文件系统使用 512 字节扇区,那么每当对该“实际”扇区中的其他 7 个 512 字节块进行小规模写入时,性能就会受到影响。基本上,每次需要更改这 8 个逻辑(文件系统)扇区中的任何一个时,驱动器都必须先读取整个 4kb 块,对其进行修改,然后将其写回。
将其与最后访问时间结合起来,您最终可能会花费大量时间修改包含无意义的会计数据的块,而不是实际读取或写入数据。
noatime
在 Linux 中,您可以通过在挂载磁盘时指定挂载选项来禁用此上次访问时间。
例子fstab
:
/dev/sda7 /chroot ext2 defaults,noatime 1 2
从http://tldp.org/LDP/solrhe/Securing-Optimizing-Linux-RH-Edition-v1.3/chap6sec73.html