Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, ağ dosya sistemi (NFS) Azure dosya paylaşımları için performansı nasıl geliştirebileceğiniz açıklanmaktadır.
Şunlar için geçerlidir:
| Yönetim modeli | Faturalama modeli | Medya katmanı | Yedeklilik | Küçük ve Orta Büyüklükteki İşletme (SMB) | Ağ Dosya Sistemi (NFS) |
|---|---|---|---|---|---|
| Microsoft.Storage | Sağlanan versiyon 2 | SSD (üst düzey) | Yerel (LRS) |
|
|
| Microsoft.Storage | Sağlanan versiyon 2 | SSD (üst düzey) | Bölge (ZRS) |
|
|
| Microsoft.Storage | Sağlanan versiyon 2 | HDD (standart) | Yerel (LRS) |
|
|
| Microsoft.Storage | Sağlanan versiyon 2 | HDD (standart) | Bölge (ZRS) |
|
|
| Microsoft.Storage | Sağlanan versiyon 2 | HDD (standart) | Coğrafi (GRS) |
|
|
| Microsoft.Storage | Sağlanan versiyon 2 | HDD (standart) | GeoZone (GZRS) |
|
|
| Microsoft.Storage | Tahsis edilen v1 | SSD (üst düzey) | Yerel (LRS) |
|
|
| Microsoft.Storage | Tahsis edilen v1 | SSD (üst düzey) | Bölge (ZRS) |
|
|
| Microsoft.Storage | Kullandıkça ödeme yap | HDD (standart) | Yerel (LRS) |
|
|
| Microsoft.Storage | Kullandıkça ödeme yap | HDD (standart) | Bölge (ZRS) |
|
|
| Microsoft.Storage | Kullandıkça ödeme yap | HDD (standart) | Coğrafi (GRS) |
|
|
| Microsoft.Storage | Kullandıkça ödeme yap | HDD (standart) | GeoZone (GZRS) |
|
|
Okuma aktarım hızını geliştirmek için önceden okuma boyutunu artırın
Linux'taki read_ahead_kb çekirdek parametresi, sıralı okuma işlemi sırasında "önceden okunması" veya önceden eklenmesi gereken veri miktarını temsil eder. 5.4'den önceki Linux çekirdek sürümleri, önceden okuma ayarını, istemci tarafı bağlama seçeneğini temsil eden okuma arabellek boyutunun bağlı dosya sisteminin rsize15 katı olarak ayarlar. Bu, çoğu durumda istemci sıralı okuma aktarım hızını geliştirmek için önceden okuma değerini yeterince yüksek bir değere ayarlar.
Ancak Linux çekirdek sürümü 5.4'le başlayarak Linux NFS istemcisi 128 KiB varsayılan read_ahead_kb değerini kullanır. Bu küçük değer, büyük dosyalar için okuma aktarım hızı miktarını azaltabilir. Linux sürümlerinden 128 KiB varsayılanı olan sürümlere daha büyük bir okuma değeriyle yükselten müşteriler sıralı okuma performansında düşüş yaşayabilir.
Linux çekirdekleri 5.4 veya üzeri için, gelişmiş performans için kalıcı olarak 15 MiB olarak ayarlamanızı read_ahead_kb öneririz.
Bu değeri değiştirmek için Linux çekirdek cihaz yöneticisi udev'de bir kural ekleyerek okuma boyutunu ayarlayın. Şu adımları izleyin:
Bir metin düzenleyicisinde, aşağıdaki metni girip kaydederek /etc/udev/rules.d/99-nfs.rules dosyasını oluşturun:
SUBSYSTEM=="bdi" \ , ACTION=="add" \ , PROGRAM="/usr/bin/awk -v bdi=$kernel 'BEGIN{ret=1} {if ($4 == bdi) {ret=0}} END{exit ret}' /proc/fs/nfsfs/volumes" \ , ATTR{read_ahead_kb}="15360"Konsolda udevadm komutunu süper kullanıcı olarak çalıştırıp kural dosyalarını ve diğer veritabanlarını yeniden yükleyerek udev kuralını uygulayın. Udev'nin yeni dosyadan haberdar olmasını sağlamak için bu komutu yalnızca bir kez çalıştırmanız gerekir.
sudo udevadm control --reload
NFS nconnect
NFS nconnect, istemci ile NFS dosya paylaşımınız arasında birden çok TCP bağlantısı kullanmanıza olanak tanıyan bir NFS dosya paylaşımları için istemci tarafı bağlama seçeneğidir.
Fayda -ları
Nconnect ile toplam sahip olma maliyetini (TCO) azaltmak için daha az istemci makinesi kullanarak performansı büyük ölçekte artırabilirsiniz. nconnect özelliği, tek veya birden çok istemci kullanarak bir veya daha fazla NIC üzerinde birden çok TCP kanalı kullanarak performansı artırır. Nconnect olmadan, en büyük SSD dosya paylaşımı sağlama boyutu tarafından sunulan bant genişliği ölçek sınırlarını (10 GiB / sn) elde etmek için yaklaşık 20 istemci makineye ihtiyacınız olacaktır. nconnect ile yalnızca 6-7 istemci kullanarak bu sınırları elde edebilir ve işlem maliyetlerini yaklaşık 70% azaltırken, saniyede G/Ç işlemlerinde (IOPS) ve büyük ölçekte aktarım hızında önemli geliştirmeler sağlayabilirsiniz. Aşağıdaki tabloya bakın.
| Metrik (işlem) | G/Ç boyutu | Performans iyileştirmesi |
|---|---|---|
| IOPS (yazma) | 64 KiB, 1.024 KiB | 3x |
| IOPS (okuma) | Tüm G/Ç boyutları | 2-4x |
| Aktarım hızı (yazma) | 64 KiB, 1.024 KiB | 3x |
| Aktarım hızı (okuma) | Tüm G/Ç boyutları | 2-4x |
Önkoşullar
- En son Linux dağıtımları nconnect'i tam olarak destekler. Eski Linux dağıtımları için Linux çekirdek sürümünün 5.3 veya üzeri olduğundan emin olun.
- Bağlama başına yapılandırma yalnızca özel uç nokta üzerinden depolama hesabı başına tek bir dosya paylaşımı kullanıldığında desteklenir.
Performans etkisi
Linux istemcilerinde uygun ölçekte NFS Azure dosya paylaşımlarıyla nconnect bağlama seçeneğini kullanırken aşağıdaki performans sonuçlarını elde ettik. Bu sonuçları nasıl elde ettiğimiz hakkında daha fazla bilgi için bkz. Performans testi yapılandırması.
Öneriler
'den nconnecten iyi sonuçları almak için bu önerileri izleyin.
Ayarla nconnect=4
Azure Dosyalar nconnect'in en fazla 16 ayarına kadar ayarlanmasını desteklese de, bağlama seçeneklerini en uygun nconnect=4 ayarıyla yapılandırmanızı öneririz. Şu anda, nconnect'in Azure Dosyalar uygulaması için dört kanalın ötesinde bir kazanç yoktur. Aslında, tek bir istemciden tek bir Azure dosya paylaşımına dört kanalın aşılması TCP ağ doygunluğu nedeniyle performansı olumsuz etkileyebilir.
Sanal makineleri dikkatle boyutlandırma
İş yükü gereksinimlerinize bağlı olarak, istemci sanal makinelerinin (VM) beklenen ağ bant genişliğiyle kısıtlanmaması için doğru şekilde boyutlandırılması önemlidir. Beklenen ağ aktarım hızını elde etmek için birden çok ağ arabirimi denetleyicisine (NIC) ihtiyacınız yoktur. Azure Dosyalar ile genel amaçlı VM'leri kullanmak yaygın olsa da, iş yükü gereksinimlerinize ve bölge kullanılabilirliğine bağlı olarak çeşitli VM türleri kullanılabilir. Daha fazla bilgi için bkz. Azure VM Seçicisi.
Kuyruk derinliğini 64'ten küçük veya buna eşit tutun
Kuyruk derinliği, bir depolama kaynağının hizmet verebileceği bekleyen G/Ç isteklerinin sayısıdır. Daha fazla performans kazancı göremeyeceğiniz için en uygun kuyruk derinliği olan 64'ün aşılması önerilmez. Daha fazla bilgi için bkz . Kuyruk derinliği.
Her bir bağlama yapılandırması için
Bir iş yükü, tek bir istemciden farklı nconnect ayarlarına sahip bir veya daha fazla depolama hesabıyla birden fazla paylaşımı bağlamayı gerektiriyorsa, genel uç nokta üzerinden bağlanırken bu ayarların kalıcı olacağını garanti edemeyiz. Bağlama başına yapılandırma yalnızca Senaryo 1'de açıklandığı gibi özel uç nokta üzerinden depolama hesabı başına tek bir Azure dosya paylaşımı kullanıldığında desteklenir.
Senaryo 1: Birden çok depolama hesabına sahip özel uç nokta üzerinden bağlama yapılandırması başına (desteklenir)
- StorageAccount.file.core.windows.net = 10.10.10.10
- StorageAccount2.file.core.windows.net = 10.10.10.11
Mount StorageAccount.file.core.windows.net:/StorageAccount/FileShare1 nconnect=4Mount StorageAccount2.file.core.windows.net:/StorageAccount2/FileShare1
Senaryo 2: Genel uç nokta üzerinden bağlama yapılandırması başına (desteklenmez)
- StorageAccount.file.core.windows.net = 52.239.238.8
- StorageAccount2.file.core.windows.net = 52.239.238.7
Mount StorageAccount.file.core.windows.net:/StorageAccount/FileShare1 nconnect=4Mount StorageAccount.file.core.windows.net:/StorageAccount/FileShare2Mount StorageAccount2.file.core.windows.net:/StorageAccount2/FileShare1
Uyarı
Depolama hesabı farklı bir IP adresine çözümlense bile, genel uç noktalar statik adresler olmadığından adresin kalıcı olmasını garanti edemiyoruz.
Senaryo 3: Tek depolama hesabında birden çok paylaşıma sahip özel uç nokta üzerinden bağlama yapılandırması başına (desteklenmez)
- StorageAccount.file.core.windows.net = 10.10.10.10
Mount StorageAccount.file.core.windows.net:/StorageAccount/FileShare1 nconnect=4Mount StorageAccount.file.core.windows.net:/StorageAccount/FileShare2Mount StorageAccount.file.core.windows.net:/StorageAccount/FileShare3
Performans testi yapılandırması
Bu makalede özetlenen sonuçları elde etmek ve ölçmek için aşağıdaki kaynakları ve karşılaştırma araçlarını kullandık.
- Tek istemci: Tek NIC ile Azure VM (DSv4 Serisi)
- İŞLETİM SİSTEMİ: Linux (Ubuntu 20.40)
-
NFS depolama alanı: SSD dosya paylaşımı (sağlanan 30 TiB, ayarla
nconnect=4)
| Boyut | vCPU | Bellek | Geçici depolama (SSD) | Maksimum veri diskleri | Maksimum NIC | Beklenen ağ bant genişliği |
|---|---|---|---|---|---|---|
| Standard_D16_v4 | 16 | 64 GiB | Yalnızca uzak depolama alanı | 32 | 8 | 12.500 Mbps |
Karşılaştırma araçları ve testleri
Hem karşılaştırma hem de stres/donanım doğrulaması için kullanılan ücretsiz, açık kaynaklı bir disk G/Ç aracı olan Esnek G/Ç Test Aracı'nı (FIO) kullandık. FIO'yu yüklemek için, seçtiğiniz platform için yüklemek üzere FIO README dosyasındaki İkili Paketler bölümünü izleyin.
Bu testler rastgele G/Ç erişim desenlerine odaklanırken, sıralı G/Ç kullanırken de benzer sonuçlar elde edersiniz.
Yüksek IOPS: 100% okuma
4k G/Ç boyutu - rastgele okuma - 64 kuyruk derinliği
fio --ioengine=libaio --direct=1 --nrfiles=4 --numjobs=1 --runtime=1800 --time_based --bs=4k --iodepth=64 --filesize=4G --rw=randread --group_reporting --ramp_time=300
8k G/Ç boyutu - rastgele okuma - 64 kuyruk uzunluğu
fio --ioengine=libaio --direct=1 --nrfiles=4 --numjobs=1 --runtime=1800 --time_based --bs=8k --iodepth=64 --filesize=4G --rw=randread --group_reporting --ramp_time=300
Yüksek aktarım hızı: 100% okuma
64 KiB G/Ç boyutu - rastgele okuma - 64 kuyruk derinliği
fio --ioengine=libaio --direct=1 --nrfiles=4 --numjobs=1 --runtime=1800 --time_based --bs=64k --iodepth=64 --filesize=4G --rw=randread --group_reporting --ramp_time=300
1.024 KiB G/Ç boyutu - 100% rastgele okuma - 64 kuyruk derinliği
fio --ioengine=libaio --direct=1 --nrfiles=4 --numjobs=1 --runtime=1800 --time_based --bs=1024k --iodepth=64 --filesize=4G --rw=randread --group_reporting --ramp_time=300
Yüksek IOPS: 100% yazma
4 KiB I/O boyutu - 100% rastgele yazma - 64 kuyruk derinliği
fio --ioengine=libaio --direct=1 --nrfiles=4 --numjobs=1 --runtime=1800 --time_based --bs=4k --iodepth=64 --filesize=4G --rw=randwrite --group_reporting --ramp_time=300
8 KiB G/Ç boyutu - 100% rastgele yazma - 64 kuyruk derinliği
fio --ioengine=libaio --direct=1 --nrfiles=4 --numjobs=1 --runtime=1800 --time_based --bs=8k --iodepth=64 --filesize=4G --rw=randwrite --group_reporting --ramp_time=300
Yüksek aktarım hızı: 100% yazma
64 KiB G/Ç boyutu - 100% rastgele yazma - 64 kuyruk derinliği
fio --ioengine=libaio --direct=1 --nrfiles=4 --numjobs=1 --runtime=1800 --time_based --bs=64k --iodepth=64 --filesize=4G --rw=randwrite --group_reporting --ramp_time=300
1024 KiB G/Ç boyutu - 100% rastgele yazma - 64 kuyruk derinliği
fio --ioengine=libaio --direct=1 --nrfiles=4 --numjobs=1 --runtime=1800 --time_based --bs=1024k --iodepth=64 --filesize=4G --rw=randwrite --group_reporting --ramp_time=300
Performansla ilgili dikkat edilmesi gerekenler nconnect
Bir bağlama seçeneği olarak nconnect'ü kullanırken, aşağıdaki özelliklere sahip iş yüklerini yakından değerlendirmeniz gerekir:
- Tek iş parçacıklı ve/veya düşük kuyruk derinliği (16'dan az) kullanan gecikmeye duyarlı yazma iş yükleri
- Tek iş parçacıklı ve/veya daha küçük G/Ç boyutlarıyla birlikte düşük kuyruk derinliği kullanan gecikmeye duyarlı okuma iş yükleri
Tüm iş yükleri için yüksek ölçekli IOPS veya tüm performans gerekmez. Daha küçük ölçekli iş yükleri nconnect için anlamlı olmayabilir. İş yükünüz için avantajlı olup olmadığına nconnect karar vermek için aşağıdaki tabloyu kullanın. Yeşil renkle vurgulanan senaryolar önerilirken, kırmızıyla vurgulanan senaryolar önerilmez. Sarı renkle vurgulanan senaryolar nötr.