Bagikan melalui


Contoh Kunci Oportunistik

Contoh berikut menunjukkan pergerakan data dan pesan SMB saat kunci oportunistik dibuat dan rusak. Perhatikan bahwa klien dapat menyimpan data atribut file serta data file.

Perhatikan juga bahwa contoh-contoh ini didasarkan pada situasi di mana aplikasi klien meminta kunci oportunistik dari server jarak jauh. Proses ini secara otomatis dimulai oleh pengalih jaringan dan server jarak jauh—tidak ada keterlibatan langsung oleh aplikasi atau aplikasi klien. Proses yang dijelaskan oleh contoh-contoh ini dapat digeneralisasi ke dalam situasi di mana aplikasi klien lokal secara langsung meminta kunci oportunistik dari sistem file lokal, dengan pengecualian bahwa tidak ada pertukaran data melalui jaringan yang terlibat.

Kunci Oportunistik Tingkat 1

Diagram berikut menunjukkan tampilan lalu lintas jaringan kunci oportunistik tingkat 1 pada file. Panah menunjukkan arah pergerakan data, jika ada.

Peristiwa Klien X Peladen Klien Y
1 Membuka file, meminta kunci tingkat 1 ==>
2 <== Memberikan kunci oportunistik tingkat 1
3 Melakukan operasi baca, tulis, dan operasi lainnya ==>
4 <== Permintaan untuk membuka file
5 <== Memutus kunci oportunistik
6 Membuang data read-ahead
7 Menulis data ==>
8 Mengirim pesan "close" atau "done" ==>
9 Operasi buka Okays ==>
10 Melakukan operasi baca, tulis, dan operasi lainnya ==> <== Melakukan operasi baca, tulis, dan lainnya

 

Dalam peristiwa 1, klien X membuka file dan sebagai bagian dari operasi terbuka meminta kunci oportunistik tingkat 1 pada file. Dalam peristiwa 2, server memberikan kunci tingkat 1 karena tidak ada klien lain yang membuka file. Klien melanjutkan untuk mengakses file dengan cara yang biasa jika 3.

Jika 4, klien Y mencoba membuka file dan meminta kunci oportunistik. Server melihat bahwa klien X membuka file. Server mengabaikan permintaan Y saat klien X menghapus data tulis apa pun dan meninggalkan cache bacanya untuk file tersebut.

Server memaksa X untuk membersihkan dengan mengirim ke X pesan SMB yang merusak kunci oportunistik, peristiwa 5. Klien X "diam-diam" membuang data read-ahead apa pun; dengan kata lain, proses ini tidak menghasilkan lalu lintas jaringan. Dalam peristiwa 7, klien X menulis data tulis cache apa pun ke server. Ketika klien X selesai menulis data yang di-cache ke server, klien X mengirimkan pesan "tutup" atau "selesai" ke server, peristiwa 8.

Setelah server diberi tahu bahwa klien X selesai membersihkan cache tulisnya ke server atau telah menutup file, maka server dapat membuka file untuk klien Y, jika 9. Karena server sekarang memiliki dua klien dengan file yang sama terbuka, server tersebut tidak memberikan kunci oportunistik. Kedua klien melanjutkan untuk membaca dari file, dan satu atau tidak menulis ke file.

Kunci Oportunistik Batch

Diagram berikut menunjukkan tampilan lalu lintas jaringan dari kunci oportunistik batch. Panah menunjukkan arah pergerakan data, jika ada.

Peristiwa Klien X Peladen Klien Y
1 Membuka file, meminta kunci batch ==>
2 <== Memberikan kunci oportunistik batch
3 Membaca file ==>
4 <== Mengirim data
5 Menutup file
6 Membuka file
7 Mencari data
8 Membaca data ==>
9 <== Mengirim data
10 Menutup file
11 <== Membuka file
12 <== Memutus kunci oportunistik
13 Menutup file ==>
14 Operasi buka Okays ==>
15 <== Melakukan operasi baca, tulis, dan lainnya

 

Dalam kunci oportunistik batch, klien X membuka file, peristiwa 1, dan server memberi klien X kunci batch jika terjadi 2. Klien X mencoba membaca data, peristiwa 3, tempat server merespons dengan data, peristiwa 4.

Peristiwa 5 menunjukkan kunci oportunistik batch di tempat kerja. Aplikasi pada Client X menutup file. Namun, pengalih jaringan memfilter operasi tutup dan tidak mengirimkan pesan dekat, sehingga melakukan penutupan "senyap". Pengalih jaringan dapat melakukan ini karena klien X memiliki kepemilikan satu-satunya file. Kemudian, pada peristiwa 6, aplikasi membuka kembali file. Sekali lagi, tidak ada data yang mengalir di seluruh jaringan. Sejauh menyangkut server, klien ini telah membuka file sejak peristiwa 2.

Peristiwa 7, 8, dan 9 menunjukkan perjalanan lalu lintas jaringan yang biasa. Dalam peristiwa 10, penutupan senyap lain terjadi.

Dalam peristiwa 11, klien Y mencoba membuka file. Tampilan server dari file adalah bahwa klien X membukanya, meskipun aplikasi pada klien X telah menutupnya. Oleh karena itu, server mengirim pesan yang merusak kunci oportunistik ke klien X. Klien X sekarang mengirim pesan dekat di seluruh jaringan, peristiwa 13. Peristiwa 14 mengikuti saat server membuka file untuk klien Y. Aplikasi pada klien X telah menutup file, sehingga tidak ada lagi transfer ke atau dari server untuk file tersebut. Klien Y memulai transfer data seperti biasa jika 15.

Antara waktu klien X diberikan kunci pada file dalam peristiwa 2 dan penutupan akhir pada peristiwa 13, data file apa pun yang telah di-cache klien valid, terlepas dari aplikasi intervensi operasi terbuka dan tutup. Namun, setelah kunci oportunistik rusak, data yang di-cache tidak dapat dianggap valid.

Filter Kunci Oportunistik

Diagram berikut menunjukkan tampilan lalu lintas jaringan kunci oportunistik filter. Panah menunjukkan arah pergerakan data, jika ada.

Peristiwa Klien X Peladen Klien Y
1 Membuka file tanpa hak akses ==>
2 <== Membuka file
3 Permintaan filter lock==>
4 <== Memberikan kunci
5 Membuka file untuk membaca ==>
6 <== Membuka kembali file
7 Membaca data menggunakan handel baca ==>
8 <== Mengirim data
9 <== Mengirim data
10 <== Mengirim data
11 <== Membuka file
12 Membuka file ==>
13 <== Permintaan kunci filter
14 Menolak filter lock==>
15 <== Membaca data
16 Mengirim data ==>
17 Membaca (cache) data
18 Menutup file ==>
19 <== Menutup file

 

Dalam kunci oportunistik filter, klien X membuka file, peristiwa 1, dan server merespons dalam peristiwa 2. Klien kemudian meminta kunci oportunistik filter di peristiwa 3, diikuti oleh server yang memberikan kunci oportunistik pada peristiwa 4. Klien X kemudian membuka file lagi untuk dibaca di peristiwa 5, yang direspons server dalam peristiwa 6. Klien kemudian mencoba membaca data, yang direspons server dengan data, peristiwa 8.

Peristiwa 9 menunjukkan kunci oportunistik filter di tempat kerja. Server membaca di depan klien dan mengirim data melalui jaringan meskipun klien belum memintanya. Klien menyimpan data. Jika 10, server juga mengantisipasi permintaan data di masa mendatang dan mengirim bagian lain dari file untuk klien ke cache.

Dalam peristiwa 11 dan 12, klien lain, Y, membuka file. Klien Y juga meminta kunci oportunistik filter. Dalam peristiwa 14, server menolaknya. Jika 15, klien Y meminta data, yang dikirim server dalam peristiwa 16. Tidak satu pun dari ini mempengaruhi klien X. Kapan saja, klien lain dapat membuka file ini untuk akses baca. Tidak ada klien lain yang memengaruhi kunci filter klien X.

Peristiwa 17 menunjukkan data pembacaan X klien. Namun, karena server telah mengirim data dan klien telah menyimpannya dalam cache, tidak ada lalu lintas yang melintasi jaringan.

Dalam contoh ini, klien X tidak pernah mencoba membaca semua data dalam file, sehingga read-ahead yang ditunjukkan oleh peristiwa 9 dan 10 "-"; artinya, data tidak pernah benar-benar digunakan. Ini adalah kerugian yang dapat diterima karena read-ahead telah meningkatkan aplikasi.

Dalam peristiwa 18, klien X menutup file. Pengalih jaringan klien meninggalkan data yang di-cache. Server menutup file.