dd 使用所有内存和交换

dd 使用所有内存和交换

我有一台专用的 Centos 6.9 Linux 服务器,该公司因硬件故障而崩溃,并使用 USB 盒上的旧硬盘恢复了服务器。我正在尝试将 lvm 分区移到新的内部硬盘上。我创建了一个新的卷组和相同大小的逻辑卷。这些分区当前正由 kvm 虚拟机使用。我拍摄了 lv 的快照。然后我使用类似下面的方法复制分区。

dd if=/dev/OldVolGroup/lv__snap of=/dev/NewVolGroup/lv bs=1M

这似乎在以下速度下运行良好:

8192+0 records in
8192+0 records out
8589934592 bytes (8.6 GB) copied, 264.61 s, 32.5 MB/s

但是,内存和交换空间开始慢慢被占用。当我启动时,该机箱有 24GB 内存和大约 4GB 的备用内存。它有 2GB 的交换空间。

我可以关闭一些 kvm 机器来释放更多内存(大约 7-8GB),并且它无需使用所有资源就能完成 8GB 的​​传输。

有人能告诉我为什么它会占用这么多内存然后进行交换吗?这是正常的吗?

答案1

这是因为 dd 在写入之前会先读取缓存。如果您正在top运行,您会发现缓存在内存之前就被用完了。您真正能做的就是尝试更大的块大小。在正在运行的服务器上这样做并不是一件好事,但显然这就是您正在做的事情。

相关内容