Azure App Services: Dosya Yapısı ve Disk Mimarisi

App Servisler, Azure PaaS (Platform As A Service) alt yapısı üzerinde çalışan ve bizlere hizmet olarak sunulan servislerdir. Arka planda bu servislerin kullandığın diskler IaaS VM’lerde kullanılan diskler ile aynıdır ve aşağıdaki sürücülere sahiptirler:

  • İşletim Sisteminin bulunduğu sürücü. (D:\ drive)
  • Yalnızca App Service tarafından kullanılan Azure Package Cspkg dosyalarını içeren bir uygulama sürücüsü. (Müşteriler tarafından erişilemez)
  • VM boyutuna bağlı olarak boyutu değişen bir “kullanıcı” sürücüsü. (C: \ sürücüsü)

Azure App Service Dosya Sistemi

Azure Web App mimarisinde 3 temel dosya yapısı vardır;

  • Persisted Files (Kalıcı Dosyalar)
  • Temporary Files (Gecici Dosyalar)
  • Machine Level read-only files (Makine düzeyinde salt okunur dosyalar)

Persisted files (Kalıcı Dosyalar)

Web sitenize ait olan dosyalardır. D:\Home dizininde bulunan %HOME% değişkeni kullanarakta tanımlana bilen dosyalardır. Linux App Service Plan’lar için kalıcı dosyalar /Home klasöründe yer alır.

Azure App Services File System

Kalıcı dosyalar adından anlaşıldığı üzere siz bir değişiklik yapmadığınız sürece aynı şekilde kalan dosyalardır ve aynı app service plan içerisindeki tüm web app instance’ları ile paylaşılırlar. Kalıcı dosyalar Shared Network Drive içerisindeki storage alanında saklanırlar. Local Cache özelliğini devreye alınarak kalıcı dosyaların network drive yerine uygulamanın bulunduğu instance’in local diskinde saklanması sağlanabilir.

  • D:\Home\Data\Jobs: WebJobs’ların tutulduğu dizindir.
  • D:\home\LogFiles: Log dosyalarının tutulduğu dizindir. (Https, IIS logs, Error Messages ve Event logs)
  • D:\home\site\wwwroot: Web Sitenize ait iceriklerin tutulduğu dizindir.

Her App Service disk boyutarı kalıcı dosyalar için farklıdır: 

Temporary files (Gecici Dosyalar)

Gecici dosyalar Web App’lerin üzerinde koştuğu VM’in local diskinde saklanırlar.

Azure App Services Temp Files

D:\local\AppData (%APPDATA%) ve D:\Local\Temp (%TMP%) dizinlerinde yer alırlar ve Web App’i restart etmeniz durumunda silinirler. Gecici dosyalar Web App Service plan içerisindeki her bir instance için ayrıdır.

WEBSITE_DISABLE_SCM_SEPARATION Parametresini kullanarak dilerseniz aynı temp dizininin kullanılmasını sağlayabilirsiniz ancak önerilmez.

https://github.com/projectkudu/kudu/wiki/Configurable-settings#use-the-same-process-for-the-user-site-and-the-scm-site

App Service Planlara Göre Tempory Files Boyutları:

App Services Temp Disk Size

App Service Plan Temp disk kullanımı portal üzerinde Wep App blade üzerinden Diagnose and Solve Problems seçimini yaparak erişebilirsiniz.

Diagnose and solve problems > Best Practices > Best Practices for Availability, Performance

App Services Temp Files

App Service Manage Temp Files

Machine level read-only files (Makine düzeyinde salt okunur dosyalar)

Web App’ler tarafından erişilen standart Windows dizinleridir (%Program Files% ve %windir% gibi). Bu dizinlerde bir değişiklik yapılamaz.