Windows Server 2012: SMB Direct

SMB Direct, он же SMB over RDMA, по сути описывает процесс передачи данных протокла SMB через высокоскоростные сетевые адаптеры, поддерживающие стандарт RDMA. RDMA (Remote Direct Memory Access) – стандарт передачи данных между приложениями. Приложения передают данные напрямую из памяти в обход процессора, что позволяет снижать на него нагрузку, и сильно увеличивает скорость передачи данных и производительность приложений.

На текущий момент существует три реализации этого стандарта:

  • InfiniBand
  • Internet Wide Area RDMA Protocol (iWARP)
  • RDMA over Converged Ethernet (RoCE)

Так как стандарт не предусматривает отказоустойчивости, то обычно SMB Direct рассматривают в связке с SMB Multichannel. Это позволяет строить хранилища на базе Windows Server 2012 по скоростям и производительности не уступающие сетям передачи данных (SAN).

Требования:

  • Как минимум два сервера с Windows Server 2012
  • Как минимум один поддерживающий RDMA сетевой адаптер на каждом сервере

Что следует помнить:

  • SMB Direct может использоваться в отказоустойчивом кластере. При этом, нужно удостовериться, что скорости сети для доступа клиентов будет достаточно для работы с SMB Direct. Отказоустойчивый кластер может использовать несколько сетей для клиентского доступа через сетевые адаптеры, поддерживающие RSS и RDMA.
  • Можно использовать SMB Direct на хосте Hyper-V для поддержки Hyper-V over SMB, а так же для того, чтобы предоставить доступ к хранилищу виртуальной машине, которая использует стек хранения Hyper-V. При этом клиент не сможет напрямую работать с RDMA сетевым адаптером. Если подключить такой сетевой адаптер в виртуальный свитч, то виртуальный сетевой адаптер этого свитча не будет поддерживать RDMA.
  • Если отключить SMB Multichannel, то будет отключен и SMB Direct. Связано это с тем, что SMB Multichannel отвечает за определение свойств сетевого адаптера и определяет поддерживает ли он RDMA.
  • SMB Direct не работает на Windows 8. SMB Direct требует поддержки RDMA сетевых адаптеров, которая реализована только в Windows Server 2012.
  • В предыдущих версиях Windows Server нет поддержки RDMA сетевых адаптеров, а следовательно нет поддержки SMB Direct.

SMB Direct по умолчанию включен. SMB клиент автоматически определяет и использует несколько сетевых подключений, если находит соответствующую конфигурацию оборудования.

RDMA для определённого сетевого адаптера отключается следующим образом:

Disable-NetAdapterRdma <name>

Отключение для всех адаптеров на сервере происходит следующим образом:

Set-NetOffloadGlobalSetting -NetworkDirect Disabled

Для того чтобы клиент и сервер перестали использовать RDMA, достаточно отключить его либо на клиенте, либо на сервере.

Включение RDMA для сетевого адаптера происходит следующим образом:

Enable-NetAdapterRDMA <name>

Включение для всех адаптеров на сервере происходит следующим образом:

Set-NetOffloadGlobalSetting -NetworkDirect Enabled

Необходимо включать RDMA и со стороны клиента и со стороны сервера.

Конкретные сценарии и пошаговые настройки можно посмотреть по ссылкам: раз, два и три. Для затравки оставляю очень интересную картинку с результатами измерения производительности при использовании RDMA сетевых адаптеров:

Производительность при использовании RDMA приближается к производительности при использовании локального хранилища данных.

Исходные документы:
SMB2 Remote Direct Memory Access (RDMA) Transport Protocol Specification
Preliminary performance results with Windows Server 2012 Beta and SMB Direct (SMB over RDMA)
Demo at Interop shows SMB Direct at 5.8 Gbytes/sec over Mellanox ConnectX-3 network adapters
Improve Performance of a File Server with SMB Direct

Leave a Reply

Your email address will not be published. Required fields are marked *