Blok Kopyalama

Blok kopyalama işlemi, dosya sistemine uygulama adına bir dosya bayt aralığı kopyalamasını belirtir. Hedef dosya, kaynak dosyayla aynı veya kaynak dosyadan farklı olabilir.

Dosya sistemi , Kümeler ve Kapsamlar eşlemelerini yönetir ve sanal küme numarasını (VCN) temel alınan dosya verilerini okuyup yazmak yerine düşük maliyetli bir meta veri işlemi olarak mantıksal küme numarası (LCN) eşlemeleriyle değiştirerek kopyalamayı gerçekleştirebilir. Bu, kopyanın daha hızlı tamamlanmasını sağlar ve temel alınan depolamada daha az G/Ç oluşturur. Ayrıca, blok kopyasından sonra birden çok dosya artık mantıksal kümeleri paylaşabilir ve aynı kümeleri diskte birden çok kez depolamayarak kapasite tasarrufu yapabilir.

Blok kopyalama işlemi, dosyalar arasında sağlanan yalıtımı bozmaz. Blok kopyası tamamlandıktan sonra, kaynak dosyadaki yazma işlemleri hedefte görünmez ve aynı şekilde, hedefte yapılan yazma işlemleri de kaynak dosyada görünmez.

Blok kopyalama yalnızca Windows Server 2016'da başlayan ReFS dosya sistemi türünde kullanılabilir. Windows 11 Moment 5 güncelleştirmesi (KB5034848) ve Windows istemcisi ve Windows Server derlemelerinin sonraki sürümleriyle başlayarak, blok kopyalama desteklenen Windows kopyalama işlemlerinde yerel olarak gerçekleşir.

ReFS'de Kopyalamayı Engelle

Windows Server 2016'dan başlayarak, ReFS kaynak bölgeden hedef bölgeye mantıksal kümeleri (bir birimde fiziksel konumlar) yeniden eşleyerek blok kopyalama uygular. Daha sonra bu bölgeler arasında yalıtım sağlamak için bir yazmada ayırma mekanizması kullanır. Kaynak ve hedef bölgeler aynı veya farklı dosyalarda olabilir.

Bu uygulama, başlangıç ve bitiş dosyası uzaklıklarının küme sınırlarına hizalanmış olmasını gerektirir. Windows Server 2016'da başlayan ReFS'de kümelerin boyutu varsayılan olarak 4 KB'tır, ancak isteğe bağlı olarak 64 KB olarak ayarlanabilir. Küme boyutu, biçim zamanında ayarlanan birim genelinde bir parametredir.

Küme Boyutu ve Performans Etkileri

ReFS biriminin küme boyutu, blok kopyalama davranışını ve performans özelliklerini doğrudan etkiler:

  • Varsayılan küme boyutu: 4 KB (çoğu iş yükü için önerilir)
  • Alternatif küme boyutu: 64 KB (büyük, sıralı G/Ç iş yükleri için uygundur)

Küme boyutu, blok klonlama ve yazarken kopyalama işlemlerinin gerçekleştiği hassasiyeti belirler. Kümeleri başka bir dosyayla paylaşan bir dosya bölgesine yazma işlemi yapıldığında (blok kopyasından sonra), ReFS küme düzeyinde çalışan bir yazma ayırma mekanizması kullanır:

  • Yalnızca değiştirilen küme çoğaltılır ve yeni bir fiziksel konuma yazılır
  • Aynı bölge içindeki değiştirilmemiş kümeler paylaşılmaya devam eder
  • Bu davranış, blok kopyalamanın açıkça FSCTL_DUPLICATE_EXTENTS_TO_FILE aracılığıyla mı yoksa sistem tarafından otomatik olarak mı başlatıldığına bakılmaksızın geçerlidir (Windows 11 Moment 5 ve üzeri)

Performansla ilgili dikkat edilmesi gerekenler

Küme boyutu seçiminin performans ve alan tüketimi açısından önemli etkileri vardır:

  • 4 KB kümeleri: Değiştirilen küme başına yalnızca 4 KB çoğaltıldığından, küçük, rastgele yazma işlemleri (KB-MB aralığı) olan iş yükleri için daha iyi alan verimliliği sağlayın. Ancak, bu daha sık yazma üzerine kopyalama işlemlerine neden olabilir.
  • 64 KB kümeleri: Meta veri yükünü azaltın ve sıralı G/Ç performansını geliştirin, ancak yazma işlemi 64 KB'tan küçük olsa bile paylaşılan bir bölgede her yazma işlemi için 64 KB'a kadar çoğaltılabilir.

Küme boyutu biçim zamanında belirlenir ve birim yeniden biçimlendirilmeden değiştirilemez. ReFS biriminin geçerli küme boyutunu denetlemek için aşağıdaki komutu kullanın:

fsutil fsinfo refsinfo <volume>

Windows tarafından otomatik olarak biçimlendirilmiş birimler için (örneğin, blok kopyalama varsayılan olarak etkinleştirildiğinde), birim oluşturma sırasında aksi açıkça yapılandırılmadığı sürece sistem 4 KB varsayılan küme boyutunu kullanır.

Kısıtlamalar ve Açıklamalar

  • Kaynak ve hedef bölgelerin bir küme sınırında başlaması ve bitmesi gerekir.
  • Kopyalanan bölgenin uzunluğu 4 GB'tan az olmalıdır.
  • Hedef bölge dosya sonunu aşmamalıdır. Uygulama hedefi kopyalanmış verilerle genişletmek istiyorsa, önce SetEndOfFile çağrısı yapmalıdır.
  • Kaynak ve hedef bölgeler aynı dosyadaysa çakışmamalıdır. (Uygulama, blok kopyalama işlemini artık çakışmayan birden çok blok kopyasına bölerek devam edebilir.)
  • Kaynak ve hedef dosyalar aynı ReFS biriminde olmalıdır.
  • Kaynak ve hedef dosyalar aynı Bütünlük Akışları ayarına sahip olmalıdır (yani, Bütünlük Akışları her iki dosyada da etkinleştirilmelidir veya her iki dosyada da devre dışı bırakılmalıdır).
  • Kaynak dosya seyrekse, hedef dosya da seyrek olmalıdır.
  • Blok kopyalama işlemi Paylaşılan Fırsatçı Kilitleri ( Düzey 2 Fırsatçı Kilitler olarak da bilinir) bozar.
  • ReFS birimi, Windows Server 2016 veya daha yeni bir sürümle biçimlendirilmiş olmalıdır ve Windows Sunucu Yük Devretme Kümelemesi kullanılıyorsa, Kümeleme İşlev Düzeyinin biçimlendirme sırasında Windows Server 2016 veya daha yeni bir sürüm olması gerekir.

Example

Her dosyanın 3 ayrı bölgeden oluştuğu X ve Y adlı iki dosyamız olduğunu varsayalım. Her dosya bölgesi birimin ayrı bir bölgesinde depolanır. Dosya sistemi, bu birim bölgelerinin her birine tek bir dosya bölgesinde başvurulduğunun bilgisini depolar:

Kopyalama işleminden önce birim bölgelerinin durumunu gösteren diyagram.

Şimdi bir uygulamanın, A ve B dosya bölgeleri üzerinden Dosya X'ten şu anda E'nin bulunduğu uzaklıkta Dosya Y'ye blok kopyalama işlemi düzenlediğini varsayalım. Aşağıdaki dosya sistemi durumu sonuçlanır:

Klonlama sürecinden sonra birim bölgelerinin durumunu gösteren bir diyagram.

A ve B bölgelerindeki veriler, ReFS birimindeki VCN ile LCN eşlemeleri değiştirilerek Dosya X'ten Dosya Y'ye etkili bir şekilde çoğaltıldı. A ve B bölgelerini destekleyen disk uzantıları okunmadı, işlem sırasında eski E ve F bölgelerini destekleyen disk uzantıları üzerine yazılmamıştır.

X ve Y dosyaları artık diskte mantıksal kümeleri paylaşıyor. Bu durum, tabloda gösterilen referans sayılarına yansıtılmaktadır. Paylaşım, A ve B bölgelerinin temel alınan birimde çoğaltılmasından daha düşük birim kapasitesi tüketimine neden olur.

Diyelim ki, uygulama X Dosyasında A bölgesinin üzerine yazıyor. ReFS, A'nın bir kopyasını oluşturur ve buna G adını veririz. ReFS, G'yi X Dosyasında ilişkilendirir ve değişikliği uygular. Bu, dosyalar arasındaki yalıtımın korunmasını sağlar. Referans sayıları uygun şekilde güncellenir.

Değiştirme yazma işlemi gerçekleştikten sonra hacim bölgelerinin durumunu gösteren bir diyagram.

Yazma değiştirildikten sonra, B bölgesi diskte paylaşılmaya devam edilir. A bölgesi bir kümeden büyükse, yalnızca değiştirilen kümenin yinelendiğini ve kalan bölümün paylaşılmış olarak kalacağını unutmayın.

Kopyalama-Yazma Davranışı

Yazmada ayırma mekanizması, performans ve alan tüketimi açısından önemli etkileri olan küme düzeyinde çalışır:

  • Küme boyutundan küçük yazma işlemleri: Paylaşılan bir kümeye herhangi bir boyutta yazma işlemi (hatta 1 bayt) kümenin tamamının yinelenmesine neden olur. Varsayılan 4 KB küme boyutuyla, paylaşılan bir bölgeye 1 KB yazıldığında 4 KB'nin kopyalanmasına neden olur.
  • Birden çok kümeyi kapsayan yazma işlemleri: Yazma birden çok kümeye yayılıyorsa, yalnızca değiştirilen kümeler yinelenir. Örneğin, 4 KB kümeli 8 KB yazma işlemi 2 kümeyi (toplam 8 KB) yinelerken, 64 KB kümeyle aynı 8 KB yazma işlemi 1 kümeyi (toplam 64 KB) yineler.
  • Büyük sıralı yazmalar: Kopyalama sonrasında büyük bitişik bölgeleri sık sık değiştiren iş yükleri için, daha büyük küme boyutları (64 KB) yazma üzerine kopyalama işlemlerinin sayısını en aza indirerek ek yükü azaltabilir.

Bu küme düzeyinde ayrıntı düzeyi, Windows 11 Moment 5 ve üzeri sürümlerin kopyalama işlemleri sırasında blok kopyalama işlemini otomatik olarak gerçekleştirdiği senaryolar da dahil olmak üzere blok kopyalama sonrasındaki tüm yazma işlemleri için geçerlidir.

DUPLICATE_EXTENTS_DATA

FSCTL_DUPLICATE_EXTENTS_TO_FILE