Status Cache Di Akar Virtualisasi
Penyedia menggunakan sistem file lokal di bawah akar virtualisasi sebagai cache item yang dikelolanya. Item (file atau direktori) dapat berada di salah satu dari enam status pada sistem file lokal:
Virtual
Item tidak ada secara lokal pada disk. Ini diproyeksikan, yaitu disintesis, selama enumerasi direktori induknya. Item virtual digabungkan dengan item apa pun yang mungkin ada di disk untuk menyajikan konten lengkap direktori induk.
Tempat penampung
Untuk file: Konten file (aliran data utama) tidak ada di disk. Metadata file (nama, ukuran, tanda waktu, atribut, dll.) di-cache pada disk.
Untuk direktori: Beberapa atau semua turunan langsung direktori (file dan direktori dalam direktori) tidak ada di disk, yaitu masih virtual. Metadata direktori (nama, tanda waktu, atribut, dll.) di-cache pada disk.
Tempat penampung terhidrasi
Untuk file: Konten dan metadata file telah di-cache ke disk. Juga disebut sebagai "file parsial".
Untuk direktori: Direktori yang dibuat pada disk sebagai tempat penampung tidak pernah menjadi direktori tempat penampung terhidrasi. Ini memungkinkan penyedia untuk menambahkan atau menghapus item dari direktori di penyimpanan pendukungnya dan meminta perubahan tersebut tercermin dalam cache lokal.
Tempat penampung kotor (terhidrasi atau tidak)
Metadata item telah dimodifikasi secara lokal dan tidak lagi menjadi cache statusnya di penyimpanan penyedia. Perhatikan bahwa membuat atau menghapus file atau direktori di bawah direktori tempat penampung menyebabkan direktori tempat penampung menjadi kotor.
File/direktori lengkap
Untuk file: Konten file (aliran data utama) telah dimodifikasi. File tidak lagi menjadi cache statusnya di penyimpanan penyedia. File yang telah dibuat pada sistem file lokal (yaitu yang tidak ada di penyimpanan penyedia sama sekali) juga dianggap sebagai file lengkap.
Untuk direktori: Direktori yang telah dibuat pada sistem file lokal (yaitu yang tidak ada di penyimpanan penyedia sama sekali) dianggap sebagai direktori penuh. Direktori yang dibuat pada disk sebagai tempat penampung tidak pernah menjadi direktori lengkap.
Tombstone
Tempat penampung tersembunyi khusus yang mewakili item yang telah dihapus dari sistem file lokal. Ketika direktori dijumlahkan ProjFS menggabungkan kumpulan item lokal (tempat penampung, file lengkap, dll.) dengan set item yang diproyeksikan virtual. Jika item muncul di set lokal dan yang diproyeksikan, item lokal lebih diutamakan. Jika file tidak ada di sistem file lokal tidak ada status lokal, sehingga akan muncul dalam enumerasi. Namun jika item tersebut telah dihapus, muncul dalam enumerasi tidak akan terduga. Mengganti item yang dihapus dengan batu nisan menghasilkan efek berikut:
- Enumerasi untuk tidak mengungkapkan item.
- File terbuka yang mengharapkan item ada gagal dengan misalnya "file tidak ditemukan".
- File membuat yang diharapkan berhasil hanya jika item tidak ada berhasil; ProjFS menghapus batu nisan sebagai bagian dari operasi.
Untuk mengilustrasikan status di atas, pertimbangkan urutan berikut, mengingat penyedia ProjFS yang memiliki satu file "foo.txt" yang terletak di akar virtualisasi C:\root.
- Aplikasi menghitung C:\root. Ini melihat file virtual "foo.txt". Karena file belum diakses, file tidak ada pada disk.
- Aplikasi ini membuka handel untuk C:\root\foo.txt. ProjFS memberi tahu penyedia untuk membuat tempat penampung untuk itu.
- Aplikasi membaca konten file. Penyedia menyediakan konten file ke ProjFS dan di-cache ke C:\root\foo.txt. File sekarang menjadi tempat penampung terhidrasi.
- Aplikasi memperbarui tanda waktu Terakhir Diubah. File sekarang menjadi tempat penampung terhidrasi yang kotor.
- Aplikasi membuka handel untuk akses tulis ke file. C:\root\foo.txt sekarang menjadi file lengkap.
- Aplikasi menghapus C:\root\foo.txt. ProjFS mengganti file dengan batu nisan. Sekarang ketika aplikasi menghitung C:\root, aplikasi tidak melihat foo.txt. Jika mencoba membuka file, buka gagal dengan ERROR_FILE_NOT_FOUND.