遇到 Ubuntu 14.04 KVM 主机/虚拟机的一个奇怪问题。我们有许多物理机,所有规格都相同,但当我们尝试启动相同类型的 KVM 映像时(OpenNebula 管理虚拟机部署,因此每台机器上的虚拟机配置完全相同),我们遇到超过一半的主机和虚拟机无法启动的问题。
虚拟机 (Windows 2008 R2) 分配有 16GB 内存和 12 个内核,主机有 24GB 内存和 12 个内核/24 个线程 - 因此不存在资源不足的问题,每个主机只运行 1 个虚拟机。主机上没有其他东西争用资源或使用任何重要 (>500MB) 内存(只有少数东西,如 puppet、splunk 等)。
如果我登录到出现问题的某台主机并查看top
:
top - 05:13:21 up 2 days, 21:23, 1 user, load average: 81.41, 74.04, 44.58
Tasks: 302 total, 1 running, 301 sleeping, 0 stopped, 0 zombie
%Cpu(s): 33.3 us, 8.4 sy, 0.0 ni, 58.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 24680184 total, 24467788 used, 212396 free, 141636 buffers
KiB Swap: 37731324 total, 0 used, 37731324 free. 11193004 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3593 oneadmin 20 0 21.771g 0.011t 9356 D 999.0 49.8 131:19.15 qemu-system-x86
您可以看到 KVM 只能分配 11GB,并且qemu-system-x86
正在重击 CPU(这很好,有很多可用的核心)但是 VM 本身尚未完全启动(我无法使用 RDP,而且 CPU 较高这一事实似乎与该问题相关或受该问题影响)。
相比之下,如果我查看运行相同 VM 配置的相同机器:
top - 05:24:58 up 3 days, 3:53, 1 user, load average: 1.08, 1.15, 0.72
Tasks: 290 total, 1 running, 289 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.7 us, 0.7 sy, 0.0 ni, 96.0 id, 2.6 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 24680184 total, 24375512 used, 304672 free, 136520 buffers
KiB Swap: 37731324 total, 340872 used, 37390452 free. 7446028 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
27824 oneadmin 20 0 21.304g 0.015t 6524 S 38.2 65.1 12:05.93 qemu-system-x86
在这里您可以看到它很高兴地分配了它的内存(0.015t),已经启动正常(我可以使用 RDP),并且只是在空闲状态下运行(大部分情况下)。
什么原因导致上面显示的第一个 VM 中的 KVM 无法正确分配资源?
扫描系统日志、libvirt/qemu 日志等。我没有发现任何问题。
更新:
检查内核日志后我发现了这一点:
May 24 05:00:27 ubuntu kernel: [249051.039660] perf samples too long (5103 > 5000), lowering kernel.perf_event_max_sample_rate to 25000
May 24 05:00:33 ubuntu kernel: [249057.722532] ------------[ cut here ]------------
May 24 05:00:33 ubuntu kernel: [249057.722562] kernel BUG at /build/buildd/linux-3.13.0/mm/memory.c:3756!
May 24 05:00:33 ubuntu kernel: [249057.722587] invalid opcode: 0000 [#1] SMP
May 24 05:00:33 ubuntu kernel: [249057.722605] Modules linked in: ipt_MASQUERADE iptable_nat nf_nat_ipv4 nf_nat xt_CHECKSUM iptable_mangle xt_tcpudp bridge stp llc ip6table_filter ip6_tables ipt_REJECT xt_LOG xt_limit xt_multiport nf_conntrack_ipv4 nf_defrag_ipv4 iptable_filter xt_conntrack nf_conntrack ip_tables x_tables ast ttm drm_kms_helper drm syscopyarea sysfillrect sysimgblt gpio_ich intel_powerclamp coretemp kvm_intel dcdbas kvm crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel aes_x86_64 lrw gf128mul glue_helper ablk_helper cryptd serio_raw lpc_ich joydev i7core_edac edac_core ipmi_si mac_hid lp parport hid_generic usbhid hid igb i2c_algo_bit dca ptp ahci libahci pps_core
May 24 05:00:33 ubuntu kernel: [249057.722903] CPU: 11 PID: 3601 Comm: qemu-system-x86 Not tainted 3.13.0-24-generic #47-Ubuntu
May 24 05:00:33 ubuntu kernel: [249057.722934] Hardware name: Dell CS24-TY /S99 , BIOS DS993B15 09/20/2010
May 24 05:00:33 ubuntu kernel: [249057.722972] task: ffff88062d8dc7d0 ti: ffff88062b4f2000 task.ti: ffff88062b4f2000
May 24 05:00:33 ubuntu kernel: [249057.723000] RIP: 0010:[<ffffffff81179051>] [<ffffffff81179051>] handle_mm_fault+0xe61/0xf10
May 24 05:00:33 ubuntu kernel: [249057.723038] RSP: 0018:ffff88062b4f3a08 EFLAGS: 00010246
May 24 05:00:33 ubuntu kernel: [249057.723058] RAX: 0000000000000100 RBX: 00007f3864300000 RCX: ffff88062b4f3788
May 24 05:00:33 ubuntu kernel: [249057.723083] RDX: ffff88062d8dc7d0 RSI: 0000000000000000 RDI: 8000000340c009e6
May 24 05:00:33 ubuntu kernel: [249057.723108] RBP: ffff88062b4f3a90 R08: 0000000000000000 R09: 0000000000000019
May 24 05:00:33 ubuntu kernel: [249057.723134] R10: 0000000000000001 R11: 0000000000000000 R12: ffff88032e317908
May 24 05:00:33 ubuntu kernel: [249057.723159] R13: ffff88032c785740 R14: ffff88032c437380 R15: 0000000000000000
May 24 05:00:33 ubuntu kernel: [249057.723185] FS: 00007f3b94ff9700(0000) GS:ffff88063fca0000(0000) knlGS:0000000000000000
May 24 05:00:33 ubuntu kernel: [249057.723213] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
May 24 05:00:33 ubuntu kernel: [249057.723235] CR2: fffff98001b88400 CR3: 0000000315fad000 CR4: 00000000000027e0
May 24 05:00:33 ubuntu kernel: [249057.723260] Stack:
May 24 05:00:33 ubuntu kernel: [249057.723269] ffffffff8171da4a 0000000000000010 0000000000000202 ffff88062b4f3a38
May 24 05:00:33 ubuntu kernel: [249057.723303] 0000000000000018 ffffea00124a9900 ffff88062b4f3a90 ffffffff81176fc8
May 24 05:00:33 ubuntu kernel: [249057.723336] ffff88032e3179b8 ffff880629b41a08 ffff880300000019 8000000400000001
May 24 05:00:33 ubuntu kernel: [249057.723368] Call Trace:
May 24 05:00:33 ubuntu kernel: [249057.723385] [<ffffffff8171da4a>] ? _raw_spin_lock+0x3a/0x50
May 24 05:00:33 ubuntu kernel: [249057.723407] [<ffffffff81176fc8>] ? follow_page_mask+0xf8/0x5b0
May 24 05:00:33 ubuntu kernel: [249057.723430] [<ffffffff81179266>] __get_user_pages+0x166/0x5e0
May 24 05:00:33 ubuntu kernel: [249057.723473] [<ffffffffa0297709>] __gfn_to_pfn_memslot+0x169/0x3c0 [kvm]
May 24 05:00:33 ubuntu kernel: [249057.723504] [<ffffffffa02979bc>] __gfn_to_pfn+0x5c/0x60 [kvm]
May 24 05:00:33 ubuntu kernel: [249057.723531] [<ffffffffa02979fa>] gfn_to_pfn_async+0x1a/0x20 [kvm]
May 24 05:00:33 ubuntu kernel: [249057.723564] [<ffffffffa02b9f8f>] try_async_pf+0x3f/0x1b0 [kvm]
May 24 05:00:33 ubuntu kernel: [249057.723595] [<ffffffffa02b4f6e>] ? mapping_level.isra.92+0x7e/0xa0 [kvm]
May 24 05:00:33 ubuntu kernel: [249057.723628] [<ffffffffa02ba416>] tdp_page_fault+0x106/0x1f0 [kvm]
May 24 05:00:33 ubuntu kernel: [249057.723660] [<ffffffffa02b5634>] kvm_mmu_page_fault+0x24/0x100 [kvm]
May 24 05:00:33 ubuntu kernel: [249057.723688] [<ffffffffa0156634>] handle_ept_violation+0x94/0x160 [kvm_intel]
May 24 05:00:33 ubuntu kernel: [249057.723716] [<ffffffffa015bb05>] vmx_handle_exit+0xb5/0x890 [kvm_intel]
May 24 05:00:33 ubuntu kernel: [249057.723743] [<ffffffff8109d91e>] ? __vtime_account_system+0x2e/0x40
May 24 05:00:33 ubuntu kernel: [249057.723775] [<ffffffffa02a9c05>] vcpu_enter_guest+0x795/0xcb0 [kvm]
May 24 05:00:33 ubuntu kernel: [249057.723806] [<ffffffffa029fde4>] ? kvm_check_async_pf_completion+0x14/0x110 [kvm]
May 24 05:00:33 ubuntu kernel: [249057.723842] [<ffffffffa02ae108>] kvm_arch_vcpu_ioctl_run+0x1e8/0x460 [kvm]
May 24 05:00:33 ubuntu kernel: [249057.723872] [<ffffffffa0298062>] kvm_vcpu_ioctl+0x2c2/0x5b0 [kvm]
May 24 05:00:33 ubuntu kernel: [249057.723898] [<ffffffff810d9329>] ? futex_wake+0x1a9/0x1d0
May 24 05:00:33 ubuntu kernel: [249057.724805] [<ffffffff811cc6e0>] do_vfs_ioctl+0x2e0/0x4c0
May 24 05:00:33 ubuntu kernel: [249057.725701] [<ffffffff8109dd84>] ? vtime_account_user+0x54/0x60
May 24 05:00:33 ubuntu kernel: [249057.726603] [<ffffffff811cc941>] SyS_ioctl+0x81/0xa0
May 24 05:00:33 ubuntu kernel: [249057.727496] [<ffffffff817266bf>] tracesys+0xe1/0xe6
May 24 05:00:33 ubuntu kernel: [249057.728375] Code: ff 48 89 d9 4c 89 e2 4c 89 ee 4c 89 f7 44 89 4d c8 e8 34 c1 ff ff 85 c0 0f 85 94 f5 ff ff 49 8b 3c 24 44 8b 4d c8 e9 68 f3 ff ff <0f> 0b be 8e 00 00 00 48 c7 c7 18 25 a6 81 44 89 4d c8 e8 18 e7
May 24 05:00:33 ubuntu kernel: [249057.730245] RIP [<ffffffff81179051>] handle_mm_fault+0xe61/0xf10
May 24 05:00:33 ubuntu kernel: [249057.731128] RSP <ffff88062b4f3a08>
May 24 05:00:33 ubuntu kernel: [249057.745224] ---[ end trace 9b34ed0875c40df4 ]---
想知道这个内核是否有问题(3.13.0-24-generic
)。我还发现有问题的主机的系统行为很奇怪 - 如果我尝试,ps
它会在某个点挂起,我必须终止我的 SSH 会话。我也无法重新启动系统,大概在重新启动过程中也会挂起。这个内核问题显然破坏了系统的其余部分。
答案1
是的 - 该内核存在问题。我们在双 E5-2687 上运行多个 Java 实例时也遇到了同样的问题。
从未耗尽内存,但经过几个小时的加载后,如果我们尝试 ssh 或运行 ps,它就会崩溃。Dmesg 显示的错误与您遇到的错误相同:
内核 BUG 位于 /build/buildd/linux-3.13.0/mm/memory.c:3756!
我们安装了最新的测试内核,自此以来一直很稳定(3.15.0-031500rc2-generic #201404201435)。内核和头文件可以从以下网址下载http://kernel.ubuntu.com/~kernel-ppa/mainline/?C=N;O=D并使用 dpkg 安装。
我们目前正在测试,如果此内核发生崩溃,我会发布。
更新: 我们运行了适用于 AMD64 的 3.15.0-031500rc2-generic,虽然这种情况很少发生,但我们还是遇到了同样的错误。当然,这是在双 Xeon E5-2687W 在所有核心上以 100% 的利用率运行了大约 3 天之后发生的,但它仍然发生了,不应该发生(Ubuntu 12 没有发生,同样的 Java 应用程序)。
答案2
请注意,该问题已修复,但有以下错误: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1323165
请升级到 Trusty 中的以下 Linux 版本:3.13.0-32.57
谢谢