Zarządzanie funkcjonalnością SMB Multichannel
Dotyczy: Azure Stack HCI, wersje 22H2 i 21H2; Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2012, Windows 10
Protokół SMB Multichannel jest częścią protokołu bloku komunikatów serwera (SMB) 3.0, co zwiększa wydajność sieci i dostępność serwerów plików.
Funkcja SMB Multichannel umożliwia serwerom plików jednoczesne używanie wielu połączeń sieciowych. Ułatwia agregację przepustowości sieci i odporności na uszkodzenia sieci, gdy dostępnych jest wiele ścieżek między klientem SMB 3.0 a serwerem SMB 3.0. Dzięki temu aplikacje serwerowe mogą w pełni wykorzystać całą dostępną przepustowość sieci i zapewnić im większą odporność na awarie sieci.
Funkcja SMB Multichannel zapewnia następujące możliwości:
Zwiększona przepływność. Serwer plików może jednocześnie przesyłać dodatkowe dane przy użyciu wielu połączeń dla szybkich kart sieciowych lub przy wykorzystaniu wielu kart sieciowych.
Odporność na uszkodzenia sieci. Gdy klienci jednocześnie korzystają z wielu połączeń sieciowych, klienci mogą kontynuować bez przerwy pomimo utraty połączenia sieciowego.
Automatyczna konfiguracja. Funkcja SMB Multichannel automatycznie odnajduje wiele dostępnych ścieżek sieciowych i dynamicznie dodaje połączenia w razie potrzeby.
Wymagania dotyczące funkcji SMB Multichannel
Ponieważ funkcja SMB Multichannel jest domyślnie włączona, nie trzeba instalować dodatkowych ról, usług ról ani funkcji. Klient SMB automatycznie wykrywa i używa wielu połączeń sieciowych po zidentyfikowaniu konfiguracji. Jednak protokół SMB Multichannel ma następujące wymagania:
Co najmniej dwa komputery z systemem operacyjnym Azure Stack HCI, Windows Server lub Windows 10.
Co najmniej jedna z następujących konfiguracji:
Wiele kart sieciowych
Jedna lub więcej kart sieciowych, które wspierają skalowanie odbiorcze (RSS)
Wiele adapterów sieciowych połączonych w zespół (zobacz grupowanie kart sieciowych)
Co najmniej jedna karta sieciowa, która obsługuje zdalny bezpośredni dostęp do pamięci (RDMA)
Konfigurowanie wielokanałowego protokołu SMB
W tej sekcji opisano niektóre opcje konfiguracji wdrażania funkcji SMB Multichannel przy użyciu zestawu kart sieciowych. Te konfiguracje są tylko przykładowymi konfiguracjami. Istnieje wiele innych możliwych konfiguracji, które nie są uwzględnione w tym temacie.
Pojedyncza karta sieciowa z obsługą funkcji RSS
W tej typowej konfiguracji klient SMB i serwer SMB są konfigurowane przy użyciu jednej karty sieciowej Ethernet (10 GbE). Gdy protokół SMB jest wdrażany bez funkcji SMB Multichannel i jeśli istnieje tylko jedna sesja protokołu SMB, protokół SMB tworzy pojedyncze połączenie TCP/IP. W przypadku tylko jednego rdzenia procesora CPU ta konfiguracja z natury prowadzi do przeciążenia, szczególnie w przypadku wykonywania wielu małych operacji we/wy. W związku z tym potencjał wąskiego gardła wydajności jest znaczący.
Większość bieżących kart sieciowych oferuje możliwość o nazwie Skalowanie po stronie odbierającej (RSS), która umożliwia automatyczne rozłożenie wielu połączeń na wiele rdzeni procesora CPU. Jeśli jednak używasz jednego połączenia, funkcja RSS nie może pomóc. Korzystając ze SMB Multichannel z kartą sieciową z obsługą RSS, protokół SMB tworzy wiele połączeń TCP/IP dla tej konkretnej sesji. Ta konfiguracja pozwala uniknąć potencjalnego wąskiego gardła na jednym rdzeniu CPU, jeśli wymaganych jest wiele małych operacji we/wy.
Wiele kart sieciowych
W tej konfiguracji klient SMB i serwer SMB są konfigurowane przy użyciu wielu kart sieciowych o przepustowości 10 GbE. Jeśli protokół SMB jest wdrażany bez funkcji SMB Multichannel i jeśli istnieje tylko jedna sesja SMB, protokół SMB używa jednej z dostępnych kart sieciowych do utworzenia pojedynczego połączenia TCP/IP. W tym scenariuszu nie można agregować przepustowości wielu kart sieciowych; na przykład nie można osiągnąć 2 gb na sekundę (Gb/s) w przypadku używania dwóch kart sieciowych 1 GbE. Istnieje również możliwość awarii, jeśli wybrana karta sieciowa jest odłączona lub wyłączona.
Po wdrożeniu protokołu SMB z funkcją SMB Multichannel, protokół SMB tworzy wiele połączeń TCP/IP dla jednej sesji, przy czym na każdym interfejsie jest co najmniej jedno lub więcej połączeń, jeśli karty sieciowe są zgodne z RSS. Ta konfiguracja umożliwia protokółowi SMB używanie połączonej przepustowości karty sieciowej, która jest dostępna i umożliwia kontynuowanie działania klienta SMB bez przerwy w przypadku awarii karty sieciowej.
Tworzenie zespołu kart interfejsu sieciowego
Usługi Azure Stack HCI i Windows Server obsługują możliwość łączenia wielu kart sieciowych w jedną kartę sieciową przy użyciu funkcji nazywanej tworzeniem zespołu kart sieciowych. Mimo że zespół zawsze zapewnia odporność na uszkodzenia, gdy protokół SMB jest wdrażany bez funkcji SMB Multichannel, protokół SMB tworzy tylko jedno połączenie TCP/IP dla każdego zespołu. Ta konfiguracja prowadzi do ograniczeń zarówno liczby rdzeni procesora CPU, które są zaangażowane, jak i maksymalnego wykorzystania przepustowości zespołu.
Po wdrożeniu protokołu SMB z funkcją SMB Multichannel protokół SMB tworzy wiele połączeń TCP/IP dla jednej sesji w celu uzyskania lepszej równowagi między rdzeniami procesora CPU i lepszego wykorzystania dostępnej przepustowości. Zespół kart interfejsu sieciowego nadal oferuje funkcję przełączania awaryjnego, która działa szybciej niż samo SMB Multichannel. Zalecamy również łączenie kart sieciowych, ponieważ oferuje ono funkcje failover dla innych obciążeń, które nie korzystają z protokołu SMB, gdyż te obciążenia nie mogą korzystać z możliwości trybu failover protokołu SMB Multichannel.
Jeśli używasz dedykowanego zestawu kart sieciowych dla ruchu Storage Spaces Direct, podobnie jak czasami w przypadku Azure Stack HCI, łączenie w zespół tych kart jest ściśle opcjonalne — nie zapewnia żadnych znaczących korzyści ani wad.
Ważny
W systemie Windows Server 2012 R2 i starszych nie należy używać teamingu kart sieciowych, jeśli zamierzasz używać funkcji RDMA kart sieciowych. W tych systemach operacyjnych zespół kart sieciowych obsługujących funkcję RDMA jest zawsze zgłaszany jako bez funkcji RDMA, ponieważ tworzenie zespołu wyłącza funkcję RDMA karty sieciowej.
Jedna lub wiele kart sieciowych obsługujących funkcję RDMA
Funkcja SMB Multichannel wykrywa możliwości RDMA kart sieciowych, co umożliwia funkcję SMB Direct zwaną SMB Direct over RDMA. Bez protokołu SMB Multichannel, protokół SMB używa standardowych połączeń TCP/IP z kartami sieciowymi wyposażonymi w RDMA, gdzie wszystkie karty sieciowe zapewniają stos TCP/IP, który działa równolegle z nowym stosem RDMA.
Po wdrożeniu protokołu SMB za pomocą funkcji SMB Multichannel protokół SMB wykrywa funkcję RDMA karty sieciowej i tworzy wiele połączeń RDMA dla tej pojedynczej sesji z dwoma połączeniami RDMA na interfejs. Ta konfiguracja umożliwia protokółowi SMB korzystanie z wysokiej przepływności, małych opóźnień i niskiego wykorzystania procesora CPU oferowanych przez karty sieciowe obsługujące funkcję RDMA. Zapewnia również odporność na uszkodzenia w przypadku korzystania z wielu interfejsów RDMA.
Ważny
Po utworzeniu połączenia RDMA połączenie TCP/IP dla oryginalnego negocjowania protokołu nie jest już używane. Jednak to połączenie jest utrzymywane w przypadku niepowodzenia innego połączenia RDMA.
Zgodność kart sieciowych obsługujących funkcję SMB Multichannel, kart sieciowych z obsługą RDMA oraz zgodność z agregacją interfejsów sieciowych (NIC teaming).
W poniższej tabeli podsumowano różne możliwości, które są dostępne podczas łączenia funkcji SMB Multichannel, RDMA (SMB Direct) i tworzenia zespołu kart interfejsu sieciowego.
Konfiguracja | Przepustowość | Odporność na uszkodzenia protokołu SMB | Odporność na uszkodzenia dla systemów innych niż SMB | Mniejsze wykorzystanie procesora CPU |
---|---|---|---|---|
Pojedyncza karta sieciowa (bez rss) | * | |||
Wiele kart sieciowych (bez funkcji RSS) | ** | * | ||
Wiele kart sieciowych (bez RSS) z łączeniem interfejsów sieciowych | ** | ** | * | |
Pojedynczy adapter sieciowy z RSS | * | |||
Wiele kart sieciowych z funkcją RSS | ** | * | ||
Wiele adapterów sieciowych z funkcją RSS i zespołowaniem kart sieciowych. | ** | ** | * | |
Jedna karta sieciowa obsługująca RDMA | * | * | ||
Wiele kart sieciowych obsługujących funkcję RDMA | *** | * | * | |
Wiele kart sieciowych obsługujących funkcję RDMA z funkcją grupowania kart sieciowych | *** | ** | * | * |
Jeśli korzystasz z systemu Windows Server 2016 lub nowszego, idealnym rozwiązaniem jest użycie wielu kart sieciowych obsługujących funkcję RDMA i połączenie zespołu kart interfejsu sieciowego z funkcją SMB Multichannel. Ta kombinacja zapewnia najlepszą przepływność, zapewnia odporność na uszkodzenia aplikacji korzystających z protokołu SMB i innych protokołów oraz ma najniższy wpływ na procesor.
Jak wspomniano powyżej, w przypadku korzystania z kart sieciowych obsługujących funkcję RDMA w systemie Windows Server 2012 R2 lub starszym tworzenie zespołu kart interfejsu sieciowego nie jest dobrym rozwiązaniem, ponieważ wyłącza funkcję RDMA karty sieciowej.
Przykładowe konfiguracje bez protokołu SMB Multichannel
Jeśli planujesz używać jednej karty sieciowej bez funkcji RSS, nie korzystasz z wielu połączeń sieciowych, dlatego nie jest używany protokół SMB Multichannel. Ponadto jeśli planujesz używać kart sieciowych o różnych szybkościach, funkcja SMB Multichannel automatycznie wybiera najszybszą kartę sieciową. Dzieje się tak, ponieważ karty sieciowe, które są tego samego typu (takie jak RDMA, RSS lub inne) i mają tę samą szybkość, są jednocześnie wykorzystywane przez funkcję SMB Multichannel. Wolniejsze karty sieciowe są bezczynne.
Wyłączanie funkcji SMB Multichannel
Zazwyczaj nie trzeba wyłączać funkcji SMB Multichannel. Jeśli jednak chcesz wyłączyć funkcję SMB Multichannel, na przykład w środowisku testowym, użyj następujących procedur programu Windows PowerShell.
Najpierw połącz się z jednym z serwerów, otwierając sesję programu PowerShell:
Enter-PSSession <server-name>
Aby wyłączyć funkcję SMB Multichannel po stronie serwera, użyj następującego polecenia cmdlet:
Set-SmbServerConfiguration -EnableMultiChannel $false
Aby wyłączyć funkcję SMB Multichannel po stronie klienta, użyj następującego polecenia cmdlet:
Set-SmbClientConfiguration -EnableMultiChannel $false
Notatka
Wyłączenie funkcji SMB Multichannel na kliencie lub serwerze blokuje korzystanie z niego obu systemów.
Ponowne włączanie funkcji SMB Multichannel
Jeśli wyłączono funkcję SMB Multichannel i chcesz ją ponownie włączyć, skorzystaj z poniższych procedur.
Aby ponownie włączyć funkcję SMB Multichannel po stronie serwera, użyj następującego polecenia cmdlet:
Set-SmbServerConfiguration -EnableMultiChannel $true
Aby ponownie włączyć funkcję SMB Multichannel po stronie klienta, użyj następującego polecenia cmdlet:
Set-SmbClientConfiguration -EnableMultiChannel $true
Notatka
Należy ponownie włączyć funkcję SMB Multichannel zarówno na kliencie, jak i serwerze, aby ponownie go użyć.
Testowanie wielokanałowego protokołu SMB
W tej sekcji opisano niektóre scenariusze testowania wielokanałowego protokołu SMB, w tym porównanie kopiowania pliku z protokołem SMB Multichannel i bez niego, a także celowe spowodowanie awarii karty sieciowej podczas operacji kopiowania plików.
Porównywanie kopii pliku z funkcją SMB Multichannel i bez protokołu SMB
Aby zmierzyć zwiększoną przepływność zapewnianą przez funkcję SMB Multichannel, wykonaj następujące testy. Uruchom ponownie zarówno serwer, jak i klienta przed każdym testem, aby upewnić się, że działają one w podobnych warunkach.
Skonfiguruj funkcję SMB Multichannel przy użyciu jednej z wcześniej opisanych konfiguracji.
Zmierz czas potrzebny na wykonanie długotrwałej operacji kopiowania plików przy użyciu funkcji SMB Multichannel.
Wyłącz funkcję SMB Multichannel. Aby uzyskać instrukcje, zobacz Disable SMB Multichannel.
Zmierz czas potrzebny na wykonanie tej samej kopii pliku bez funkcji SMB Multichannel.
Ponownie włącz funkcję SMB Multichannel. Aby uzyskać instrukcje, zobacz Ponowne włączanie funkcji SMB Multichannel.
Porównaj dwa wyniki.
Ważny
Aby uniknąć wpływu buforowania na wydajność, najpierw skopiuj dużą ilość danych, która przekracza rozmiar dostępnej pamięci. Następnie ponownie wykonaj operację kopiowania z pierwszą operacją kopiowania służącą jako rozgrzewka. Zmierz czas tylko drugiej operacji kopiowania.
Spowoduj awarię jednej z kart sieciowych podczas kopiowania pliku za pomocą SMB Multichannel
Aby potwierdzić możliwość trybu failover protokołu SMB Multichannel:
Upewnij się, że funkcja SMB Multichannel działa w konfiguracji wielu adapterów sieciowych.
Wykonaj długotrwałą operację kopiowania plików.
Gdy operacja kopiowania plików jest uruchomiona, symuluj awarię jednej ze ścieżek sieciowych, odłączając jeden z kabli lub wyłączając jedną z kart sieciowych.
Upewnij się, że kopia pliku nadal korzysta z pozostałego adaptera sieciowego i działa bez błędów kopiowania.
Upewnij się, że nie ma żadnych innych obciążeń, które używają rozłączonej ścieżki połączenia sieciowego. Ten środek ostrożności pozwala na uniknięcie potencjalnej awarii w obciążeniach, które nie korzystają z funkcji SMB Multichannel.
Sprawdź, czy funkcja SMB Multichannel działa
Użyj poniższej procedury, aby sprawdzić, czy funkcja SMB Multichannel działa.
Aby sprawdzić, czy konfiguracja karty sieciowej jest poprawna, wpisz następujące polecenie w programie Windows PowerShell na serwerze SMB i kliencie SMB.
Get-NetAdapter Get-NetAdapterRSS Get-NetAdapterRDMA Get-NetAdapterHardwareInfo
Aby sprawdzić, czy funkcja SMB Multichannel jest włączona, upewnij się, że protokół SMB poprawnie identyfikuje karty sieciowe i czy funkcje RSS i RDMA karty sieciowej zostały prawidłowo zidentyfikowane, wykonaj następujące czynności:
Na kliencie SMB wpisz następujące polecenie w programie Windows PowerShell:
Get-SmbClientConfiguration | Select EnableMultichannel Get-SmbClientNetworkInterface
Na serwerze SMB wpisz następujące polecenie w programie Windows PowerShell:
Get-SmbServerConfiguration | Select EnableMultichannel Get-SmbServerNetworkInterface
Na kliencie SMB wykonaj długotrwałą operację kopiowania plików, która tworzy bieżącą sesję z serwerem SMB. Gdy operacja kopiowania jest uruchomiona, wpisz następujące polecenie w programie Windows PowerShell, aby sprawdzić, czy połączenie korzysta z odpowiedniej wersji protokołu SMB i że funkcja SMB Multichannel działa.
Get-SmbConnection Get-SmbMultichannelConnection Get-SmbMultichannelConnection -IncludeNotSelected
Następne kroki
Aby uzyskać powiązane informacje, zobacz również: