SMB Azure dosya paylaşımları için performansı geliştirme

Şunlar için geçerlidir: ✔️ SSD medya katmanında SMB dosya paylaşımları

Bu makalede, Çok Kanallı SMB ve meta veri önbelleğe alma dahil olmak üzere SSD (premium) SMB Azure dosya paylaşımları için performansı nasıl geliştirebileceğiniz açıklanmaktadır.

Performansı iyileştirme

Aşağıdaki ipuçları performansı iyileştirmenize yardımcı olabilir:

  • Ağ gecikmesini azaltmak için depolama hesabınızın ve istemcinizin aynı Azure bölgesinde olduğundan emin olun.
  • Çok iş parçacıklı uygulamalar kullanın ve iş yükünü birden çok dosyaya dağıtın.
  • Birden fazla performans testi yapın ve tekrar edin. Tek bir ilk teste dayanarak sonuç çıkarmayın.
  • Çok Kanallı SMB'nin performans avantajları, yükü dağıtan dosya sayısıyla artar.
  • SSD paylaşım performansı, IOPS ve aktarım hızı ve tek dosya sınırları dahil olmak üzere sağlanan paylaşım boyutuna bağlıdır. Ayrıntılar için bkz. v1 sağlama modelini anlama.
  • Tek bir sanal makine (VM) istemcisinin en yüksek performansı yine de VM sınırlarına bağlıdır. Örneğin, Standard_D32s_v3 yaklaşık 1,86 GiB/sn maksimum bant genişliğini destekler. Giriş (depolamaya yazma işlemleri) ölçülür, ancak çıkış (depolamadan okuma) ölçülmez. Dosya paylaşımı performansı makine ağ sınırlarına, CPU'lara, dahili depolama kullanılabilir ağ bant genişliğine, GÇ boyutlarına, paralelliğe ve diğer faktörlere tabidir.
  • Performans tek bir istemciyle sınırlıysa ve iş yükü hala sağlanan paylaşım sınırlarının altındaysa, yükü birden çok istemciye yayarak daha yüksek performans elde edebilirsiniz.
  • Depolama hesabınızın bulunduğu belirli kullanılabilirlik alanını seçmek için bölgesel yerleşimi kullanın. Bu, VM'lerinizi depolama alanınızla aynı kullanılabilirlik alanına yerleştirmenize olanak tanır ve bu da gecikme süresini yüzde 30'a kadar azaltabilir.

IOPS, aktarım hızı ve G/Ç boyutları arasındaki ilişki

Aktarım Hızı = I/O boyutu * IOPS

Daha yüksek G/Ç boyutları daha yüksek aktarım hızı sağlar ve daha yüksek gecikme süresine sahip olur ve bu da daha az sayıda net IOPS ile sonuçlanır. Daha küçük G/Ç boyutları daha yüksek IOPS sağlar, ancak daha düşük net aktarım hızı ve gecikme süreleriyle sonuçlanır. Daha fazla bilgi edinmek için bkz. Azure Dosyalar performansını anlama.

SMB Çok Kanallı

Çok Kanallı SMB, bir SMB istemcisinin bir SMB dosya paylaşımına birden çok ağ bağlantısı kurmasını sağlayarak aktarım hızını ve dayanıklılığı artırır. Azure Dosyalar, hem Windows hem de Linux SMB istemcileri için SSD dosya paylaşımlarında Çok Kanallı SMB'i destekler. Windows istemciler için SMB Çok Kanallı, tüm Azure bölgelerde varsayılan olarak etkindir. Desteklenen Linux işletim sistemi sürümleri ve ayrıntılı yapılandırma için bkz. Linux SMB Çok Kanallı.

Çok Kanallı SMB'nin avantajları

SMB Çok Kanallı etkinleştirdiğinizde, istemci birden fazla ağ bağlantısı kullanabilir. Bu kurulum performansı artırır ve sahiplik maliyetini düşürür. Birden fazla NIC üzerinden bant genişliği toplama ve NIC'ler için Receive Side Scaling (RSS) desteğiyle birden fazla CPU arasında I/O yükünü dağıtarak daha iyi performans elde edersiniz.

  • Daha yüksek aktarım hızı: Birden çok bağlantı, verilerin paralel olarak birden çok yol üzerinden aktarılmasına olanak sağlar ve bu sayede daha büyük G/Ç boyutlarına sahip daha büyük dosya boyutları kullanan ve tek bir VM'den veya daha küçük bir VM kümesinden yüksek aktarım hızı gerektiren iş yüklerinden önemli ölçüde yararlanır. Bu iş yüklerinden bazıları içerik oluşturma veya kodlama, genomiks ve finansal hizmetler risk analizi için medya ve eğlenceyi içerir.
  • Daha yüksek IOPS: NIC RSS özelliği, birden çok bağlantıya sahip birden çok CPU arasında etkili yük dağıtımı sağlar. Bu, daha yüksek IOPS ölçeğine ve VM CPU'larının etkili kullanımına yardımcı olur. Bu, veritabanı uygulamaları gibi küçük G/Ç boyutlarına sahip iş yükleri için kullanışlıdır.
  • Ağ hataya dayanıklılığı: İstemciler artık tek bir bağlantıya güvenmedikleri için birden çok bağlantı kesinti riskini azaltır.
  • Otomatik yapılandırma: çok kanallı SMB istemcilerde ve depolama hesaplarında etkinleştirildiğinde, mevcut bağlantıların dinamik olarak bulunmasına olanak tanır ve gerektiğinde ek bağlantı yolları oluşturabilir.
  • Maliyet iyileştirme: İş yükleri, SSD dosya paylaşımlarına bağlanırken tek bir VM'den veya küçük bir VM kümesinden daha yüksek ölçek elde edebilir. Bu, bir iş yükünü çalıştırmak ve yönetmek için gereken VM sayısını azaltarak toplam sahip olma maliyetini azaltabilir.
  • Linux istemci performansı ölçeklendirme: Linux SMB istemcileri artık Windows'a benzer şekilde aktarım hızını ve IOPS'yi artırmak için çok kanallıdan yararlanabilir.
  • Platformlar arası tutarlılık: Hem Windows hem de Linux istemcilerinin en iyi performansa ulaşmasıyla karma ortamları etkinleştirir.
  • Dayanıklılık: Birden çok kanal, heterojen ağlara karşı hataya dayanıklılığı artırır.

Çok Kanallı SMB hakkında daha fazla bilgi için Windows belgelerine bakın.

Bu özellik, çok iş parçacıklı uygulamalar için daha fazla performans avantajı sağlar, ancak genellikle tek iş parçacıklı uygulamalara yardımcı olmaz. Diğer ayrıntılar için Performans karşılaştırması bölümüne bakın.

Sınırlamalar

Azure dosya paylaşımları için Çok Kanallı SMB şu anda aşağıdaki kısıtlamalara sahiptir:

  • Yalnızca SSD dosya paylaşımları için kullanılabilir. HDD dosya paylaşımları için kullanılamaz.
  • Yalnızca SMB 3.1.1 kullanan istemcilerde desteklenir. SMB istemci işletim sistemlerinin önerilen düzeylere yamalandığından emin olun.
  • Maksimum kanal sayısı dörttür. Detaylar için bkz. SMB kanallarının sayısı dörtten fazla.

İstemcilerde SMB Çok Kanallı'nın etkin olduğunu doğrulayın

Çok Kanallı SMB yalnızca özellik hem istemci tarafında (istemciniz) hem de hizmet tarafında (Azure depolama hesabınız) etkinleştirildiğinde çalışır.

Windows istemcilerinde, Çok Kanallı SMB varsayılan olarak etkindir. Aşağıdaki PowerShell komutunu çalıştırarak yapılandırmanızı doğrulayabilirsiniz:

Get-SmbClientConfiguration | Select-Object -Property EnableMultichannel

Depolama hesabınızda Çok Kanallı SMB'nin etkinleştirildiğini doğrulayın

Çok Kanallı SMB'nin durumunu görüntüleyebilir ve Azure portalını, Azure PowerShell veya Azure CLI kullanarak depolama hesabında etkinleştirebilir veya devre dışı bırakabilirsiniz.

Çok Kanallı SMB'nin durumunu görüntülemek için SSD dosya paylaşımlarınızı içeren depolama hesabına gidin. Hizmet menüsündeki Veri depolama'nın altında Klasik dosya paylaşımları'nı seçin. Dosya paylaşımı ayarları bölümünde Çok Kanallı SMB'nin durumunu görürsünüz. Bunu görmüyorsanız depolama hesabınızın FileStorage hesap türünde olduğundan emin olun.

Çok Kanallı SMB ayarını vurgulayan depolama hesabı içindeki dosya paylaşımları bölümünün ekran görüntüsü.

Çok Kanallı SMB'yi etkinleştirmek veya devre dışı bırakmak için geçerli durumu seçin (duruma bağlı olarak Etkin veya Devre Dışı ). Oluşan iletişim kutusu, Çok Kanallı SMB'yi etkinleştirmek veya devre dışı bırakmak için bir geçiş sağlar. İstediğiniz durumu seçin ve Kaydet'i seçin.

Çok Kanallı SMB özelliğini etkinleştirmek veya devre dışı bırakmak için iletişim kutusunun ekran görüntüsü.

Eski Windows işletim sistemlerinde Çok Kanallı SMB'yi etkinleştirme

Azure Dosyalar'da Çok Kanallı SMB'yi desteklemek için Windows ilgili tüm düzeltme eklerine sahip olduğundan emin olun. Windows Server 2016, Windows 10 sürüm 1607 ve Windows 10 sürüm 1507 dahil olmak üzere birkaç eski Windows sürümü için, tam düzeltme eki uygulanan yüklemelerde tüm ilgili SMB Çok Kanallı düzeltmeleri uygulamak için ek kayıt defteri anahtarları ayarlayın. Bu üç sürümden daha yeni bir Windows sürümü çalıştırıyorsanız ek işlem yapmanız gerekmez.

Windows Server 2016 ve Windows 10 sürüm 1607

Windows Server 2016 ve Windows 10 sürüm 1607 için tüm Çok Kanallı SMB düzeltmelerini etkinleştirmek için aşağıdaki PowerShell komutunu çalıştırın:

Set-ItemProperty `
    -Path "HKLM:\SYSTEM\CurrentControlSet\Policies\Microsoft\FeatureManagement\Overrides" `
    -Name "2291605642" `
    -Value 1 `
    -Force

Windows 10 sürüm 1507

Windows 10 sürüm 1507 için tüm Çok Kanallı SMB düzeltmelerini etkinleştirmek için aşağıdaki PowerShell komutunu çalıştırın:

Set-ItemProperty `
    -Path "HKLM:\SYSTEM\CurrentControlSet\Services\MRxSmb\KBSwitch" `
    -Name "{FFC376AE-A5D2-47DC-A36F-FE9A46D53D75}" `
    -Value 1 `
    -Force

Linux SMB Çok Kanallı desteği

Azure Dosyalar, aşağıdaki dağıtımlarda yerel Linux SMB istemcileri ile Çok Kanallı SMB'yi destekler:

Distribution Minimum çekirdek versiyonu
Ubuntu 24.04 AKS 6.8.0-1042
Ubuntu 24.04 sanal makineleri 6.14.0-1017
Ubuntu 22.04 sanal makineleri 6.8.0-1044
AzLinux 3.0 (VM'ler ve AKS) 6.6.106.1
RHEL 9.7 5.14.0-611.5.1.el9_7
RHEL 10.1 6.12.0-124.8.1.el10_1

Bu istemcilerin çok kanallı desteği olan uygun çekirdek yığınını ve CIFS yardımcı programlarını çalıştırıyor olması gerekir. Linux'ta Çok Kanallı SMB desteği, aynı dosya paylaşımı uç noktasına birden çok paralel TCP bağlantısı kurarak Windows'a benzer bir performans ölçeklendirmesi sağlar.

Önkoşullar

SMB Çok Kanallı'nın Linux ile kullanılması için önkoşullar aşağıdadır.

  • Çok kanallı SMB desteğinin etkinleştirildiği çekirdek (bkz . Linux SMB Çok Kanallı destek)
  • SMB 3.1.1
  • İstemci ile Azure Dosyalar uç noktası arasında 445/TCP bağlantı noktası açık
  • Çok kuyruk desteği için istemci tarafı alıcı tarafı ölçeklendirmenin (RSS) etkin olduğundan emin olun

Örnek bağlama komutu

Aşağıda, Linux ile Çok Kanallı SMB kullanmaya yönelik örnek bir bağlama komutu verilmiştir.

mount -t cifs //<storageaccount>.file.core.windows.net/<share> /mnt/azfiles \
   -o vers=3.1.1,username=<account>,password=<key>,dir_mode=0777,file_mode=0777, \
   multiuser,serverino,actimeo=30,max_channels=4

SMB Çoklu Kanalların doğru yapılandırıldığını doğrulayın.

Çok Kanallı SMB'nin doğru yapılandırıldığını doğrulamak için şu adımları izleyin:

  1. Yeni bir SSD dosya paylaşımı oluşturun veya mevcut bir SSD dosya paylaşımını kullanın.
  2. İstemcinizin SMB Çok Kanallı (bir veya daha fazla ağ adaptöründe alıcı tarafı ölçeklendirme etkinleştirilmiş) desteklediğinden emin olun. Daha fazla detay için Windows dokümantasyonuna bakınız.
  3. İstemcinize bir dosya paylaşımı bağlayın.
  4. Uygulamanızla yük oluşturun. Robocopy /MT gibi bir kopyalama aracı veya Diskspd gibi dosyaları okumak/yazmak için herhangi bir performans aracı yük oluşturabilir.
  5. PowerShell'i yönetici olarak açın ve aşağıdaki komutu çalıştırın: Get-SmbMultichannelConnection | fl
  6. MaxChannels ve CurrentChannels özelliklerini arayın.

Performans karşılaştırması

okuma/yazma iş yükü kalıplarının iki kategorisi vardır: tek iş parçacıklı ve çok iş parçacıklı. çoğu iş yükü birden çok dosya kullanır, ancak iş yükünün bir paylaşımdaki tek bir dosyayla çalıştığı belirli kullanım örnekleri olabilir. Bu bölüm, farklı kullanım örneklerini ve bunların her biri için performans etkisini kapsar. Genel olarak, çoğu iş yükü çok iş parçacıklı olup iş yükünü birden fazla dosyaya dağıtır. Bu nedenle, SMB Multichannel ile önemli performans iyileştirmeleri gözlemlemelidirler.

  • Çok iş parçacıklı/birden çok dosya: İş yükü düzenine bağlı olarak, birden çok kanal üzerinden okuma ve yazma G/Ç'lerinde önemli performans artışı görmeniz gerekir. Performans kazançları IOPS, aktarım hızı ve gecikme süresi açısından 2x ile 4x arasında herhangi bir yerden farklılık gösterir. En iyi performans için bu kategoride SMB Multichannel etkinleştirilmelidir.
  • Çok iş parçacıklı/tek dosya: Bu kategorideki çoğu kullanım senaryosunda, iş yükleri SMB Multichannel’ın etkinleştirilmesinden yararlanır; özellikle de iş yükünün ortalama G/Ç boyutu 16 KiB’den büyükse. Çok Kanallı SMB'den yararlanan birkaç örnek senaryo, tek bir büyük dosyanın yedeklenip kurtarılmasıdır. Çok Kanallı SMB'yi devre dışı bırakmak isteyebileceğiniz bir özel durum, iş yükünüzün küçük G/Ç'lerde ağır olmasıdır. Bu durumda, yaklaşık 10%kadar hafif bir performans kaybı gözlemleyebilirsiniz. Kullanım örneğine bağlı olarak, yükü birden çok dosyaya yaymayı veya özelliği devre dışı bırakmayı göz önünde bulundurun.
  • Tek iş parçacıklı/birden çok dosya veya tek dosya: Çoğu tek iş parçacıklı iş yükü için, paralellik eksikliğinden dolayı minimum performans avantajları vardır. Genellikle SMB Multichannel etkinleştirildiğinde performansta hafif bir düşüş 10% olur. Bu durumda, tek bir özel durum dışında Çok Kanallı SMB'yi devre dışı bırakmak idealdir. Tek iş parçacıklı iş yükü, yükü birden fazla dosyaya dağıtabiliyorsa ve ortalama I/O boyutu 16 KiB'den büyükse, SMB Multichannel sayesinde küçük performans kazanımları elde edilebilir.

Performans testi yapılandırması

Bu makaledeki grafikler için şu yapılandırma kullanılmıştır: Dört kanallı tek bir RSS özellikli NIC'ye sahip tek bir Standart D32s v3 VM. Yük, diskspd.exe kullanılarak, G/Ç derinliği 10 olan, çok iş parçacıklı ve çeşitli G/Ç boyutlarına sahip rastgele G/Ç'lerle oluşturulmuştur.

Çok iş parçacıklı/birden fazla dosya ile Çok Kanallı SMB

Çeşitli Girdi/Çıktı boyutlarına sahip 10 dosyada yük oluşturuldu. Ölçeklendirme test sonuçları, SMB Çok Kanallı etkinleştirildiğinde hem IOPS hem de aktarım hızı test sonuçlarında önemli iyileştirmeler gösterdi. Aşağıdaki diyagramlarda sonuçlar gösterilmiştir:

Performans diyagramı.

Aktarım hızı performansı diyagramı.

  • Tek bir NIC'de okumalar için 2x-3x performans artışı ve yazma işlemleri için hem IOPS hem de aktarım hızı açısından 3x-4x kazançlar gözlemlendi.
  • Çok Kanallı SMB, IOPS ve aktarım hızının tek bir NIC ve dört kanal sınırıyla bile VM sınırlarına erişmesine izin verdi.
  • Çıkış (depolama alanından okuma) ölçülemediğinden, okuma aktarım hızı VM'nin yayımlanan yaklaşık 1,86 GiB/sn sınırını aşarak 2,7 GiB/sn'den daha yüksek bir değer elde edebildi. Giriş (depolamaya yazar) VM aktarım hızı sınırlarına tabidir.
  • Yükün birden çok dosyaya yayılmasına izin verilir ve önemli geliştirmeler yapılabilir.

Bu testte kullanılan örnek komut:

diskspd.exe -W300 -C5 -r -w100 -b4k -t8 -o8 -Sh -d60 -L -c2G -Z1G z:\write0.dat z:\write1.dat z:\write2.dat z:\write3.dat z:\write4.dat z:\write5.dat z:\write6.dat z:\write7.dat z:\write8.dat z:\write9.dat .

Çok Kanallı SMB ile çoklu iş parçacıklarına sahip tek dosya iş yükleri

Yük tek bir 128 GiB dosyasına göre oluşturuldu. Çok Kanallı SMB etkinleştirildiğinde, çok iş parçacıklı/tek dosyalı ölçek artırma testinde çoğu durumda iyileştirmeler gözlemlendi. Aşağıdaki diyagramlarda sonuçlar gösterilmiştir:

IOPS performansı diyagramı.

Tek dosya aktarım hızı performansı diyagramı.

  • Ortalama G/Ç boyutu (16 KiB'den büyük) olan tek bir NIC'de hem okuma hem de yazma işlemlerinde önemli geliştirmeler yapıldı.
  • Daha küçük I/O boyutları için, SMB Multichannel etkinleştirildiğinde performans üzerinde yaklaşık 10% hafif bir etki oluyor. Bu etkiyi, yükü birden fazla dosyaya yayarak veya özelliği devre dışı bırakarak azaltabilirsiniz.
  • Performans yine de tek dosya sınırlarına bağlıdır.

SSD dosya paylaşımları için meta veri önbelleğe alma

Meta verileri önbelleğe alma, SSD Azure dosya paylaşımları için meta veri gecikme süresini azaltan ve meta veri ölçek sınırlarını yükselten bir geliştirmedir. Bu özellik gecikme süresi tutarlılığını ve kullanılabilir IOPS'yi artırır ve ağ aktarım hızını artırır. Hem Windows hem de Linux istemcileri bunu kullanabilir.

Bu özellik aşağıdaki meta veri API'lerinin performansını artırır:

  • Oluştur
  • Kapat
  • Silmek

Şu anda özellik yalnızca SSD dosya paylaşımları için kullanılabilir. Bu özelliğin kullanılmasıyla ilişkili ek maliyet yoktur. SSD dosya paylaşımları için dosya tanıtıcı sınırlarını artırmak için de kaydolabilirsiniz (önizleme)...

Meta veri önbelleğe alma özelliğine kaydolma

Başlamak için Azure portalını veya Azure PowerShell'i kullanarak özelliğe kaydolun.

  1. Azure portalında oturum açın.
  2. Önizleme özellikleri için arama yapın ve seçin.
  3. Tür filtresini seçin ve Microsoft.Storage'ı seçin.
  4. Azure Premium Dosyalar Meta Veri Önbelleği'ni seçin ve ardından Kaydet'i seçin.

Önemli

Önizleme Özellikleri altında listelense de GA SLA'larına saygı duyuyoruz. Özelliği kaydettikten sonra daha fazla yönerge için Azure Dosyalar ekibine başvurun.

Meta veri önbelleğe alma ile performans iyileştirmeleri

Meta veri içeren iş yüklerinin veya kullanım desenlerinin çoğu meta veri önbelleğe alma özelliğinden yararlanabilir. İş yükünüzün meta veriler içerip içermediğini belirlemek için Azure İzleyici'yi kullanarak işlemleri API boyutuna göre bölebilirsiniz.

Meta veri ağırlıklı tipik iş yükleri ve kullanım desenleri şunlardır:

  • Web/uygulama hizmetleri
  • DevOps görevleri
  • Dizin oluşturma/toplu işler
  • Ev dizinleri veya diğer iş yükleri olan ve öncelikli olarak birçok küçük dosya, dizin veya tanıtıcıyla etkileşimde bulunan sanal masaüstleri

Aşağıdaki diyagramlarda olası sonuçlar gösterilmiştir.

Meta veri gecikme süresini azaltma

Gelecekteki aramalar için dosya ve dizin yollarını önbelleğe alarak meta veri önbelleğe alma, sık erişilen dosya ve dizinlerdeki gecikme süresini büyük ölçekte meta veri yoğunluklu iş yükleri için %30 veya daha fazla azaltabilir.

Meta veri önbelleğe alma ile ve olmadan milisaniye cinsinden gecikme süresini gösteren grafik.

Kullanılabilir IOPS'leri artırma

Meta veri önbelleğe alma, uygun ölçekte meta veri ağırlıklı iş yükleri için kullanılabilir IOPS'yi %60'tan fazla artırabilir.

Meta veri önbelleğe alma ile ve olmadan kullanılabilir IOPS'yi gösteren grafik.

Ağ aktarım hızını artırma

Meta veri önbelleğe alma, büyük ölçekte meta veri ağırlıklı iş yükleri için ağ aktarım hızını %60'tan fazla artırabilir.

Meta veri önbelleğe alma ile ve olmadan ağ aktarım hızını gösteren grafik.

Artan dosya tanıtıcı sınırlarına kaydolun (önizleme)

SSD SMB dosya paylaşımları için dosya ve dizin başına en fazla eşzamanlı tanıtıcı sayısını 2.000'den 10.000'e artırmak için Azure portalını veya Azure PowerShell'i kullanarak önizleme özelliğine kaydolun. Sorularınız varsa Azure Dosyalar ekibine başvurun.

  1. Azure portalında oturum açın.
  2. Önizleme özellikleri için arama yapın ve seçin.
  3. Tür filtresini seçin ve Microsoft.Storage'ı seçin.
  4. Azure Premium Dosyalar Artırılmış Maksimum Açık Tanıtıcı Sayısı'nı seçin ve ardından Kaydol seçin.

Sonraki adımlar