以前の特定のバージョンのLinuxカーネルがデータをファイルキャッシュに書き戻すと、ソフトロックアップエラーが発生します。 このトピックでは、問題の原因と解決策について説明します。
問題の説明
カーネルバージョンが4.15より前のLinux Elastic Compute Service (ECS) インスタンスでは、カーネルがデータをファイルキャッシュに書き戻すと、ソフトロックアップエラーが発生します。 以下のコンテンツと同様のコールスタック情報が生成されます。
uname -rコマンドを実行して、Linuxカーネルのバージョンを確認できます。 たとえば、コマンド出力に3.10.0-514.26.2.el7.x86_64
が表示されている場合、カーネルのバージョンは3.10.0
です。 このトピックでは、4.15バージョンは4.15.0
バージョンを指します。
[3507707.671883] [<ffffffff8127cf7a>] redirty_tail+0x3a/0x40
[3507707.671884] [<ffffffff81280ea4>] __writeback_inodes_wb+0x64/0xc0
[3507707.671885] [<ffffffff81281238>] wb_writeback+0x268/0x300
[3507707.671887] [<ffffffff812819f4>] wb_workfn+0xb4/0x380
[3507707.671889] [<ffffffff810a5dc9>] process_one_work+0x189/0x420
[3507707.671890] [<ffffffff810a625b>] worker_thread+0x1fb/0x4b0
[3507707.671891] [<ffffffff810a6060>] ? process_one_work+0x420/0x420
[3507707.671893] [<ffffffff810ac696>] kthread+0xe6/0x100
[3507707.671894] [<ffffffff810ac5b0>] ? kthread_park+0x60/0x60
[3507707.671897] [<ffffffff81741dd9>] ret_from_fork+0x39/0x50
原因
ECSインスタンスのメモリが不足している場合、オペレーティングシステムカーネルはwakeup_flusher_threads
関数を頻繁に呼び出します。 次に、多数のライトバックタスク (wb_writeback_work
) が作成されます。 その結果、ライトバックスレッドはライトバックタスクを処理し続け、オペレーティングシステム上でソフトロックアップエラーが発生する。
解決策
カーネルを4.15以降のバージョンに更新します。 Alibaba Cloud Linuxオペレーティングシステムのカーネルバージョンは4.19であるため、この問題は発生しません。 次のソリューションは、Alibaba Cloud Linuxオペレーティングシステム以外のLinuxディストリビューションに適用されます。
問題が発生したLinuxインスタンスでソリューションの操作を実行する前に、Linuxインスタンスのスナップショットを作成してデータをバックアップすることを推奨します。 これにより、偶発的な操作によるデータの損失を防ぎます。 スナップショットの作成方法については、「ディスクのスナップショットの作成」をご参照ください。
Linuxインスタンスに接続します。
詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。
次のコマンドを実行して、オペレーティングシステムのカーネルバージョンを表示します。
uname -r
カーネルバージョンが4.15以前の場合は、次のコマンドを実行してカーネルバージョンを更新します。
カーネルのバージョンが4.15以降の場合、オペレーティングシステムではソフトロックアップエラーは発生しません。 後続の操作を実行する必要はありません。
yum update kernel
説明yum update kernel
コマンドを実行して以前の特定のカーネルバージョンを更新できない場合は、4.15以降のバージョンのカーネルRPMパッケージをダウンロードし、カーネルRPMパッケージを使用してカーネルバージョンをアップグレードします。カーネルバージョンを更新した後、インスタンスを再起動します。
reboot
インスタンスを再起動した後、次のコマンドを再実行して、カーネルのバージョンが4.15以降かどうかを確認します。
uname -r