![dd 使用所有内存和交换](https://linux22.com/image/714199/dd%20%E4%BD%BF%E7%94%A8%E6%89%80%E6%9C%89%E5%86%85%E5%AD%98%E5%92%8C%E4%BA%A4%E6%8D%A2.png)
我有一台专用的 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
运行,您会发现缓存在内存之前就被用完了。您真正能做的就是尝试更大的块大小。在正在运行的服务器上这样做并不是一件好事,但显然这就是您正在做的事情。