为什么午夜指挥官能够比cp复制文件快得多?

为什么午夜指挥官能够比cp复制文件快得多?

我发现 mc 的一个有趣行为。当我跨设备复制文件(至少是那些小于可用 RAM 的文件)时,复制似乎使用写回缓存,并且几乎是即时的(在我的一台服务器上,存储勉强能达到 50MB/s,它复制了 6GB 的文件,平均速度超过 2GB/s,只需几秒钟)。

然后我检查了 /proc/meminfo 并看到 Writeback 中大约有 6GB,并注意到它正在缓慢地写入实际磁盘。

然后第二个有趣的行为(我正在使用 btrfs),在同一个文件系统(同一个块设备)内复制这个大文件是绝对立即发生的(甚至没有进度条),并且似乎该文件只是使用 btrfs 的 COW 功能克隆的。

然而,这些超快速复制机制均不适用于普通的 cp 命令。当我运行 cp 时,由于受到存储速度的限制,复制文件的速度很慢。

为什么 mc 的速度会快这么多?直到现在我还以为 mc 使用的文件复制机制与 cp 几乎相同?

答案1

MC 将使用 btrfs 写时复制(参见https://midnight-commander.org/ticket/1983) 在可能的情况。

您可以对 执行相同操作cp --reflink=auto。或者,cp --reflink=always如果您想在无法进行快速克隆时出错。

相关内容