Bagikan melalui


Kloning Blok

Operasi klon blok menginstruksikan sistem file untuk menyalin rentang byte file atas nama aplikasi. File tujuan mungkin sama dengan, atau berbeda dari, file sumber.

Sistem file mengelola pemetaan Kluster dan Tingkatan, dan mungkin dapat melakukan penyalinan dengan mengubah nomor kluster virtual (VCN) menjadi pemetaan nomor kluster logis (LCN) sebagai operasi metadata biaya rendah, daripada membaca dan menulis data file yang mendasar. Ini memungkinkan salinan selesai lebih cepat dan menghasilkan lebih sedikit I/O ke penyimpanan yang mendasar. Selain itu, beberapa file sekarang dapat berbagi kluster logis setelah klon blok, menghemat kapasitas dengan tidak menyimpan kluster yang identik beberapa kali pada disk.

Operasi klon blok tidak memutus isolasi yang disediakan antar file. Setelah klon blok selesai, tulis ke file sumber tidak muncul di tujuan, atau sebaliknya.

Kloning blok hanya tersedia pada jenis sistem file ReFS yang dimulai dengan Windows Server 2016. Dimulai dengan pembaruan Windows 11 Moment 5 (KB5034848) dan rilis yang lebih baru dari klien Windows dan build Windows Server, kloning blok terjadi secara asli dalam operasi penyalinan Windows yang didukung.

Kloning Blok pada ReFS

ReFS pada Windows Server 2016 menerapkan kloning blok dengan memulihkan kluster logis (yaitu, lokasi fisik pada volume) dari wilayah sumber ke wilayah tujuan. Kemudian menggunakan mekanisme alokasi-saat-tulis untuk memastikan isolasi antara wilayah tersebut. Wilayah sumber dan tujuan mungkin berada dalam file yang sama, atau berbeda.

Implementasi ini mengharuskan offset file awal dan akhir diselaraskan dengan batas kluster. Dalam ReFS pada Windows Server 2016, kluster berukuran 4KB secara default, tetapi dapat secara opsional diatur ke 64KB. Ukuran kluster adalah parameter seluruh volume yang diatur pada waktu format.

Pembatasan dan Keterangan

  • Wilayah sumber dan tujuan harus dimulai dan berakhir pada batas kluster.
  • Panjang wilayah kloning harus kurang dari 4GB.
  • Wilayah tujuan tidak boleh melewati akhir file. Jika aplikasi ingin memperluas tujuan dengan data kloning, aplikasi harus terlebih dahulu memanggil SetEndOfFile.
  • Jika wilayah sumber dan tujuan berada dalam file yang sama, wilayah tersebut tidak boleh tumpang tindih. (Aplikasi mungkin dapat melanjutkan dengan membagi operasi klon blok menjadi beberapa klon blok yang tidak lagi tumpang tindih.)
  • File sumber dan tujuan harus berada pada volume ReFS yang sama.
  • File sumber dan tujuan harus memiliki pengaturan Aliran Integritas yang sama (yaitu, Aliran Integritas harus diaktifkan di kedua file, atau dinonaktifkan di kedua file).
  • Jika file sumber jarang, file tujuan juga harus jarang.
  • Operasi klon blok akan memutus Kunci Oportunistik Bersama (juga dikenal sebagai Kunci Oportunistik Tingkat 2).
  • Volume ReFS harus telah diformat dengan Windows Server 2016, dan jika Pengklusteran Failover Windows sedang digunakan, Tingkat Fungsi pengklusteran harus windows Server 2016 atau yang lebih baru pada waktu format.

Contoh

Misalkan kita memiliki dua file, X dan Y, di mana setiap file terdiri dari 3 wilayah yang berbeda. Setiap wilayah file disimpan di wilayah volume yang berbeda. Sistem file menyimpan pengetahuan bahwa masing-masing wilayah volume tersebut dirujuk dalam satu wilayah file:

sebelum mengkloning

Sekarang misalkan aplikasi mengeluarkan operasi klon blok dari File X, melalui wilayah file A dan B, ke File Y di offset tempat E saat ini berada. Status sistem file berikut akan menghasilkan:

setelah kloning

Data di wilayah A dan B secara efektif diduplikasi dari File X ke File Y dengan mengubah pemetaan VCN ke LCN dalam volume ReFS. Tingkat disk mendukung wilayah A dan B tidak dibaca, juga bukan tingkat disk yang mendukung wilayah lama E dan F yang ditimpa selama operasi.

File X dan Y sekarang berbagi kluster logis pada disk. Ini tercermin dalam jumlah referensi yang diperlihatkan dalam tabel. Berbagi menghasilkan konsumsi kapasitas volume yang lebih rendah daripada jika wilayah A dan B diduplikasi pada volume yang mendasar.

Sekarang, misalkan aplikasi menimpa wilayah A di File X. ReFS membuat salinan duplikat A, yang sekarang akan kita panggil G. ReFS kemudian memetakan G ke File X, dan menerapkan modifikasi. Ini memastikan bahwa isolasi antara file dipertahankan. Jumlah referensi diperbarui dengan tepat:

setelah memodifikasi tulis

Setelah mengubah tulis, wilayah B masih dibagikan pada disk. Perhatikan bahwa jika wilayah A lebih besar dari kluster, hanya kluster yang dimodifikasi yang akan diduplikasi, dan bagian yang tersisa akan tetap dibagikan.

DUPLICATE_EXTENTS_DATA

FSCTL_DUPLICATE_EXTENTS_TO_FILE