Share via


Azure Managed Lustre で Azure Blob Storage を使用する

Azure Managed Lustre は、Azure Blob Storageと統合して、BLOB コンテナーからファイル システムにデータをインポートするプロセスを簡略化します。 ファイル システムから長期ストレージ用の BLOB コンテナーにデータをエクスポートすることもできます。 この記事では、Azure Managed Lustre ファイル システムとの BLOB 統合を使用するための概念について説明します。

互換性のある BLOB コンテナーに必要な要件と構成については、「 BLOB 統合の前提条件」を参照してください。

BLOB 統合の概要

クラスターの作成時に BLOB 統合を構成でき、クラスターの作成後いつでもインポート ジョブを作成できます。 データがインポートされたら、他のファイル システム データと同様にデータを操作できます。 新しいファイルが作成されるか、ファイル システムで既存のファイルが変更されると、クライアントで Lustre CLI コマンドを実行するか、エクスポート ジョブを使用してデータをエクスポートすることで、これらのファイルをストレージ アカウントにエクスポートし直すことができます。

BLOB コンテナーから Azure Managed Lustre ファイル システムにデータをインポートすると、ファイル名 (名前空間) とメタデータのみが Lustre 名前空間にインポートされます。 BLOB の実際の内容は、クライアントが最初にアクセスしたときにインポートされます。 Lustre 階層ストレージ管理 (HSM) 機能が BLOB コンテンツをファイル システム内の対応するファイルにプルしている間に、データに最初にアクセスするときに若干の遅延が発生します。

sudo 機能を備えたマウントされたクライアントから Lustre の lfs hsm_restore コマンドを使用して、BLOB の内容をプリフェッチできます。 次のコマンドは、BLOB の内容をファイル システムにプリフェッチします。

nohup find local/directory -type f -print0 | xargs -0 -n 1 sudo lfs hsm_restore &

Azure Managed Lustre は、階層型名前空間が有効になっているストレージ アカウントと、非階層型またはフラットな名前空間を持つストレージ アカウントと連携します。 次の小さな違いが適用されます。

  • 階層型名前空間が有効になっているストレージ アカウントの場合、Azure Managed Lustre は BLOB ヘッダーから POSIX 属性を読み取ります。
  • 階層型名前空間が有効 になっていない ストレージ アカウントの場合、Azure Managed Lustre は BLOB メタデータから POSIX 属性を読み取ります。 メタデータを保持するために、BLOB コンテナーの内容と同じ名前の別の空のファイルが作成されます。 このファイルは、Azure Managed Lustre ファイル システム内の実際のデータ ディレクトリの兄弟です。

Blob Storage からデータをインポートする

クラスターの作成時に Blob Storage との統合を構成でき、クラスターの作成後いつでもインポート ジョブを作成できます。

BLOB コンテナーの要件

クラスターの作成時に BLOB 統合を構成する場合は、インポートするコンテナーとログ コンテナーという 2 つの個別の BLOB コンテナーを識別する必要があります。 インポートするコンテナーには、Azure Managed Lustre ファイル システムにインポートするデータが含まれています。 ログ コンテナーは、インポート ジョブのログを格納するために使用されます。 これら 2 つのコンテナーは、同じストレージ アカウントに存在する必要があります。 BLOB コンテナーの要件の詳細については、「 BLOB 統合の前提条件」を参照してください。

インポート プレフィックス

BLOB コンテナーからデータをインポートする場合は、必要に応じて 1 つ以上のプレフィックスを指定して、Azure Managed Lustre ファイル システムにインポートされたデータをフィルター処理できます。 いずれかのプレフィックスに一致する BLOB コンテナー内のファイル名は、ファイル システムのメタデータ レコードに追加されます。 クライアントが最初にファイルにアクセスすると、その内容が BLOB コンテナーから取得され、ファイル システムに格納されます。

Azure portalで、クラスターの作成時に [詳細設定] タブの [プレフィックスのインポート] フィールドを使用して、BLOB コンテナーからインポートするデータを指定します。 これらのフィールドは、最初のインポート ジョブにのみ適用されます。 クラスターの作成後にインポート プレフィックスを変更することはできません。

インポート ジョブの場合は、ジョブの作成時にインポート プレフィックスを指定できます。 Azure portalから、[インポート プレフィックス] フィールドでインポート プレフィックスを指定できます。 REST API を使用してインポート ジョブを作成するときに、インポート プレフィックスを指定することもできます。

インポート プレフィックスを指定する場合は、次の考慮事項に注意してください。

  • 既定のインポート プレフィックスは です /。 この既定の動作では、BLOB コンテナー全体の内容がインポートされます。
  • 複数のプレフィックスを指定する場合は、プレフィックスが重複していない必要があります。 たとえば、 と /data2を指定/dataした場合、プレフィックスが重複しているため、インポート ジョブは失敗します。
  • BLOB コンテナーが階層型名前空間が有効になっているストレージ アカウントにある場合は、プレフィックスをファイル パスと考えることができます。 パスの下の項目は、Azure Managed Lustre ファイル システムに含まれています。
  • BLOB コンテナーが非階層 (またはフラット) 名前空間を持つストレージ アカウントにある場合、インポート プレフィックスは、BLOB 名の先頭と比較される検索文字列と考えることができます。 コンテナー内の BLOB の名前がインポート プレフィックスとして指定した文字列で始まる場合、そのファイルはファイル システムでアクセス可能になります。 Lustre は階層ファイル システムであり / 、Lustre に格納されると BLOB 名の文字がディレクトリ区切り記号になります。

競合解決モード

BLOB コンテナーからデータをインポートする場合は、BLOB コンテナーとファイル システムの間の競合を処理する方法を指定できます。 このオプションは、既存のクラスターに対して実行されるインポート ジョブにのみ適用されます。 次の表は、使用可能な競合解決モードとその説明を示しています。

モード 説明
fail 競合が検出された場合、インポート ジョブはすぐに失敗し、エラーが発生します。
skip 競合が検出された場合、インポート ジョブはファイルをスキップします。
overwrite-dirty インポート ジョブは、競合するパスを評価して、削除して再インポートする必要があるかどうかを確認します。 詳細については、「overwrite-ダーティ モード」を参照してください。
overwrite-always インポート ジョブは競合するパスを評価し、ダーティの場合は常に削除/再インポートを行い、クリーン場合はリリースします。 詳細については、「 overwrite-always モード」を参照してください。

上書きダーティモード

モードは overwrite-dirty 、競合するパスを評価して、削除して再インポートする必要があるかどうかを確認します。 大まかに言えば、 overwrite-dirty モードは HSM の状態をチェックします。 HSM の状態が Clean および Archived の場合、Lustre が知ることができる限り、データが BLOB コンテナーと同期していることを意味し、必要に応じて属性のみが更新されます。 それ以外の場合、ファイルは削除され、BLOB コンテナーから再インポートされます。

HSM の状態を確認しても、Lustre 内のファイルが BLOB コンテナー内のファイルと一致することは保証されません。 Lustre 内のファイルが BLOB コンテナー内のファイルとできるだけ密接に一致していることを確認する必要がある場合は、 モードを使用します overwrite-always

Overwrite-always モード

モードはoverwrite-always競合するパスを評価し、ダーティされている場合は常に削除または再インポートします。クリーンされている場合はリリースされます。 このモードは、ファイル システムが常に BLOB コンテナーと同期していることを確認する場合に便利です。 また、以前に復元されたすべてのファイルが最初のアクセス時に解放または削除/再インポートされるため、最もコストの高いオプションでもあります。

エラー許容度

BLOB コンテナーからデータをインポートする場合は、エラー許容度を指定できます。 エラー許容レベルは、インポート プロセス中に発生する一時的なエラー (オペレーティング システム エラーやネットワークの中断など) をインポート ジョブがどのように処理するかを決定します。 このコンテキストのエラーは、競合解決モードによって処理されるファイルの競合を指さないことに注意することが重要です。

インポート ジョブでは、次のエラー許容オプションを使用できます。

  • エラーを許可しない (既定値): インポート中にエラーが発生した場合、インポート ジョブはすぐに失敗します。 これが既定の動作です。
  • エラーを許可する: エラーが発生し、エラーがログに記録された場合、インポート ジョブは続行されます。 インポート ジョブが完了したら、ログ コンテナーでエラーを表示できます。

BLOB インポート ジョブに関する考慮事項

BLOB コンテナーからデータをインポートする場合は、次の項目を考慮する必要があります。

  • 一度に実行できるインポートまたはエクスポート アクションは 1 つだけです。 たとえば、インポート ジョブが進行中の場合、別のインポート ジョブを開始しようとするとエラーが返されます。
  • インポート ジョブは取り消すことができます。 既存のクラスターで開始されたインポート ジョブ、またはクラスターの作成時に開始されたインポート ジョブを取り消すことができます。
  • クラスターのデプロイは、対応するインポート ジョブが完了する前に正常に返される可能性があります。 インポート ジョブはバックグラウンドで引き続き実行されます。 インポート ジョブの進行状況は、次の方法で監視できます。
    • Azure portal: Azure portalにはインポート ジョブの状態が表示されます。 ファイル システムに移動し、[ BLOB 統合 ] を選択してインポート ジョブの状態を表示します。
    • ルート ディレクトリ内の Lustre ファイル: インポート時に /lustre/IMPORT_<state>.<timestamp_start> Lustre ルート ディレクトリに、 と同様の名前のファイルが作成されます。 プレースホルダーは <state> 、インポートが進むにつれて変わります。 インポート ジョブが正常に完了すると、ファイルが削除されます。
  • 完了したインポート ジョブの詳細を表示するには、ログ コンテナーをチェックします。 ログ コンテナーには、インポート中に発生したエラーや競合など、インポート ジョブのログが含まれます。
  • 何らかの理由でインポート ジョブが失敗した場合、インポートされたファイルの数や競合の数など、インポート ジョブに関する完全な統計がない可能性があります。

エクスポート ジョブを使用して Blob Storage にデータをエクスポートする

エクスポート ジョブを作成することで、Azure Managed Lustre ファイル システムからAzure Blob Storageの長期ストレージにデータをコピーできます。

エクスポートされたファイルのメタデータ

ファイルが Azure Managed Lustre ファイル システムから BLOB コンテナーにエクスポートされると、追加のメタデータが保存され、ファイル システムへの内容の再インポートが簡略化されます。

次の表に、Blob メタデータにキーと値のペアとして保存される Lustre ファイル システムの POSIX 属性を示します。

POSIX 属性
owner INT
group INT
permissions octal または rwxrwxrwx 形式。スティッキー ビットがサポートされています

ディレクトリ属性は空の BLOB に保存されます。 この BLOB の名前はディレクトリ パスと同じで、BLOB メタデータに次のキーと値のペアが含まれています。 hdi_isfolder : true

コンテナーを使用して新しい Lustre クラスターをハイドレートする前に、POSIX 属性を手動で変更できます。 前に説明したキーと値のペアを使用して、BLOB メタデータを編集または追加します。

エクスポート ジョブに関する考慮事項

エクスポート ジョブを使用してデータをエクスポートする場合は、次の点を考慮する必要があります。

  • 一度に実行できるインポートまたはエクスポート アクションは 1 つだけです。 たとえば、エクスポート ジョブが進行中の場合、別のエクスポート ジョブを開始しようとするとエラーが返されます。

AzCopy または Storage Explorer を使用して Lustre BLOB コンテナーをコピーする

AzCopy または Storage Explorer を使用して Lustre が使用する BLOB コンテナーを移動またはコピーできます。

AzCopy の場合は、次のフラグを追加してディレクトリ属性を含めることができます。

--include-directory-stub

このフラグを含めると、転送中のディレクトリ POSIX 属性 (、 などownergroup) が保持されますpermissions。 このフラグを指定せずにストレージ コンテナーで を使用 azcopy する場合、または フラグを に設定した false場合、データとディレクトリは転送に含まれますが、ディレクトリは POSIX 属性を保持しません。

Storage Explorerでは、[設定] で [転送] を選択し、[ディレクトリ スタブを含める] チェック ボックスをオンにすると、このフラグを有効にすることができます。

Storage Explorerでの転送中にディレクトリ スタブを含める方法を示すスクリーンショット。

次の手順