Aracılığıyla paylaş


Sanallaştırma Kökünde Önbellek Durumu

Sağlayıcı, yönettiği öğelerin önbelleği olarak sanallaştırma kökü altındaki yerel dosya sistemini kullanır. Bir öğe (dosya veya dizin) yerel dosya sistemindeki altı durumdan birinde olabilir:

  • Sanal

    Öğe diskte yerel olarak yok. Üst dizininin numaralandırmaları sırasında sentezlenmiş olarak yansıtılır. Sanal öğeler, üst dizinin tüm içeriğini sunmak için diskte mevcut olabilecek öğelerle birleştirilir.

  • Yer tutucu

    Dosyalar için: Dosyanın içeriği (birincil veri akışı) diskte yok. Dosyanın meta verileri (ad, boyut, zaman damgaları, öznitelikler vb.) diskte önbelleğe alınır.

    Dizinler için: Dizinin hemen alt öğelerinden bazıları veya tümü (dizindeki dosyalar ve dizinler) diskte mevcut değildir; örneğin, bunlar hala sanaldır. Dizinin meta verileri (ad, zaman damgaları, öznitelikler vb.) diskte önbelleğe alınır.

  • Hidratlı yer tutucu

    Dosyalar için: Dosyanın içeriği ve meta verileri diskte önbelleğe alınmıştır. "Kısmi dosya" olarak da adlandırılır.

    Dizinler için: Diskte yer tutucu olarak oluşturulan bir dizin hiçbir zaman hidratlı yer tutucu dizini olmaz. Bu, sağlayıcının yedekleme deposundaki dizine öğe eklemesine veya dizinden öğe kaldırmasına ve bu değişikliklerin yerel önbelleğe yansıtılmasını sağlar.

  • Kirli yer tutucu (hidratlı veya değil)

    Öğenin meta verileri yerel olarak değiştirildi ve artık sağlayıcının deposundaki durumunun önbelleği değil. Yer tutucu dizin altında bir dosya veya dizin oluşturmanın veya silmenin bu yer tutucu dizinin kirlenmesine neden olduğunu unutmayın.

  • Tam dosya/dizin

    Dosyalar için: Dosyanın içeriği (birincil veri akışı) değiştirildi. Dosya artık sağlayıcının deposundaki durumunun önbelleği değildir. Yerel dosya sisteminde oluşturulan dosyalar da (sağlayıcının deposunda hiç var olmayan dosyalar) tam dosya olarak kabul edilir.

    Dizinler için: Yerel dosya sisteminde oluşturulmuş dizinler (sağlayıcının deposunda hiç bulunmayan dizinler) tam dizin olarak kabul edilir. Diskte yer tutucu olarak oluşturulan dizin hiçbir zaman tam dizin olmaz.

  • Mezar taşı

    Yerel dosya sisteminden silinmiş bir öğeyi temsil eden özel bir gizli yer tutucu. Dizin numaralandırıldığında ProjFS, yerel öğeler kümesini (yer tutucular, tam dosyalar vb.) sanal yansıtılan öğeler kümesiyle birleştirir. Hem yerel hem de öngörülen kümelerde bir öğe görünüyorsa, yerel öğe önceliklidir. Yerel dosya sisteminde bir dosya yoksa yerel durum yoktur, bu nedenle sabit listesinde görünür. Ancak bu öğe silinmişse, öğenin numaralandırmada görünmesi beklenmeyen bir durum olurdu. Silinen bir öğeyi kaldırılma taşıyla değiştirmek aşağıdaki etkilere neden olur:

    • Öğeyi göstermemek için numaralandırmalar.
    • Öğenin var olmasını bekleyen dosya açılır; örneğin "dosya bulunamadı" hatasıyla başarısız olur.
    • Yalnızca öğe mevcut değilse başarılı olmasını bekleyen dosya oluşturur; ProjFS, işlemin bir parçası olarak silinmiş öğeyi kaldırır.

Yukarıdaki durumları göstermek için, C:\root sanallaştırma kökünde bulunan "foo.txt" tek bir dosyaya sahip olan bir ProjFS sağlayıcısı verilip aşağıdaki sırayı göz önünde bulundurun.

  1. Bir uygulama C:\root numaralandırır. "foo.txt" adlı sanal dosyayı görür. Dosyaya henüz erişilmediğinden, dosya diskte yok.
  2. Uygulama, C:\root\foo.txtiçin bir tanıtıcı açar. ProjFS, sağlayıcıya bunun için bir yer tutucu oluşturmasını söyler.
  3. Uygulama dosyanın içeriğini okur. Sağlayıcı, dosya içeriğini ProjFS'ye sağlar ve C:\root\foo.txtiçin önbelleğe alınır. Dosya artık sulanmış bir yer tutucudur.
  4. Uygulama, Son Değiştirilen zaman damgasını güncelleştirir. Dosya artık kirli bir hidratlı yer tutucudur.
  5. Uygulama, dosyaya yazma erişimi için bir tanıtıcı açar. C:\root\foo.txt artık tam bir dosyadır.
  6. Uygulama C:\root\foo.txtsiler. ProjFS, dosyayı bir kaldırıldı işaretiyle değiştirir. Şimdi uygulama C:\root it does not see foo.txtnumaralandırdığında. Dosyayı açmaya çalışırsa, açma işlemi ERROR_FILE_NOT_FOUND başarısız olur.