0

私の Azure ロールが Windows 一時フォルダーに大量の一時ファイルを作成し、それらを削除するのを忘れたとします。ある時点で、「一時ファイルを作成できません」というエラーが表示されます。これが発生すると、ロール コードが例外をスローしRoleEntryPoint.Run()、ロールが再起動されたとします。

ここでは、完全な Azure 対応コードについて話しているわけではありません。私の役割は、Azure と "ローカル ストレージ" については何もせず、単にSystem.IO.Path.GetTempPath()Azure に適していない場所にファイルを呼び出して作成するサード パーティのブラック ボックス コードを使用する可能性があります。

問題は、役割がまったく同じホストで開始され、一時フォルダーがサードパーティによってクリーンアップされていない場合、フォルダーがまだファイルでいっぱいであり、役割が機能しないことです。この回答によると、私の役割のためにローカルの変更が保持される可能性があります。これは、上記のシナリオでは大きな問題です。

作成された一時ファイルなどのローカルの変更は、ロールが再起動されたときにリセットされることが保証されていますか? 開始されたロールが適切にクリーンな状態であることを確認するにはどうすればよいですか?

4

1 に答える 1

3

ゴールデンイメージ(ベースゲストOS vhd)からの新しい展開、アップグレード、および新しくスケーリングされたインスタンスで、役割がリセットされます。通常、再起動とクラッシュの場合、同じVHDとマシンを使用します。

作成するコードには、OSドライブ(D :)に書き込む権限がありません。昇格がない場合(またはRDP経由でログインしてこれを行う場合)。さらに、ユーザーのロールルートドライブ(E :)にはクォータがあり、ドライブを誤ってファイルでいっぱいにすることを防ぎます。これは、以前はパッケージサイズの10%でしたが、書き込みが許可されていたのはこれだけでした。リソースドライブ(C :)にも割り当てがありますが、それははるかに寛大であり、VMのサイズによって異なります。

非ローカルリソースドライブでは何もクリーンアップされませんが、クォータを超えようとすると、最終的にエラーが発生します。ローカルリソースのスティッキーストレージをオフにすると、再起動時にクリーンアップされます。もちろん、ディスクに対する他の変更と同様に、これらの非ローカルリソースの一時ファイルは、ゲストOS(または基盤となるルートOS)がアップグレードされたときに失われることがあります。高架で実行していて、インストールを実際に台無しにしている場合(これは可能です)、ポータルの[再イメージ化]ボタンを押す必要があります。そうすると、すべてゴールデンイメージに戻ります。

于 2011-07-20T12:31:33.993 に答える