Azure Linux 仮想マシンのアプリケーション整合性バックアップを確認する
仮想マシンのバックアップ スナップショットを実行する場合のアプリケーションの整合性とは、復元後に仮想マシンをブートするときにアプリケーションが起動できる状態であることを意味します。 Windows 仮想マシンにおいて、スナップショットは VSS を利用してアプリケーションの整合性を確保しています。 Linux 仮想マシンでは、Linux のプレスクリプトおよびポストスクリプト フレームワークを使用して、アプリケーション整合性バックアップを実行することができます。
このフレームワークには、仮想マシン スナップショットの取得時にカスタムのプリスクリプトとポストスクリプトを実行するオプションが用意されています。 プリスクリプトは仮想マシン スナップショットを取得する直前に実行され、ポストスクリプトは仮想マシン スナップショットを取得した直後に実行されます。
事前スクリプトは、ネイティブ アプリケーション API を呼び出します。これにより IO が休止し、メモリ内のコンテンツがディスクにフラッシュされます。 これらのアクションにより、スナップショットのアプリケーション整合性が保証されます。 ポストスクリプトは、ネイティブ アプリケーション API を使用して IO を解放します。これによりアプリケーションは仮想マシン スナップショット後に通常の操作を再開できます。
事前スクリプトと事後スクリプトの構成
バックアップしたい Linux 仮想マシンにルート ユーザーとしてサインインします。
GitHub から VMSnapshotScriptPluginConfig.json をダウンロードし、バックアップしたいすべての仮想マシンの /etc/azure ディレクトリにそれをコピーします。 /etc/azure ディレクトリが存在しない場合は、作成します。
バックアップする予定のすべての仮想マシンにアプリケーション用のプリスクリプトとポストスクリプトをコピーします。 スクリプトのコピー先は仮想マシン上の任意の場所で構いません。 必ず VMSnapshotScriptPluginConfig.json に記載されているスクリプト ファイルの完全パスを更新してください。
ファイルのアクセス許可が次のようになっていることを確認します。
VMSnapshotScriptPluginConfig.json:アクセス許可 "600"。 たとえば、"root" ユーザーにのみ、このファイルに対する "読み取り" アクセス許可と "書き込み" アクセス許可を付与します。どのユーザーにも "実行" アクセス許可は付与しません。
事前スクリプト ファイル:アクセス許可 "700"。 たとえば、"root" ユーザーにのみ、このファイルに対する "読み取り"、"書き込み"、"実行" のすべてのアクセス許可を付与します。 ファイルはシェル スクリプトが想定されますが、理論的には、このスクリプトは内部的に生成したり、Python スクリプトのような他のスクリプトを参照したりできます。
事後スクリプト:アクセス許可 "700"。 たとえば、"root" ユーザーにのみ、このファイルに対する "読み取り"、"書き込み"、"実行" のすべてのアクセス許可を付与します。 ファイルはシェル スクリプトが想定されますが、理論的には、このスクリプトは内部的に生成したり、Python スクリプトのような他のスクリプトを参照したりできます。
重要
このフレームワークを使用すると、ユーザーはさまざまな機能を利用できるようになります。 フレームワークを保護し、“root” ユーザーのみが重要な JSON ファイルおよびスクリプト ファイルにアクセスできるようにしてください。 要件が満たされない場合、スクリプトは実行されず、その結果ファイル システムのクラッシュやバックアップの不整合が発生します。
VMSnapshotScriptPluginConfig.json を以下のように構成します。
pluginName:このフィールドは変更しないでください。変更するとスクリプトが正しく動作しなくなることがあります。
preScriptLocation:バックアップされることになる仮想マシン上のプリスクリプトの完全なパスを指定します。
postScriptLocation:バックアップされることになる仮想マシン上のポストスクリプトの完全なパスを指定します。
preScriptParams:事前スクリプトに渡す必要があるパラメーターを指定します (省略可能)。 パラメーターはすべて引用符で囲んでください。 複数のパラメーターを使用する場合は、パラメーターをコンマで区切ります。
postScriptParams:事後スクリプトに渡す必要があるパラメーターを指定します (省略可能)。 パラメーターはすべて引用符で囲んでください。 複数のパラメーターを使用する場合は、パラメーターをコンマで区切ります。
preScriptNoOfRetries:事前スクリプトでエラーが発生した場合に停止するまでの再試行回数を指定します。 0 (ゼロ) を指定すると、試行回数は 1 回のみでエラーが発生しても再試行は実行されません。
postScriptNoOfRetries: 事後スクリプトでエラーが発生した場合の終了までの再試行回数を指定します。 0 (ゼロ) を指定すると、試行回数は 1 回のみでエラーが発生しても再試行は実行されません。
timeoutInSeconds:事前スクリプトと事後スクリプトの個々のタイムアウトを指定します (最大値は 1800 です)。
continueBackupOnFailure:事前スクリプトまたは事後スクリプトでエラーが発生した場合に Azure Backup をファイル システム整合性/クラッシュ整合性バックアップにフォールバックするには、この値を true に設定します。 これを false に設定すると、スクリプト エラーが発生した場合にバックアップは失敗します (ただし、この設定に関係なくクラッシュ整合性バックアップにフォールバックする単一ディスク仮想マシンの場合は例外です)。 continueBackupOnFailure の値を false に設定すると、バックアップが失敗した場合に、サービスの再試行ロジックに基づいてバックアップ操作が再試行されます (指定された試行回数で)。
fsFreezeEnabled:ファイル システムの整合性を確保するために、仮想マシン スナップショットの取得中に Linux fsfreeze を呼び出すかどうかを指定します。 アプリケーションの動作上、fsfreeze を無効にしなければならない場合を除いて、この設定は true にしておくことをお勧めします。
ScriptsExecutionPollTimeSeconds: スクリプトを実行するための各ポーリング間で拡張機能がスリープする必要がある時間を設定します。 たとえば、値が 2 の場合、事前スクリプトまたは事後スクリプトの実行が完了したかどうかが、拡張機能によって 2 秒ごとにチェックされます。 使用できる最小値と最大値は、それぞれ 1 と 5 です。 値は、厳密に整数である必要があります。
以上でスクリプト フレームワークの構成は完了です。 仮想マシン バックアップが既に構成されている場合、次のバックアップによってスクリプトが呼び出され、アプリケーション整合性バックアップがトリガーされます。 仮想マシン バックアップの構成が済んでいない場合は、「Recovery Services コンテナーへの Azure 仮想マシンのバックアップ」を使用してそれを構成してください。