スタックした Docker サービスを完全に終了するにはどうすればよいでしょうか?

スタックした Docker サービスを完全に終了するにはどうすればよいでしょうか?

3.10 カーネル、docker 19.03.12 を搭載した Centos7 で作業しています。

最終的に、Docker イメージの 1 つがいっぱいになり、/var/マウント全体が 100% に書き込まれ、Docker サービスと実行中のコンテナーの両方がクラッシュしました。

現在、終了できないゾンビプロセスが 2 つ残っています (または を使用kill -9) killall

ps axjf | grep docker
    1 30215 30215 30215 ?           -1 Ds       0   0:00 [docker-entrypoi]
    1 32063 32063 32063 ?           -1 Zsl      0   0:00 [dockerd] <defunct>

一方、/var/log/messages私は次のことを得ています:

kernel: XFS (dm-8): Failing async write on buffer block 0xb78170. Retrying async write.
kernel: XFS (dm-8): metadata I/O error: block 0xb78170 ("xfs_buf_iodone_callback_error") error 28 numblks 8

一部の IO がまだデータを書き込もうとしているようです。これは無限サイクルで繰り返されているようで、これを停止する方法がわかりません。

du -shls -alファイルを検査するとすぐにハングします/var/lib/docker

さらに、service docker stop/startハングアップも発生し、top非常に高い負荷/待機時間 ( 234 コア マシンの場合) が報告されます。

私の質問:xfsマシンを再起動せずに、書き込みを完全に停止し、ゾンビ プロセスを強制終了してサービスを再起動する最善の方法は何でしょうか?

答え1

ディスク領域を解放します。

あなたが投稿したカーネル メッセージによって報告されたエラーは 28、「デバイスに空き容量がありません」です。

関連情報