例外が発生した Elastic Compute Service (ECS) インスタンスの Linux システムディスクを修復する場合、CloudOps Orchestration Service (OOS) が提供するワンクリック修復機能を使用できます。
前提条件
Resource Access Management (RAM) ユーザーが作成され、AliyunOOSFullAccess、AliyunROSFullAccess、AliyunECSFullAccess、および AliyunVPCFullAccess ポリシーにアタッチされています。詳細については、「RAM ユーザーを作成する」および「ポリシーの概要」をご参照ください。
注意事項
シナリオ
場合によっては、ECS インスタンスの Linux オペレーティングシステムが起動に失敗することがあります。この例外が発生した場合、ECS インスタンスは ECS コンソールで実行中状態として表示される場合がありますが、インスタンスにデプロイされているアプリケーションにはアクセスできません。インスタンスのネットワークは、ping を実行することも、ワークベンチまたは 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 ファイルが破損している。
その他の理由でファイルシステムが破損している。
ソリューションの概要
このトピックのセルフレスキューソリューションは、Alibaba Cloud によってテスト済みの OOS テンプレートを使用します。これは、ワンクリック修復のための自動ソリューションです。 OOS テンプレートには、次の手順が含まれます。
修復するインスタンスのイメージバックアップを作成する。
インスタンスからシステムディスクをデタッチし、一時インスタンスにシステムディスクをアタッチする。
一時インスタンスのシステムディスクをチェックおよび修復する。
システムディスクの修復後、元のインスタンスにシステムディスクを再アタッチし、インスタンスの再起動を試みる。
一時インスタンスを解放する。
サポートされているオペレーティングシステム
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 ビットおよび 12 SP2 64 ビット
Alibaba Cloud Linux: 2.1903 64 ビット
Ubuntu: 18.04 64 ビット
Linux の起動障害は、多くの原因によって発生する可能性があります。セルフレスキューソリューションが起動に失敗したすべてのインスタンスを修復できるという保証はありません。修復中に一時インスタンスが作成され、一定の料金が発生します。料金は通常 0.2 USD 未満です。セルフレスキューソリューションでは、システムの fstab ファイルと initrd ファイルを変更する必要があります。変更前に、修復するインスタンスのイメージバックアップが自動的に作成されます。これにより、後でイメージバックアップを使用してデータを復元できます。イメージバックアップには料金が発生します。詳細については、「スナップショット」をご参照ください。インスタンスの修復後、イメージバックアップを削除してコストを削減できます。
手順
CloudOps Orchestration Service コンソールにログインします。
左側のナビゲーションウィンドウで、
を選択します。 [パブリックテンプレート] ページで、ACS-ECS-RescueUnreachableInstance-Linux テンプレートを検索します。[実行の作成] をクリックします。
[タスクの作成] ページで、[次のステップ: パラメータ設定] をクリックします。
[パラメータ設定] ステップで、次のパラメータを設定します。
UnreachableInstanceId: 必須。システムディスクを修復するインスタンスの ID。
CredentialType: 必須。修復されたシステムディスクを元のインスタンスに再アタッチするために使用される認証クレデンシャルのタイプ。このパラメータは、KeyPairName または Password に設定できます。
Credential: 必須。認証クレデンシャル。 CredentialType パラメータを KeyPairName に設定した場合は、キーペアの名前を指定します。 CredentialType パラメータを Password に設定した場合は、パスワードを指定します。
ImagePrefix: オプション。イメージバックアップの名前のプレフィックス。デフォルトのプレフィックスは OOSRescueBackup- です。
HelperInstanceTypes: オプション。作成する一時インスタンスのタイプ。デフォルトでは、提供されているインスタンスタイプから単価が最も低いインスタンスタイプが選択されます。
OOSAssumeRole: [現在のアカウントの既存の権限を使用する] を選択します。
[次のステップ: OK] をクリックします。 [OK] ステップで、[作成] をクリックします。
実行詳細ページで OOS テンプレートの実行ステータスを表示し、rtCommandOutput パラメータを使用して修復スクリプトの実行ステータスを表示できます。実行には約 5 ~ 10 分かかります。テンプレートが正常に実行されると、インスタンスは修復され、実行中状態になります。
(オプション) システムディスクをアタッチしてインスタンスを修復する
実装ロジック
/etc/fstab ファイルの修復
/etc/fstab ファイルが存在するかどうかを確認します。 /etc/fstab ファイルが存在する場合は、ファイルをバックアップします。
/etc/fstab ファイルを修復します。 /etc/fstab ファイルが存在しないか、解析に失敗した場合は、デフォルトの /etc/fstab ファイルを作成します。
nofail パラメータが設定されていない場合は、起動障害を防ぐために設定します。
fsck コマンドが有効になっている場合は、無効にします。
ramdisk ファイルの更新
ramdisk ファイルが /boot に存在するかどうかを確認します。 ramdisk ファイルが存在する場合は、ファイルをバックアップします。
ramdisk ファイルを再構築します。