症状と原因
Elastic Compute Service (ECS) インスタンスの Linux オペレーティングシステムが何らかの理由により起動できない場合があります。この状態では、ECS コンソール上では ECS インスタンスが「実行中」のステータスを示していても、インスタンスにデプロイされたアプリケーションにはアクセスできません。また、インスタンスのネットワークに対して PING を実行したり、ワークベンチや Secure Shell (SSH) で接続したりすることもできません。ECS コンソールから Virtual Network Computing (VNC) を使用してインスタンスに接続すると、以下のエラーメッセージが表示される可能性があります。
unexpected inconsistency;RUN fsck MANUALLYまたは
Give root password for maintenance (or type CTRL-D to continue)または
Enter 'help' for a list of built-in commands.
(initramfs)考えられる原因は以下の通りです(これらに限定されません)。
インスタンスが強制的にシャットダウンまたは再起動された、あるいは突然停止したため、ファイルシステムのデータに不整合が生じています。
データディスクをデタッチしましたが、/etc/fstab ファイル内のマウント情報が削除されていません。
/etc/fstab ファイルが存在しない、または破損しています。
initrd ファイルが破損しています。
その他の理由によりファイルシステムが破損しています。本トピックで説明するセルフレスキューソリューションを使用して、破損した Linux インスタンスを修復できます。
ソリューション概要
Operation Orchestration Service (OOS) は、Alibaba Cloud が提供する無料の自動化運用管理プラットフォームです。YAML 形式のシンプルなテンプレートを使用して、自動化タスクを管理および実行できます。
本トピックで紹介するセルフレスキューソリューションは、OOS テンプレートを使用した自動化ソリューションであり、Alibaba Cloud によってテスト済みです。このソリューションにより、数回のクリック操作で破損した Linux インスタンスを修復できます。詳細については、「操作手順」をご参照ください。
セルフレスキューソリューションを使用するには、以下の手順を実行します。破損したインスタンスのイメージバックアップを作成し、システムディスクをインスタンスからデタッチして一時インスタンスにアタッチした後、システムディスクをチェックおよび修復します。システムディスクの修復が完了したら、再度破損したインスタンスにアタッチしてインスタンスを再起動し、一時インスタンスをリリースします。
サポートされているオペレーティングシステムは以下の通りです。
CentOS:7.2 64 ビット、7.3 64 ビット、7.4 64 ビット、7.5 64 ビット、7.6 64 ビット、7.7 64 ビット、8.0 64 ビット
Debian:8.9 64 ビット、8.11 64 ビット、9.8 64 ビット、9.9 64 ビット、9.11 64 ビット
openSUSE:42.3 64 ビット、15.1 64 ビット
SUSE Linux Enterprise Server 12:SP4 64 ビット、SP2 64 ビット
Alibaba Cloud Linux:2.1903 64 ビット
Ubuntu:18.04 64 ビット
注意事項
Linux の起動失敗は多くの原因によって引き起こされる可能性があります。セルフレスキューソリューションで起動に失敗したすべてのインスタンスを修復できるとは限りません。
修復中に一時インスタンスが作成され、追加料金が発生します。一般的な料金は 1 元未満です。
セルフレスキューソリューションは、システム内の fstab ファイルおよび initrd ファイルを変更します。変更を開始する前に、修復対象のインスタンスのイメージバックアップが自動的に作成されます。このイメージバックアップを使用して、後でインスタンスのデータを復元できます。イメージバックアップには料金が発生します。詳細については、「スナップショット」をご参照ください。インスタンスの修復後は、イメージバックアップを削除できます。
必要な権限を持つアカウントの準備
Alibaba Cloud アカウントを使用している場合は、本セクションをスキップして「操作手順」の手順を実行してください。
Resource Access Management (RAM) ユーザーまたはロールを使用している場合は、OOS、Resource Orchestration Service (ROS)、ECS、および Virtual Private Cloud (VPC) に対する必要な権限が付与されていることを確認してください。以下のいずれかの方法で権限を付与できます。
RAM ユーザーまたはロールに、次のシステム権限を付与します:AliyunOOSFullAccess、AliyunROSFullAccess、AliyunECSFullAccess、AliyunVPCFullAccess。詳細については、RAM ドキュメントの「ポリシー概要」をご参照ください。
カスタムポリシーを作成し、RAM ユーザーにアタッチします。詳細については、ポリシーの内容をご参照ください。
手順の詳細については、RAM ドキュメントの「カスタムポリシーの作成」をご参照ください。
操作手順
OOS コンソールにログインします。破損したインスタンスが配置されているリージョンを選択します。
左側のナビゲーションウィンドウで パブリックテンプレート をクリックし、ACS-ECS-RescueUnreachableInstance-Linux を選択します。
実行の作成 をクリックします。
次のステップ:パラメーター設定 をクリックします。
「パラメーター設定」ステップで、以下のパラメーターを設定します。
UnreachableInstanceId:必須。修復対象のシステムディスクを持つインスタンスの ID です。
CredentialType:必須。修復後のシステムディスクを破損したインスタンスに再アタッチする際に使用する認証情報の種類です。KeyPairName または Password を指定できます。
Credential:必須。認証情報です。CredentialType パラメーターを KeyPairName に設定した場合はキーペア名を、Password に設定した場合はパスワードを指定します。
ImagePrefix:任意。イメージバックアップ名のプレフィックスです。デフォルトのプレフィックスは OOSRescueBackup- です。
HelperInstanceTypes:任意。作成される一時インスタンスのタイプです。デフォルトでは、指定されたインスタンスタイプの中から単位価格が最も低いものが選択されます。
OOSAssumeRole:現在のアカウントの既存の権限を使用 を選択します。

次のステップ:OK をクリックします。「OK」ステップで、作成 をクリックします。
実行詳細ページで OOS テンプレートの実行ステータスを確認でき、rtCommandOutput パラメーターを使用して修復スクリプトの実行ステータスを確認できます。
実行には約 5~10 分かかります。テンプレートが正常に実行された場合、インスタンスは修復され、「実行中」のステータスになります。
使用上の注意
テンプレートの実行がキャンセルまたは中断された場合、破損したインスタンスのシステムディスクが再アタッチされないことがあります。この場合、インスタンスにはシステムディスクが存在しません。システムディスクを再アタッチするには、以下の手順を実行します。ECS コンソールにログインし、破損したインスタンスを見つけ、インスタンス ID をクリックしてインスタンス詳細ページに移動します。「クラウドディスク」タブでシステムディスクの ID を確認できます。d-bp で始まるシステムディスク ID をコピーし、「ディスクのアタッチ」をクリックして、ディスク検索ボックスに ID を貼り付けてディスクを検索します。
ディスク ID が利用可能な場合は、それを選択します。ログイン認証情報としてキーペアまたはカスタムパスワードを使用できます。この認証情報は、インスタンス起動後に root ユーザーとしてログインする際に使用されます。たとえば、カスタムパスワードをログイン認証情報として使用する場合は、ログインパスワードを入力し、パスワードを確認したうえでディスクをアタッチします。ディスクがアタッチされると、インスタンスステータスが「停止済み」に変更されます。
ディスク ID が見つからない場合は、OOS テンプレートの実行詳細を確認します。untilStackReady タスクの出力から HelperInstanceId パラメーターを見つけ、i- で始まるインスタンス ID をコピーします。ECS コンソールでインスタンス ID を検索します。一時インスタンスが見つかった場合は、その一時インスタンスをリリースします。インスタンスのリリース後、前述の手順を再度実行します。つまり、d-bp で始まるシステムディスク ID をディスク検索ボックスにコピーしてシステムディスクを検索し、修復対象のインスタンスにディスクをアタッチします。
セルフレスキューソリューションの内部実装ロジック
/etc/fstab ファイルの修復
/etc/fstab ファイルの存在を確認します。存在する場合は、そのファイルをバックアップします。
/etc/fstab ファイルを修復します。/etc/fstab ファイルが存在しない、または解析に失敗した場合は、デフォルトの /etc/fstab ファイルを作成します。
• nofail パラメーターが設定されていない場合は、起動失敗を防ぐために設定します。
• fsck コマンドが有効になっている場合は、無効にします。
ramdisk ファイルの更新
/boot 内に ramdisk ファイルが存在するかを確認します。存在する場合は、そのファイルをバックアップします。
ramdisk ファイルを再構築します。