すべてのプロダクト
Search
ドキュメントセンター

:ディスクの初期化中にローカルディスクをCentOS 7インスタンスに接続したときにmountコマンドがハングした場合はどうすればよいですか。

最終更新日:Jan 23, 2025

このトピックでは、ディスクの初期化中にローカルディスクをCentOS 7インスタンスに接続すると、mountコマンドがハングする問題について説明します。 このトピックでは、問題の考えられる原因と解決策についても説明します。

問題の説明

ext4ファイルシステムを使用してCentOS 7インスタンスのローカルディスクを初期化すると、ローカルディスクをアタッチするために実行するmountコマンドがハングします。 次に、psコマンドを実行すると、マウントプロセスがD状態 (スリープ状態) になることがわかります。

考えられる原因

この問題は、Linux 2.6.37以降でデフォルトで有効になっている遅延初期化によって発生します。 uname -rコマンドを実行して、実行しているカーネルのバージョンを照会できます。 CentOS 7のカーネルバージョンは3.10です。これは、デフォルトでCentOS 7で遅延初期化が有効になっていることを意味します。

ext4ファイルシステムを初めてマウントするときは、inodeテーブルを初期化する必要があります。 CentOS 7ではデフォルトで遅延初期化が有効になっているため、ext4を使用してディスクを初期化すると、inodeテーブルはすぐには初期化されません。 代わりに、mountコマンドを実行してディスクをアタッチすると、テーブルが初期化されます。 カーネルバージョン3.10では、マウントコマンドにはI/Oロックの取得が含まれます。 大容量のローカルディスクを初期化する場合、システムはランダムにデータをディスクに書き込む必要があります。 このプロセス中に、I/Oロックが遅延初期化によって長期間保持されると、mountコマンドがハングする可能性があります。 これは、mountコマンドが遅延初期化プロセスが完了するのを待ってから続行する必要があるためです。

説明
  • 4.Xカーネルバージョンでは、ロックメカニズムが最適化されているため、この問題は解決されます。

  • ローカルディスクの詳細については、「ローカルディスク」をご参照ください。

ソリューション

解決策1: 遅延初期化を無効にする

ディスクの初期化中に次のコマンドを実行して、遅延初期化を無効にします。

mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0

サイズの大きいディスクを初期化するときに遅延初期化を無効にすると、初期化プロセスにも時間がかかります。 たとえば、ecs.d3s.16xlargeインスタンスタイプのインスタンスにディスクを接続すると、32個のローカルディスクを初期化するのに約4.5〜5時間かかります。

ディスクの初期化の詳細については、「概要」をご参照ください。

解決策2: XFSファイルシステムを使用したディスクの初期化

デフォルトでは、CentOS 7はext4ファイルシステムを使用します。 XFSファイルシステムを使用してディスクを初期化することを推奨します。 ディスクの初期化の詳細については、「概要」をご参照ください。

ディスクの初期化中にディスクを接続する場合、XFSはext4よりも高速です。 これは、XFSが必要に応じてinodeを動的に割り当て、ext4がファイルシステムの作成時にすべてのinodeを事前に割り当てるためです。 たとえば、ecs.d3s.16xlargeインスタンスタイプのインスタンスにディスクをアタッチすると、32個のローカルディスクを初期化するのに数分しかかかりません。

重要

デフォルトでは、CentOS 7はext4ファイルシステムを使用します。 互換性の問題を回避するために、続行する前に環境でXFSファイルシステムを使用できるかどうかをテストすることをお勧めします。