不能使用 kdump 或 kexec 在 Hyper-V Linux 虛擬機器

文章翻譯 文章翻譯
文章編號: 2858695 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

徵狀

請考慮如下案例:
  • 您必須已安裝 Hyper-V 角色的 Windows 架構電腦。
  • 您可以安裝 Linux Hyper-V 虛擬機器的電腦上。
  • 您可以設定 kdump Linux VM 上。Linux VM 中已經有 Linux 整合服務的驅動程式,預先建置或手動安裝。
如果在這個案例中,損毀 Linux 虛擬機器,從 Linux 核心核心傾印檔案不會產生如預期般運作。

發生的原因

Hyper-V 無法主控來自同一個綜合驅動程式在虛擬機器內部執行的兩個同時連線,就會發生這個問題。

Linux 虛擬機器正在使用的 Linux 整合服務綜合的存放裝置驅動程式 (也就是 storvsc) 上設定 kdump 之後,kexec 核心被設定為使用相同的驅動程式中。如果損毀 Linux 虛擬機器,裝載於 kexec 核心綜合的存放裝置驅動程式就會嘗試開啟 Hyper-V 存放區提供者的連接。但是,無法建立新連線,因為相同的存放裝置驅動程式損毀的 Linux 虛擬機器上的既有連線,所以 Hyper-V。因此,kexec 核心無法傾印損毀的 Linux 虛擬機器的核心。

解決方案

如果要解決這個問題,請使用標準的 Linux 存放裝置驅動程式來設定 kexec 核心。「 Kdump 」 功能已啟用 Linux 虛擬機器之後,必須執行這項設定。基本概念是,若要關閉 [Linux 整合服務的存放裝置驅動程式,並使用prefer_ms_hyper_v參數的適當策略性位置,以啟用深入探索核心 kexec 標準 Linux 存放裝置驅動程式。

Prefer_ms_hyper_v參數可用來控制標準 Linux 存放裝置驅動程式的行為。當這個參數設為1 ,並執行 Hyper-V Linux 虛擬機器時,標準的 Linux 存放裝置驅動程式本身會停用,並控制儲存裝置,則 Linux 整合服務儲存區驅動程式。藉由設定prefer_ms_hyper_v參數為0,標準的 Linux 存放裝置驅動程式才能運作。因為標準的 Linux 存放裝置驅動程式不需要連線到 Hyper-V,kexec 核心可以傾印核心。

不同的 Linux 散發都會有稍微不同的機制,以指定的prefer_ms_hyper_v值。下節將說明如何設定參數,許多受歡迎的 Linux 散發。

紅色帽型符號企業 Linux 5.9 (RHEL)

在 RHEL 5.9,您必須將透過核心命令列引數的prefer_ms_hyper_v參數傳遞至 RHEL 5.9 核心內建的ide_core模組。根據預設,這個參數會被初始化為1,這會導致 Linux 虛擬機器,以避免使用ide_core模組,如果它在 Hyper-V 環境中執行。系統管理員必須設為0prefer_ms_hyper_v參數值,使 kexec 核心開機程序期間進入運作的ide_core驅動程式。您可以藉由變更 /etc/kdump.conf 的內容。

若要變更的 /etc/kdump.conf 內容,請依照下列步驟執行:
  1. 執行下列命令來設定要寫入至本機目錄的 kdump:

    路徑/var/損毀
  2. Blacklist /etc/kdump.conf Linux 整合服務驅動程式。如此可避免驅動程式載入到 kexec 核心。若要這樣做,請執行下列命令:

    黑名單 hv_vmbus hv_storvsc hv_utils hv_netvsc hid_hyperv
  3. 設定磁碟逾時值,藉由執行下列命令:

    100 disk_timeout
  4. 將必要的編輯後的 /etc/kdump.conf 檔案看起來像這樣:
    路徑/var/損毀
    core_collector makedumpfile-c-訊息層級 1-d 31
    黑名單 hv_vmbus hv_storvsc hv_utils hv_netvsc hid_hyperv
    100 disk_timeout
  5. 請修改 /etc/sysconfig/kdump 檔案的內容,如下所示:
    • 新增或修改以下這行來包含 prefer_ms_hyperv = 0 的引數:

      KDUMP_COMMANDLINE_APPEND ="irqpoll maxcpus = 1 reset_devices ide_core.prefer_ms_hyperv=0"
    • 將必要的編輯後的 /etc/sysconfig/kdump 檔案看起來像這樣:
      KDUMP_COMMANDLINE =""

      # 這個變數可以讓我們將引數附加至目前的 kdump 指令行
      # 如採取從上面,不論是哪一 KDUMP_COMMANDLINE 或/程序/命令行

      KDUMP_COMMANDLINE_APPEND ="irqpoll maxcpus = 1 reset_devices ide_core.prefer_ms_hyperv=0"

紅色帽型符號企業 Linux 6.4 (RHEL)

在 RHEL 6.4 中,您必須將prefer_ms_hyper_v參數傳遞至ata_piix驅動程式的模組。您可以藉由變更 /etc/kdump.conf 檔案的內容。

若要變更內容的 /etc/kdump.conf,請依照下列步驟執行
  1. 設定要寫入至本機目錄的 kdump:

    路徑/var/損毀
  2. 新增額外的模組 ata_piix、 sr_mod、 sd_mod:

    extra_modules ata_piix sr_mod sd_mod
  3. 黑名單中 etc/kdump.conf 的 Linux 整合服務驅動程式。這樣可以防止載入 kexec 核心驅動程式:

    黑名單 hv_vmbus hv_storvsc hv_utils hv_netvsc hid_hyperv
  4. 將 options 參數來傳遞參數至 ata_piix 模組:

    選項 ata_piix prefer_ms_hyperv = 0
  5. 這麼一來,它不會停止回應 (擱置),請設定磁碟逾時值:

    100 disk_timeout
  6. 將必要的編輯後的 /etc/kdump.conf 檔案看起來像這樣:
    路徑/var/損毀
    core_collector makedumpfile-c-訊息層級 1-d 31
    extra_modules ata_piix sr_mod sd_mod
    黑名單 hv_vmbus hv_storvsc hv_utils hv_netvsc hid_hyperv
    選項 ata_piix prefer_ms_hyperv = 0
    100 disk_timeout

Ubuntu 12.04(.x)

在 Ubuntu 12.04 (。x),您必須將prefer_ms_hyper_v參數傳遞至ata_piix驅動程式。您可以藉由變更 /etc/init.d/kdump 檔案的內容。

若要變更的 /etc/init.d/kdump 檔案的內容,請附加 ata_piix。prefer_ms_hyper_v = 0 到 kdump 命令列選項:
do_start {} {
….
….
附加 ="$APPEND kdump_needed maxcpus = 1 irqpoll reset_devices ata_piix.prefer_ms_hyperv=0"

}

SUSE Linux 企業伺服器 (SLES) 11 SP2(x)

在 SLES 11 SP2(x) 散發,您必須將prefer_ms_hyper_v參數傳遞至ata_piix驅動程式。您可以藉由修改 /etc/sysconfig/kdump 檔案的內容,如下所示:

附加 ata_piix.prefer_ms_hyper_v=0 至 KDUMP_COMMANDLINE_APPEND:

KDUMP_COMMANDLINE_APPEND="ata_piix.prefer_ms_hyperv=0"

將必要的編輯後的 /etc/sysconfig/kdump 檔案看起來像這樣:

KDUMP_COMMANDLINE_APPEND="ata_piix.prefer_ms_hyperv=0"

其他相關資訊

KDUMP 應該設定建議 Linux 散發的標準方式。

本文中所討論的協力廠商產品並非由 Microsoft 製造。Microsoft 不以擔保、 默示或其他方式保證這些產品的可靠性和效能。

屬性

文章編號: 2858695 - 上次校閱: 2013年6月26日 - 版次: 2.0
這篇文章中的資訊適用於:
  • Microsoft Hyper-V Server 2008 R2
  • Microsoft Hyper-V Server 2008 R2 Service Pack 1
  • Windows Server 2008 R2 Standard
  • Windows Server 2008 R2 Enterprise
  • Windows Server 2008 R2 Datacenter
  • Windows Server 2008 R2 for Itanium-Based Systems
  • Windows Server 2008 R2 Service Pack 1
  • Windows Storage Server 2008 R2
  • Windows Storage Server 2008 R2 Essentials
  • Microsoft Hyper-V Server 2012
  • Windows Server 2012 Foundation
  • Windows Server 2012 Release Candidate
  • Windows Server 2012 Standard
  • Windows Storage Server 2012 Standard
  • Windows Storage Server 2012 Workgroup
關鍵字:?
kbmt KB2858695 KbMtzh
機器翻譯
請注意--重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,且可能由 Microsoft Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。Microsoft 同時提供使用者人為翻譯、機器翻譯及社群編修後的機器翻譯三種版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,所有翻譯文章都可能不盡完美,內容都可能出現詞彙、語意或文法上的錯誤。就翻譯內容之不正確或錯誤,或客戶因使用翻譯內容所產生的任何損害,微軟不負擔任何責任。Microsoft將依合理的商業努力不斷地更新機器翻譯軟體和工具,以期能為使用者提供更好的服務。
按一下這裡查看此文章的英文版本:2858695
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com