求助! 16T 数据的小文件,如何快速进行拷贝?

3 天前
 CristianoRonaldo

目前移动硬盘存储了 16T 的数据,目录结构如下 目前需要迁移到另一个硬盘上,使用过 fastcopy ,速度太慢了,只有 0.06M/s,全部拷完,公司都倒闭了,如下图

求助 v 友还有什么方法,可以快速进行拷贝呢?

6258 次点击
所在节点    程序员
87 条回复
xxbing
3 天前
rsync ???
zushi000
3 天前
用 diskgens 克隆
standin000
3 天前
@wxf666 估计软件架构是手搓的数据库,所以一直存放小文件
clemente
3 天前
@ihuihui 解压时间更长...
festoney8
3 天前
@wxf666 #35 还从没听说过能按照文件在磁盘中位置的顺序复制文件的,win 大概只能用文件列表顺序读盘,必然产生随机读
zdl0929
3 天前
最快应该是整盘克隆

dd if=/dev/sdX of=/dev/sdY bs=64M status=progress

其次应该是直接 tar 到 对应机器目录(别先 tar 再传,避免中间文件)
tar -cf - . | pv | tar -xf - -C /mnt/target
clarkethan
3 天前
如果两边都是 NTFS ,可以考虑用 Clonezilla ,只拷贝使用了的簇,几乎顺序 io ,也没有文件元数据 io 开销
wxf666
3 天前
@festoney8 对呀,就是一个个文件去读,但按照它们内容在硬盘上顺序,去决定文件列表,这样磁头就不需要频繁移动,减少寻道时间,尽量将随机读写,转化成顺序读写了吧?

实在不行,就手动分析物理硬盘上,每个 4K 块数据,属于哪个文件的呗。然后顺序读取分区,提取数据缓存在内存里,哪个文件缓存完了(可能有文件碎片成多个 4K 块),就写入到另一个硬盘里。

别说不可能,各种碎片整理软件,都能知道每个文件每一块碎片,在物理磁盘上的偏移范围。。
abc0123xyz
3 天前
直接复制硬盘分区
leeyaunlong
3 天前
你这移动硬盘应该拆出来装 pc 上再复制啊.
carlojie
3 天前
让我想起来天量数据迁移,使用人工搬运
Reficul
3 天前
按文件系统拷贝,linux 下面 umount 了之后直接 dd 整个块设备到新硬盘。类似`dd if=/dev/sda of=/dev/sdb`。另外新设备要比老设备大,否则你得先缩文件系统。

按文件拷贝多线程也没用,瓶颈都在 io 上。
inorobot
3 天前
16T 的机械盘,怎么拷都得几天,还是得上 SSD ,
把移动硬盘拆了,连电脑上用
festoney8
3 天前
@wxf666 #48 我感觉哪怕是按磁盘位置优化过读取顺序,仍然会被 NTFS 元数据影响,比如每个写入操作都会伴随 MFT 、bitmap 的修改,还是会带来随机访问,只有绕过文件系统才能提升速率
TimePPT
3 天前
整盘拷贝吧,之前在公司管理过几十 T 稀碎文件,单文件都很小。上个硬盘拷贝机直接插上不用管,很快的。
Co1e
3 天前
看看评论 学习学习
wxf666
3 天前
@festoney8 #54 Windows 不至于每写一个文件,就强制落盘 $MFT 吧,应该能内存里缓存一段时间,积攒一堆新文件元数据,再一起写入,平摊随机读写成本,转换成大量顺序读写?

其实感觉楼主应该换新方法存储了,否则 NTFS 每次读写都得额外访问 $MFT 、校检权限、杀毒软件放行等,严重拖慢速度,特别是像现在的备份 / 迁移时。。

感觉巨量小文件存数据库里更优,元数据很轻量,且能和文件内容放在一起,减少几次随机 IO (视索引 B+ 树层级而定)。还不用 4K 簇对齐,更充分利用硬盘空间。备份 / 迁移时,还能大文件整体拷贝,吃满硬盘性能。

如果实在要以文件系统形式,对其他程序提供服务,可以用些 fuse 手段。或者参考 RamDisk 它们怎么实现文件读写接口的,它们随机读写文件速度极快,因此这个抽象层应该不会有太多性能损耗。。

现在 AI 这么发达,上述应该不难实现,论坛首页都一堆讨论 AI 的 v 友,请教下他们,或者出点小钱让其帮忙,应该就行了。。
laminux29
2 天前
@wxf666 移动机械硬盘的 debuff 被拉满了,再怎么吃满硬盘性能,硬盘性能也就可怜的那一点点。换架构才是解决问题的关键。

35 楼同理,架构没搞好,再优化也没用。

数据证明:

台式机机械硬盘,4k 速度,读平均为 0.7 MB/s ,写平均为 1.5 MB/s 。

SATA-SSD ,4k 速度,读平均为 25 MB/s ,写平均为 70MB/s 。

NVME-SSD ,4k 速度,读平均为 96.9 MB/s ,写平均为 272 MB/s 。

自己看看差了多少倍吧。这就像一句名言:选择大于努力。
dmanbu
2 天前
@xxbing rsync 复制小文件,特别是目录多的情况下,非常慢。用 dd 进行数据块克隆还快些
0superx0
2 天前
我能想到的只有 dd 是最快的了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1169211

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX