Hyper-V depolama: Katmanları önbelleğe alma ve veri tutarlılığı üzerindeki etkileri

Bu makale, sanal depolama yığınında önbelleğe almaya genel bir bakış sağlar ve yazılım geliştiricilerine ve yöneticilerine istenen veri tutarlılığı gereksinimlerini karşılandığından emin olmak için rehberlik sağlar.

Şunlar için geçerlidir: Windows Server 2012 R2
Özgün KB numarası: 2801713

Daha fazla bilgi

En azından, sistemdeki çeşitli önbelleğe alma katmanları genellikle aşağıdakileri içerir:

  • Dosya sistemi önbelleği. Varsayılan olarak, Windows disklerden okunan ve disklere yazılan dosya verilerini önbelleğe alır. Bu, okuma işlemlerinin fiziksel disk yerine sistem dosya önbelleği olarak bilinen sistem belleğindeki bir alandan dosya verilerini okuduğu anlamına gelir. Buna karşılık, yazma işlemleri dosya verilerini disk yerine sistem dosya önbelleğine yazar ve bu tür bir önbellek geri yazma önbelleği olarak bilinir. Uygulamalar, yazmaların sistem önbelleğinde önbelleğe alınmadığından emin olmak için dosya sistemi kaldırılmamış semantiği kullanabilir.
  • Disk sürücüleri önbelleği. Disk sürücüleri, disk sürücülerinin performansını geliştirmek için bellenim katmanında önbelleğe alma uygular. Üretici yazılımı katmanında önbelleğe alma performansı geliştirebilse de, güç kesintisi durumunda diske yazılmadan önce diskteki veriler kaybolabilir. Bu önbelleğe alma davranışını denetleme seçenekleri SCSI, SATA ve ATA gibi standartlaştırılmış sürücü arabirimlerinin bir parçasıdır. Bu seçenekler şunlardır:
    1. Birim Erişimini Zorlama (FUA) olarak bilinen G/Ç başına denetim mekanizmasını kullanın. Bu bayrak, sinyal işlemi tamamlanmadan önce sürücünün verileri kararlı medya depolama alanına yazması gerektiğini belirtir. Bunu yapması gereken uygulamalar, bir güç kesintisi olması durumunda verilerin kaybolmadığından emin olmak için disk sorunu FUA'da verilerin kararlı olduğundan emin olur.

      Sunucu sınıfı disk sürücüleri (SCSI ve Fiber Kanal) genellikle FUA bayrağını destekler. Ticari sürücülerde (ATA, SATA ve USB) FUA yerine getirilmeyebilir. Bu, sürücünün yazma önbelleği devre dışı bırakılmadığı sürece verileri tutarsız bir durumda bırakabilir. Bu mekanizmaya bağlıysanız disk alt sisteminin FUA'yi doğru işlediğinden emin olun.

    2. Disk önbelleğini boşaltmaya zorla. Diske boşaltma gönderen bir uygulama veya sistem, disk alt sistemini önbelleğindeki tüm verileri diske yazmaya zorlar. Disk önbelleğindeki tüm bilgilerin temizleme döndürülmeden önce disk ortamına yazılması gerekeceği için, çok sık boşaltma yapılması performans sonuçlarına neden olur.

    3. Disk önbelleğini devre dışı bırakın. Diske IOCTL_DISK_SET_CACHE_INFORMATION denetim kodunu vererek diskin yazma önbelleğini devre dışı bırakabilirsiniz. Yazma önbelleğinin durumu (açık veya kapalı) sistem yeniden başlatmalarında korunur. Bu denetim kodunun verilmesi, diske verilen tüm G/Ç mekanizmaları için çok önemli performans sonuçları doğuracaktır. Bu sonuçlar büyük olasılıkla performansta belirgin bir düşüş içerir. Dağıtmadan önce bu denetim kodunu dikkatli bir şekilde kullanmayı düşünmelisiniz.

      Not

      Disk önbelleğini devre dışı bırakamıyorsanız 1. ve 2. seçenekleri dikkate almanız gerekir.

Bu nedenle, uygulama veya iş yükü sanal makinede (VM) çalışıyorsa, çeşitli önbelleğe alma katmanları veri tutarlılığını etkiler.

  • Konuk dosya sistemi önbelleği. Bu katman, daha önce belirtildiği gibi dosya sistemi açılmamış semantiği kullanılarak atlanabilir.

  • Konuk sanal disk önbelleği. Sanallaştırılmış IDE (öykünmüş veya yapay) veya SCSI cihazı, alt yığın tarafından döndürülen yazma önbelleği durumunu bildirir. Sanal diskler yazma önbelleğinin etkinleştirildiğini bildirir ve konuğun yazma önbelleğini kapatmasına izin vermeyi reddeder. Önbelleği devre dışı bırakmak başarısız olur ve her zaman önbelleğin etkinleştirildiğine yanıt verir. Bu davranış aşağıdaki nedenlerle gereklidir:

    • Hyper-V, aynı diskte çalışan tüm VM'lerin disk önbellek ayarlarının aynı olması gerektiğini varsayamaz.

    • Temel alınan depolama alanı, kapatılabilen her zaman açık bir yazma önbelleğine sahip olabilir. Bu, sanal diskin aynı konakta (canlı depolama geçişi) veya farklı bir konakta (dinamik geçiş) farklı bir diske geçirilebileceği gerçeğiyle vurgulanır.

      Uygulamalar disk önbelleğini kapatamayacağından, konuktaki bir güç hatasında veri bütünlüğünden emin olması gereken tüm uygulamaların, yazma işleminin disk önbelleğini atladığından emin olmak için 1. veya 2. seçeneği kullanması gerekir.

  • Konak dosya sistemi önbelleği. Hyper-V depolama yığını, konuktan gelen yazmaların temel konak dosya sistemi yığınını atladığından emin olmak için de aralanmamış yazmaları kullanır.

  • Konak disk önbelleği. FUA, konuk tarafından ayarlanırsa konağa ve konak depolama yığınına yayılır. Konak fiziksel disk sistemi, güç hataları aracılığıyla sanallaştırılmış iş yükü veri bütünlüğünden emin olmak için aşağıdaki ölçütlerden en az birini karşılamalıdır:

    • Sistem sunucu sınıfı diskler (SCSI, Fiber Kanal) kullanır.
    • Sistem, disklerin pil destekli önbelleğe alma ana veri yolu bağdaştırıcısına (HBA) bağlı olduğundan emin olur.
    • Sistem, depolama cihazı olarak bir depolama denetleyicisi (örneğin, bir RAID sistemi) kullanır.
    • Sistem, diskin gücünün kesintisiz güç kaynağı (UPS) tarafından korunmasını sağlar.
    • Sistem, diskin yazma önbelleği özelliğinin devre dışı bırakıldığını sağlar.