Azure研究サイト

Azure研究サイト

~理解しずらい情報をシンプルにお伝えします~

【WindowsOS】AppServiceプランの外部ストレージと内部ストレージを理解する

外部ストレージ領域とは

以下の場所を指します。
d:\home

主に、ログが出力されたり、アプリケーションがデプロイされる場所(D:\home\site\wwwroot)あたりのことを指します。

 
アプリケーション処理でファイル入出力する場合は、こちらの外部ストレージ領域を使いましょう。内部ストレージ領域に保存してしまうと、再起動で削除されてしまうからです。
 
もし、外部ストレージ領域のサイズを増やしたければ、AppServiceプランの場合はスケールアップ・Functionsの従量課金プランの場合は指定したストレージアカウントのサイズを増やすと、アプリケーションの外部ストレージ領域のサイズを増やすことができます。

内部ストレージ領域Aとは

以下の場所を指します。
d:\local

内部ストレージ領域は、外部ストレージ領域と違ってサイズを確認したりサイズを増やしたりすることはできません。
 
アプリケーション処理でファイル入出力を行える領域ですが、外部ストレージ領域のところでも記述したとおり、アプリケーション処理のファイル入出力では外部ストレージ領域の使用をオススメします。
 
内部ストレージ領域で、ファイル入出力すること自体は悪いことではないですが、AppService/Functionsを再起動するとファイルが削除されます(初期状態にリセットされる)ので、理解した上で使用ください。
 
再起動は、Azureプラットフォームのメンテナンスによって勝手に再起動されることもあることも覚えておいてください。
 

内部ストレージ領域Bとは

以下の場所を指します。
d:\home と d:\local 以外
 
こちらは、アプリケーションからアクセスできない領域です。ユーザが直接いじる必要は基本的にはありませんし、変にいじると環境が壊れてしまいます。一つのAppServiceプランに登録している全てのアプリケーションが同じ内容になっています。(ひとつの領域を各アプリケーションが参照してます。)
 

ストレージ領域の内容はKuduサイトで見れる

該当AppService > 開発ツールの高度なツール > 移動 > Kuduサイト > Debugconsoleタブ > CMD
で外部/内部ストレージ領域の内容を確認したり変更したりすることができます。
 
Kudu(SCM)サイトについては、以下の記事に書きました。

www.azureportal-site.com

外部ストレージ領域に配置されている一例

  • [d:\home\site\wwwroot]: Azure上にデプロイしたアプリケーションコードが配置される

  • [d:\home\site\wwwroot\Modules]: インストールしたライブラリモジュールが配置される(d:\home\site\wwwroot\requirements.psd1に記載されたモジュールがModulesフォルダに自動インストールされる仕組み)

  • [d:\home\LogFiles\eventlog.xml]: IIS上で発生したイベントのログが出力される  

    内部ストレージ領域に配置されている一例

  • [d:\Program Files]: Git・apatch-tomcat・MySQL・IIS・Javaなどがインストールされています。

  • [d:\Python34]: Pythonがインストールされています。

 
   
以上です。
 

ご意見・ご要望はこちらへ 


/*--------------------------------------------------------------------*/