Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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
Mulai dari Windows Server 2016, ReFS menerapkan kloning blok dengan meremap kluster logis (yaitu, lokasi fisik pada volume) dari daerah sumber ke daerah 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 mulai 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.
Ukuran Kluster dan Implikasi Performa
Ukuran kluster volume ReFS secara langsung memengaruhi perilaku kloning blok dan karakteristik performa:
- Ukuran kluster default: 4KB (direkomendasikan untuk sebagian besar beban kerja)
- Ukuran kluster alternatif: 64KB (sesuai untuk beban kerja I/O berurutan besar)
Ukuran kluster menentukan granularitas di mana operasi kloning blok dan copy-on-write terjadi. Ketika tulisan dibuat ke bagian file yang berbagi kluster dengan file lain (setelah block clone), sistem file ReFS menggunakan mekanisme alokasi-saat-menulis yang beroperasi di tingkat kluster.
- Hanya kluster yang dimodifikasi yang diduplikasi dan ditulis ke lokasi fisik baru
- Kluster yang tidak dimodifikasi dalam wilayah yang sama tetap dibagikan
- Perilaku ini berlaku terlepas dari apakah kloning blok dimulai secara eksplisit melalui FSCTL_DUPLICATE_EXTENTS_TO_FILE atau secara otomatis oleh sistem (Windows 11 Moment 5 dan yang lebih baru)
Pertimbangan performa
Pilihan ukuran kluster memiliki implikasi penting untuk performa dan konsumsi ruang:
- Kluster 4KB: Memberikan efisiensi ruang yang lebih baik untuk beban kerja dengan tulisan kecil dan acak (rentang KB ke MB), karena hanya 4KB yang diduplikasi per kluster yang dimodifikasi. Namun, ini dapat mengakibatkan operasi salin-pada-tulis yang lebih sering.
- Kluster 64KB: Mengurangi overhead metadata dan meningkatkan performa I/O berurutan, tetapi dapat mengakibatkan hingga 64KB diduplikasi untuk setiap penulisan ke wilayah bersama, bahkan jika tulisan lebih kecil dari 64KB.
Ukuran kluster ditentukan pada waktu format dan tidak dapat diubah tanpa memformat ulang volume. Untuk memeriksa ukuran kluster volume ReFS saat ini, gunakan perintah berikut:
fsutil fsinfo refsinfo <volume>
Untuk volume yang diformat secara otomatis oleh Windows (seperti ketika kloning blok diaktifkan secara default), sistem menggunakan ukuran kluster default 4KB kecuali jika secara eksplisit dikonfigurasi berbeda selama pembuatan volume.
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 atau yang lebih baru, dan jika Pengklusteran Failover Windows sedang digunakan, Tingkat Fungsional Pengklusteran harus Windows Server 2016 atau yang lebih baru saat waktu pemformatan.
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:
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:
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 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.
Perilaku Salin-saat-Tulis
Mekanisme alokasi saat menulis beroperasi pada tingkat kluster, yang membawa implikasi penting terhadap kinerja dan penggunaan ruang.
- Menulis lebih kecil dari ukuran kluster: Penulisan dengan ukuran berapa pun ke kluster bersama (bahkan 1 byte) menyebabkan seluruh kluster diduplikasi. Dengan ukuran kluster 4KB default, penulisan 1KB ke wilayah bersama menghasilkan 4KB yang disalin.
- Menulis yang mencakup beberapa kluster: Jika tulis mencakup beberapa kluster, hanya kluster yang dimodifikasi yang diduplikasi. Misalnya, penulisan 8KB dengan kluster 4KB menduplikasi 2 kluster (total 8KB), sedangkan penulisan 8KB yang sama dengan kluster 64KB menduplikasi 1 kluster (total 64KB).
- Penulisan berurutan dalam jumlah besar: Untuk beban kerja yang sering memodifikasi wilayah berdekatan yang besar setelah proses kloning, ukuran kluster yang lebih besar (64KB) dapat mengurangi overhead dengan meminimalkan jumlah operasi salin-pada-penulisan.
Granularitas pada tingkat kluster ini berlaku untuk semua penulisan setelah kloning blok, termasuk skenario di mana Windows 11 Moment 5 dan versi-versi sesudahnya secara otomatis melakukan kloning blok selama operasi penyalinan.