Udostępnij za pośrednictwem


Maszyna wirtualna platformy Azure z systemem Linux na jądrze opartym na wersji 3.10 wpada w panikę po uaktualnieniu węzła hosta

Uwaga

CentOS, do którego odwołuje się ten artykuł, jest dystrybucją systemu Linux i osiągnie koniec życia (EOL). Rozważ użycie i odpowiednio zaplanuj. Aby uzyskać więcej informacji, zobacz Wskazówki dotyczące końca życia systemu CentOS.

W tym artykule omówiono problem występujący, gdy maszyna wirtualna platformy Azure z systemem Linux z uruchomionym jądrem opartym na wersji 3.10 ulega awarii po uaktualnieniu węzła hosta na platformie Azure.

Oryginalna wersja produktu: Maszyna wirtualna z systemem Linux, maszyna wirtualna z systemem RedHat
Oryginalny numer KB: 3212236

Symptomy

Rozpatrzmy następujący scenariusz:

  • Masz maszynę wirtualną Microsoft Azure Linux z dystrybucją opartą na systemie RHEL/CentOS w wersji jądra systemu Linux wcześniejszej niż wersja 3.10.0-327.10.1, w tym te, które są dołączone do:

    • Red Hat Enterprise Linux 7.1 i 7.0
    • CentOS 7.1 i 7.0
    • Oracle Linux 7.1 i 7.0 z jądrem zgodnym z systemem Red Hat
  • W węźle hosta platformy Azure jest wykonywana operacja aktualizacji chroniąca pamięć .

W tym scenariuszu maszyna wirtualna przestaje odpowiadać, a w dzienniku szeregowym systemu Linux jest rejestrowana panika maszyny wirtualnej podobna do poniższej:

[11480839.438577] Call Trace:
[11480839.439615] [<ffffffff816045b6>] dump_stack+0x19/0x1b
[11480839.441556] [<ffffffff8106e29b>] warn_slowpath_common+0x6b/0xb0
[11480839.443818] [<ffffffff8106e33c>] warn_slowpath_fmt+0x5c/0x80
[11480839.445983] [<ffffffff8123e585>] sysfs_add_one+0xa5/0xd0
[11480839.447983] [<ffffffff8123e77c>] create_dir+0x7c/0xe0
[11480839.449876] [<ffffffff8123eb29>] sysfs_create_dir+0xa9/0x130
[11480839.451971] [<ffffffff812d74ab>] kobject_add_internal+0xbb/0x2f0
[11480839.454310] [<ffffffff812d79e5>] kobject_add+0x75/0xd0
[11480839.456236] [<ffffffff813cfa85>] device_add+0x125/0x7a0
[11480839.458167] [<ffffffff813df9fc>] ? __pm_runtime_resume+0x5c/0x80
[11480839.460469] [<ffffffff813fe9cc>] scsi_sysfs_add_sdev+0xac/0x280
[11480839.462628] [<ffffffff813fcfbb>] do_scan_async+0x7b/0x150
[11480839.464632] [<ffffffff8109e849>] async_run_entry_fn+0x39/0x120
[11480839.467170] [<ffffffff8108f0cb>] process_one_work+0x17b/0x470
[11480839.469354] [<ffffffff8108fe9b>] worker_thread+0x11b/0x400
[11480839.472310] [<ffffffff8108fd80>] ? rescuer_thread+0x400/0x400
[11480839.475265] [<ffffffff8109727f>] kthread+0xcf/0xe0
[11480839.477904] [<ffffffff810971b0>] ? kthread_create_on_node+0x140/0x140
[11480839.481074] [<ffffffff81614358>] ret_from_fork+0x58/0x90
[11480839.483873] [<ffffffff810971b0>] ? kthread_create_on_node+0x140/0x140
[11480839.487072] ---[ end trace 1f7736c59e96a8a0 ]---
[11480839.489584] ------------[ cut here ]------------
......
[11480864.118093] Call Trace:
[11480864.118093] [<ffffffff815f2535>] klist_put+0x25/0xa0
[11480864.118093] [<ffffffff815f25be>] klist_del+0xe/0x10
[11480864.118093] [<ffffffff813ce908>] device_del+0x58/0x1f0
[11480864.118093] [<ffffffff813ceabe>] device_unregister+0x1e/0x60
[11480864.118093] [<ffffffff812c36ee>] bsg_unregister_queue+0x5e/0xa0
[11480864.118093] [<ffffffff813fec49>] __scsi_remove_device+0xa9/0xd0
[11480864.118093] [<ffffffff813fcfc7>] do_scan_async+0x87/0x150
[11480864.118093] [<ffffffff8109e849>] async_run_entry_fn+0x39/0x120
[11480864.118093] [<ffffffff8108f0cb>] process_one_work+0x17b/0x470
[11480864.118093] [<ffffffff8108fe9b>] worker_thread+0x11b/0x400
[11480864.118093] [<ffffffff8108fd80>] ? rescuer_thread+0x400/0x400
[11480864.118093] [<ffffffff8109727f>] kthread+0xcf/0xe0
[11480864.118093] [<ffffffff810971b0>] ? kthread_create_on_node+0x140/0x140
[11480864.118093] [<ffffffff81614358>] ret_from_fork+0x58/0x90
[11480864.118093] [<ffffffff810971b0>] ? kthread_create_on_node+0x140/0x140

Przyczyna

Ten problem może być spowodowany błędną logiką blokowania w podsystemie SCSI, która jest uwidoczniona po usunięciu dysku SCSI z uruchomionego gościa maszyny wirtualnej opartego na systemie RHEL/CentOS na hoście Microsoft Hyper-V.

Rozwiązanie

Aby rozwiązać ten problem i przywrócić funkcjonalność, ręcznie uruchom ponownie maszynę wirtualną.

Aby uniknąć tego problemu w przyszłości, zaktualizuj jądro w wersji 3.10.0-327.10.1 lub nowszej, w tym w następujących wersjach:

  • Red Hat Enterprise Linux 7.2
  • CentOS 7.2
  • Oracle Linux 7.2 z jądrem zgodnym z systemem Red Hat

Więcej informacji

Aby uzyskać więcej informacji na temat zatwierdzonych dystrybucji systemu Linux i technologii open source na platformie Azure, zobacz Obsługa technologii systemu Linux i open source na platformie Azure.

Skontaktuj się z nami, aby uzyskać pomoc

Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii platformy Azure.

Zastrzeżenie dotyczące innych firm

Produkty innych firm omówione w tym artykule są wytwarzane przez producentów niezależnych od firmy Microsoft. Firma Microsoft nie udziela żadnych gwarancji, dorozumianych ani żadnego innego rodzaju, w odniesieniu do wydajności lub niezawodności tych produktów.