情况
- xen 4.0.1 dom0(debian squeeze)
- 所有 domU 都以 LV 作为磁盘:
disk = [ 'phy:/dev/vg-00/domu-swap,xvda1,w', 'phy:/dev/vg-00/domu-disk,xvda2,w' ]
) - 一个 VG (
vg-00
),包含 2 个 PV
目标
- 将所有 LV 从一个 PV 移动到另一个 PV(pvmove)并删除“空”PV(vgreduce)
- 不干扰任何正在运行的机器(domU od Dom0)
问题)
当我启动pmove
(我甚至尝试过ionice -c3
)我的 domU 时,负载非常高,甚至会卡住。我认为这是在pvmove
将 domU LV 的扩展从一个 PV 移动到另一个 PV 时发生的。我还看到 domU 真的崩溃了,并触发了 OOM-killer。长话短说:我不得不中断该过程(pvmove --abort
),因为我的 domU 开始变得无法使用,主要服务器组件被杀死,甚至完全死机/冻结。
问题
我知道转换期间 IO 负载较高,我可以应付。但即使
ionice -c3
IO 负载很高,domU 内部的任务也会被阻塞。为什么ionice
这里不工作?如果我理解正确,所有 IO 都是由 dom0(由 blkback 驱动程序)完成的,因此 dom0 应该可以看到每个 dom(0|U) 完成的所有 IO,并且应该能够为我的进程安排 IOrenice
- 我的假设错了吗?为什么我的 domU 会启动 OOM-killer?这个过程如何影响 domU 的内存?顺便说一句:当 domU 发疯时,我的 dom0 工作正常。IO 很高,但这是显而易见的。
有没有办法可以移除一个 PV 而不用像上面那样麻烦?关闭/暂停一个又一个 domU 并从这台机器上 pvmove 仅 LV 会更好吗?
提前感谢您的每一份意见 - 我甚至很高兴得到一些“调试想法”!
答案1
它应该可以工作 - 但似乎 XEN 在“w”模式下强加了某种排他锁定。也许这种锁定在“w!”模式下不那么严格(或者是“!w”?)。该模式应该允许来自多个源的写入请求。
在 DomU 中杀手启动之前,哪些内存消耗会增加?缓冲内存?