VMware ESXi 5.Х и NetApp ONTAP 8: тюнинг

    В продолжение темы об оптимизации хоста для взаимодействия с СХД NetApp FAS, эта статья будет посвещена оптимизации производительности VMWare ESXi, предыдущие статьи были посвящены тюнингу ОС Linux и Windows в среде SAN. Компания NetApp давно тесно сотрудничает с VMware, подтверждением тому может стать тот факт, что нашумевшая технология vVOL была реализована одной из первых ещё в релизе Clustered Data ONTAP 8.2.1 (Август 2014), в то время как vSphere 6.0 ещё даже не выпущен. В связи с чем системы хранения NetApp FAS крайне популярны в этом окружении. Часть про Disk Alignment будет полезна не только владельцам NetApp.

    Настройки VMWare ESXi можно разделить на следующие части:

    • Оптимизация гипервизора
    • Оптимизация гостевой ОС (GOS)
    • Оптимальные настройки SAN (FC/FCoE и iSCSI)
    • Настройки NAS (NFS)
    • Проверка совместимости оборудования, прошивок и ПО


    Для поиска узкого места обычно выполняют методику последовательного исключения. Предлагаю перво-наперво начать с СХД. А дальше двигаться СХД -> Сеть (Ethernet / FC) -> Хост ( Windows / Linux / VMware ESXi 5.Х и ESXi 6.X ) -> Приложение.

    Есть пару основных документов, на которые необходимо опираться при настройке VMware + NetApp:

    TR-4068: VMware vSphere 5 on NetApp Clustered Data ONTAP
    TR 3839: Использование NFS в VMware (7-Mode)
    TR-3749: Руководство по наилучшим способам использования систем NetApp с VMware vSphere (7-Mode)
    TR-3802: Ethernet для систем хранения: наилучшие методы (7-Mode)

    Hypervisor


    Отдавать гостевой ОС все ресурсы сервера не стоит, во-первых гипервизору нужно оставить минимум 4ГБ ОЗУ, во-вторых иногда наблюдается обратный эффект при добавлении ресурсов гостевой ОС, это нужно подбирать эмпирическим путём.

    SWAP

    Этот раздел вынесу в отдельный пост.

    Гостевые ОС


    Тюнинг настроек нужен для двух целей:
    • Оптимизация скорости рабобты гостевых ОС
    • Нормальная работа в HA паре, при отказе одного контроллера (takeover) и возобновлении его работы (takeover)


    Disk alignment

    Для оптимизации производительности, возможно, потребуется устранить disk misalignment. Misalignment можно получить в двух случаях:
    1. из-за неправильно выбранной геометрии луна при его создании в СХД. Такую ошибку можно создать только в SAN окружении
    2. внутри виртуальных дисков виртаульных машин. Может быть как в SAN так и в NAS окружении

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


    Первый случай это когда есть misalignment VMFS датастора относительно хранилища. Для устранения первого типа проблемы необходимо создать лун с правильной геометрией и переместить туда виртуальные машины.


    Вторую ситуацию, со смещенными разделами файловой системы внутри гостевой ОС относительно файловой структуры WAFL можно получить в старых дистрибутивах Linux и ОС Windows 2003 и старее. Как правило это связано с не оптимальным размещением таблицы разделов MBR или с машинами, которые были конвертированы из физических в виртуальные. Проверить это можно в гостевых ОС Windows при помощи утилиты dmdiag.exe -v (значение поля Rel Sec должно быть кратно 4KB на WAFL). Подробнее о диагностике misalignment для Windows машин. Также размещение файловой системы на диске может быть проверено при помощи утилиты mbralign для ESXi хоста, входящей в состав NetApp Host Utilities version 5.x и VSC. Подробнее как устранять такие ситуации описано в TR-3747 Best Practices for File System Alignment in Virtual Environments.


    Ну и конечно же можно получить misalignment сразу на двух уровнях: как на уровне VMFS датастора, так и на уровне файловой системы гостевой ОС. Подробнее о поиске misalignment со стороны хранилища NetApp FAS.


    Пример для файловой системы VMFS3. В новосозданной VMFS5 (не апгрейд с VMFS3) блок имеет размер 1MB с суб-блоками 8KB.

    takeover/giveback

    Для отработки при takeover/giveback в HA паре, необходимо настроить правильные таймауты гостевых ОС:
    ОС Historical Guest OS Tuning for SAN: ESXi 3.х/4.х и Data ONTAP 7.3/8.0 (SAN) Updated Guest OS Tuning for SAN: ESXi 5 и новее, или Data ONTAP 8.1 и новее (SAN)
    Windows disk timeout = 190 disk timeout = 60
    Linux disk timeout = 190 disk timeout = 60
    Solaris disk timeout = 190; busy retry = 300; not ready retry = 300; reset retry = 30; max. throttle = 32; min. throttle = 8 disk timeout = 60; busy retry = 300; not ready retry = 300; reset retry = 30; max. throttle = 32; min. throttle = 8; corrected VID/PID specification

    Дефолтные значения ОС в случае использования NFS удовлетворительны, и настройки для гостевых ОС не нужно менять.

    Устанавливаются эти значения вручную или при помощи скриптов доступных в составе VSC.
    Windows: Установить значение задержки доступа к диску 60 сек при помощи реестра (задаётся в секундах, в шеснадцатиричной форме).
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Disk]
    "TimeOutValue"=dword:0000003c

    Linux: Установить значение задержки доступа к диску 60 сек при помощи создания udev правила (задаётся в секундах, в шеснадцатиричной форме).
    DRIVERS=="sd", SYSFS{TYPE}=="0|7|14", RUN+="/bin/sh -c 'echo 60 > /sys$$DEVPATH/timeout'"
    (Linux дистрибутивы могут иметь разное расположение установки правил udev). VMware Tools для гостевой Linux ОС автоматически устанавливает udev правило со значением задержки для виртуального диска равное 180 секунд. Вы можете запустить команду grep для «VMware» vendor ID в папке с правилами udev чтобы найти скрипт который устанваливает это значение и изменить его при необходимости. Не забудьте проверить это значение.

    Solaris: Устанавить значение 60 сек задержки (задаётся в секундах, в шеснадцатиричной форме) для диска можно в файле /etc/system:
    set sd:sd_io_time=0x3c

    Дополнительные настройки могут быть внесены в файл /kernel/drv/sd.conf:
    Solaris 10.0 GA — Solaris 10u6:
    
    sd-config-list="NETAPP  LUN","netapp-sd-config",
    "VMware  Virtual","netapp-sd-config";
    netapp-sd-config=1,0x9c01,32,0,0,0,0,0,0,0,0,0,300,300,30,0,0,8,0,0;
    

    Solaris 10u7 и новее и Solaris 11:
    
    sd-config-list= "NETAPP  LUN","physical-block-size:4096,retries-busy:300,retries-timeout:16,retries-notready:300,retries-reset:30,throttle-max:32,throttle-min:8",
    "VMware  Virtual","physical-block-size:4096,retries-busy:300,retries-timeout:16,retries-notready:300,retries-reset:30,throttle-max:32,throttle-min:8";
    

    Обратите внимение: на два пробела между vendor ID NETAPP и ID LUN, также как и между словами «VMware» и «Virtual» в конфиге выше.

    Настройки FC/FCoE Switch Zoning


    Подробнее о рекомендациях зонирования для NetApp в картинках.

    ALUA

    Для систем NetApp FAS с 7-Mode ALUA рекомендован для FC/FCoE. А для Систем NetApp FAS с cDOT ALUA рекомендован к применению для всех блочных протоколов: iSCSI/FC/FCoE.
    ESXi определит включён ли ALUA. Если ALUA включён, Storage Array Type plug-in будет VMW_SATP_ALUA, если ALUA выключен, то рекомендуется использовать политику балансировки путей Fixed + необходимо указать вручную оптимальные/предпочтительные пути. В случае использования ALUA, разрешается к использованию алгоритм Most Recently Used или Round Robin — любой.


    Round Robin будет более производительнее если путей больше чем один к контроллеру. В случае использования Microsoft Cluster + RDM дисков к применению рекомендован механизм балансировки Most Recently Used.

    Ниже таблица рекомендуемых настроек балансировки нагрузки. Подробнее о логике работы NetApp FAS, ALUA и балансировке нагрузки для блочных протоколов.
    Mode ALUA Protocol Политика ESXi
    Балансировка путей ESXi
    7-Mode 7.x/8.x Enabled FC/FCoE VMW_SATP_ALUA Most Recently Used или Round Robin
    7-Mode 7.x/8.x Disabled FC/FCoE AA SATP Fixed PSP (выбрать оптимальные пути)
    7-Mode 7.x/8.x Disabled iSCSI AA SATP Round Robin PSP
    cDOT 8.x Enabled FC/FCoE/iSCSI VMW_SATP_ALUA Most Recently Used или Round Robin


    Проверим применившуюся политику к проверяемому луну/датастору
    
    ~ # esxcli storage nmp device list
    naa.60a980004434766d452445797451376b
       Device Display Name: NETAPP Fibre Channel Disk (naa.60a980004434766d452445797451376b)
       Storage Array Type: VMW_SATP_ALUA
       Storage Array Type Device Config: {implicit_support=on;explicit_support=off; explicit_allow=on;alua_followover=on;{TPG_id=1,TPG_state=ANO}{TPG_id=0,TPG_state=AO}}
       Path Selection Policy: VMW_PSP_RR
       Path Selection Policy Device Config: {policy=rr,iops=1000,bytes=10485760,useANO=0; lastPathIndex=0: NumIOsPending=0,numBytesPending=0}
       Path Selection Policy Device Custom Config: 
       Working Paths: vmhba2:C0:T6:L119, vmhba1:C0:T7:L119
       Is Local SAS Device: false
       Is USB: false
       Is Boot USB Device: false
    



    Удостоверьтесь в том, что SATP политика применившаяся к вашему луну имеет включённую опцию reset_on_attempted_reserve:
    SATP политики
    
    ~ # esxcli storage nmp satp rule list
    Name                 Device  Vendor   Model             Driver  Transport  Options                     Rule Group  Claim Options                        Default PSP  PSP Options  Description                                                               
    -------------------  ------  -------  ----------------  ------  ---------  --------------------------  ----------  -----------------------------------  -----------  -----------  --------------------------------------------------------------------------
    VMW_SATP_ALUA                LSI      INF-01-00                            reset_on_attempted_reserve  system      tpgs_on                              VMW_PSP_MRU               NetApp E-Series arrays with ALUA support                                  
    VMW_SATP_ALUA                NETAPP                                        reset_on_attempted_reserve  system      tpgs_on                              VMW_PSP_RR                NetApp arrays with ALUA support       
    



    Настройки ESXi хоста


    Для оптимальной работй ESXi хоста необходимо установить рекомендуемые для него параменты.
    Параметр Протокол(ы) ESXi 4.x с DataONTAP 8.1.x ESXi 5.x с DataONTAP 7.3/8.x
    Net.TcpipHeapSize iSCSI/NFS 30 32
    Net.TcpipHeapMax iSCSI/NFS 120 512 (For vSphere 5.0/5.1 set 128)
    NFS.MaxVolumes NFS 64 256
    NFS41.MaxVolumes NFS 4.1 -
    NFS.HeartbeatMaxFailures NFS 10
    NFS.HeartbeatFrequency NFS 12
    NFS.HeartbeatTimeout NFS 5
    NFS.MaxQueueDepth NFS - 64
    Disk.QFullSampleSize iSCSI/FC/FCoE 32 (для 5.1 настраивается на каждом LUNe)
    Disk.QFullThreshold iSCSI/FC/FCoE 8 (для 5.1 настраивается на каждом LUNe)

    Есть несколько способов это сделать:

    • Используя Command Line Interface (CLI) на ESXi 5.x хостах.
    • Используя vSphere Client/vCenter Server.
    • Используя Remote CLI tool от VMware.
    • Используя Using the VMware Management Appliance (VMA).
    • Примеяя Host Profile разворячивая его с уже настроенного ESXi 5.x на другие хосты.

    Пример настройки расширенных параметров из ESX 4.x CLI
    Утилита esxcfg-advcfg испольуемая в этих примерах располагается в /usr/sbin папке для ESXi хоста.
    
    #Для протоколов iSCSI/NFS
    #esxcfg-advcfg -s 30 /Net/TcpipHeapSize
    #esxcfg-advcfg -s 120 /Net/TcpipHeapMax
    
    #Для протоколоа NFS 
    #esxcfg-advcfg -s 64 /NFS/MaxVolumes
    #esxcfg-advcfg -s 10 /NFS/HeartbeatMaxFailures
    #esxcfg-advcfg -s 12 /NFS/HeartbeatFrequency
    #esxcfg-advcfg -s 5 /NFS/HeartbeatTimeout
    
    #Для протоколов iSCSI/FC/FCoE
    #esxcfg-advcfg -s 32 /Disk/QFullSampleSize
    #esxcfg-advcfg -s 8 /Disk/QFullThreshold
    


    Проверяем расширенные настройки из ESX 4.x CLI
    
    #Для протоколов iSCSI/NFS
    #esxcfg-advcfg -g /Net/TcpipHeapSize
    #esxcfg-advcfg -g /Net/TcpipHeapMax
     
    #Для протоколоа NFS
    #esxcfg-advcfg -g /NFS/MaxVolumes
    #esxcfg-advcfg -g /NFS/HeartbeatMaxFailures
    #esxcfg-advcfg -g /NFS/HeartbeatFrequency
    #esxcfg-advcfg -g /NFS/HeartbeatTimeout
     
    
    #Для протоколов iSCSI/FC/FCoE
    #esxcfg-advcfg -g /Disk/QFullSampleSize
    #esxcfg-advcfg -g /Disk/QFullThreshold
    


    Пример настройки расширенных параметров из ESX 5.x CLI
    Утилита esxcfg-advcfg испольуемая в этих примерах располагается в /usr/sbin папке для ESXi хоста.
    
    #Для протоколов iSCSI/NFS
    #esxcfg-advcfg -s 32 /Net/TcpipHeapSize
    
    #For vSphere 5.0/5.1: 
    #esxcfg-advcfg -s 128 /Net/TcpipHeapMax
    #For vSphere 5.5:
    #esxcfg-advcfg -s 512 /Net/TcpipHeapMax
    
    #Для протоколоа NFS
    #esxcfg-advcfg -s 256 /NFS/MaxVolumes
    #esxcfg-advcfg -s 10 /NFS/HeartbeatMaxFailures
    #esxcfg-advcfg -s 12 /NFS/HeartbeatFrequency
    #esxcfg-advcfg -s 5 /NFS/HeartbeatTimeout 
    #esxcfg-advcfg -s 64 /NFS/MaxQueueDepth
    
    #Для протоколов iSCSI/FC/FCoE
    #esxcfg-advcfg -s 32 /Disk/QFullSampleSize
    #esxcfg-advcfg -s 8 /Disk/QFullThreshold
    


    Проверяем расширенные настройки из ESX 5.x CLI
    
    #Для протоколов iSCSI/NFS
    #esxcfg-advcfg -g /Net/TcpipHeapSize
    #esxcfg-advcfg -g /Net/TcpipHeapMax
    
    #Для протокола NFS
    #esxcfg-advcfg -g /NFS/MaxVolumes
    #esxcfg-advcfg -g /NFS/HeartbeatMaxFailures
    #esxcfg-advcfg -g /NFS/HeartbeatFrequency
    #esxcfg-advcfg -g /NFS/HeartbeatTimeout
    #esxcfg-advcfg -g /NFS/MaxQueueDepth
    
    #Для протоколов iSCSI/FC/FCoE
    #esxcfg-advcfg -g /Disk/QFullSampleSize
    #esxcfg-advcfg -g /Disk/QFullThreshold
    


    Пример настройки расширенных параметров из ESX 5.1 CLI
    
    #Для протоколов iSCSI/NFS
    #esxcfg-advcfg -s 32 /Net/TcpipHeapSize
    #esxcfg-advcfg -s 128 /Net/TcpipHeapMax
    
    #Для протоколоа NFS
    #esxcfg-advcfg -s 256 /NFS/MaxVolumes
    #esxcfg-advcfg -s 10 /NFS/HeartbeatMaxFailures
    #esxcfg-advcfg -s 12 /NFS/HeartbeatFrequency
    #esxcfg-advcfg -s 5 /NFS/HeartbeatTimeout 
    #esxcfg-advcfg -s 64 /NFS/MaxQueueDepth
    
    #Для протоколов iSCSI/FC/FCoE
    # esxcli storage core device set --device naa.60a98000486e5334524a6c4f63624558 --queue-full-sample-size 32 --queue-full-threshold 8
    


    Проверяем расширенные настройки из ESX 5.1 CLI
    
    #Для протоколов iSCSI/NFS
    #esxcfg-advcfg -g /Net/TcpipHeapSize
    #esxcfg-advcfg -g /Net/TcpipHeapMax
    
    #Для протокола NFS
    #esxcfg-advcfg -g /NFS/MaxVolumes
    #esxcfg-advcfg -g /NFS/HeartbeatMaxFailures
    #esxcfg-advcfg -g /NFS/HeartbeatFrequency
    #esxcfg-advcfg -g /NFS/HeartbeatTimeout
    #esxcfg-advcfg -g /NFS/MaxQueueDepth
    
    #Для протоколов iSCSI/FC/FCoE
    # esxcli storage core device list 
    


    HBA

    NetApp как правило рекомендует использовать для FAS систем с хостом ESXi «значения по умолчанию» для HBA, устанавливаемые производителем адаптера. Если они были изменены, необходимо их вернуть к заводским настройкам. Проверьте соответствующие лучшие практики. К примеру, если речь о виртуализации DB2 в среде VMware на NetApp, то рекомендуется (смотри стр 21) увеличить длинну очереди до 64 на ESXi (как это сделать написано в Vmware KB 1267).
    Пример настройки HBA Qlogic на ESXi
    
    # посмотреть драйвер для Qlogic на ESXi 5.5 и 6.0
    # esxcli system module list | grep qln
    # посмотреть драйвер для Qlogic на ESXi 5.1 и 5.0
    # esxcli system module list | grep qla
    
    # Установить значение для Qlogic на ESXi 5.5 и 6.0
    # esxcli system module parameters set -p qlfxmaxqdepth=64 -m qlnativefc
    # Установить значение для Qlogic на ESXi 5.1 и 5.0
    # esxcli system module parameters set -p ql2xmaxqdepth=64 -m qla2xxx
    



    VSC

    Плагин NetApp VSC (является бесплатным ПО), устанавливает рекомендуемые настройки на ESXi хосте и HBA адаптере: очередь, задержки и другие. Сам плагин интегрируется в vCenter. Экономит время и устраняет во время теста человечиский фактор при настройке параметров на ESXi хосте для более эффективной работы с NetApp. Позволяет выполнять базовые операции для управления хранилищем из vCenter, необходимые администратору виртуализированных сред. Права доступа к хранилищу при помощи VSC могут быть гибко настроены для нескольких пользователей при помощи RBAC.
    image

    Доступна версия как для «толстого» (старого) клиента так и для нового веб-клиента.


    Ethernet


    Jumbo frames

    В случае использования iSCSI крайне рекомендуется использовать Jumbo Frames в Ethernet со скоростью выше или равно 1Gb. Подробнее в статье про Ethernet с NetApp FAS.

    ESXi & MTU9000

    Не забудьте создать правильный сетевой адаптер — VMware рекомендует использовать VMXNEЕ3. Начиная с версии ESXi 5.0 VMXNET3 поддерживает Jumbo Frames. Сетевой адаптер E1000e поддерживает скорость 1GB сетей и MTU 9000 — он устанавливается для всех создаваемых VM по умолчанию (кроме Linux). Стандартный виртуальный сетевой адаптер типа «Flexible» поддерживает MTU 1500. Подробнее.


    Также не забудьте что порт-группа установленная для виртуального сетевого адаптера вашей виртуальной машине должна быть подключена к виртуальному свичу с установленной настройкой MTU 9000 для всего свича.


    NAS и VAAI


    Системы NetApp FAS поддерживают примитивы VMware VAAI сгружая часть рутинных задач по управлению данными на датасторе с хоста на хранилище, где это более логично выполнять. В SAN окружении с ESXi 4.1+ и выше с системами NetApp FAS Data ONTAP 8.0 и выше VAAI автоматически поддерживается и не требует каких-либо манипуляций. Для NAS окружения компания NetApp выпустила плагин который позволяет выполнять подобную оптимизацию для протокола NFS. Это требует установки модуля ядра NetAppNFSVAAI для каждого ESXi хоста. VSC может выполнить установку NFS VAAI плагин автоматически из vCenter.

    VASA

    VASA — это бесплатное ПО которое позволяет vCenter через API узнавать о возможностях хранилища и более разумно использовать их. VASA интегрируется в VSC и позволяет через GUI интерфейс создавть профили датасторов с определёнными возможностями хранилища (к примеру наличие/отстуствие Thing Provitioning, тип диска: SAS/SATA/SSD, наличие кеша второго уровня и т.д.) и включать уведомления по достижению некого уровня (к примеру заполненность или нагрузка). Начиная с версии 6.0 VASA является обязательным компонентом VSC и является важной частью парадигмы VMware 6 vVOL.

    Space Reservation — UNMAP

    Начиная с ESXi 5.1 поддерживается возврат высвобожденных блоков из тонкого луна (датастора). Это настроено по-умолчанию на ESXi 5.1, отключено по-умолчанию на всех остальных ESXi версиях 5.Х & 6.X (требует ручного запуска), для ESXi 6.X с vVOL работает автоматически, а на стороне ONTAP этот функционал всегда по-умолчанию выключен, для его включения необходимо выполнить несколько не сложных команд на СХД.

    Совместимость


    Широко применяйте матрицу совместимости в вашей практике для уменьшения потенциальных проблем в инфрастурктуре ЦОД. Для траблшутинга обращайтесь в KB NetApp и VMware.

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

    Сообщения по ошибкам в тексте прошу направлять в ЛС.
    Замечания и дополнения напротив прошу в комментарии
    Поделиться публикацией

    Похожие публикации

    Комментарии 7

      +1
      Спасибо за познавательную статью
      Стоит учитывать что для ALUA массивов Round Robin не всегда хорошо работает(зависит от массива)
      вмварь если не ошибаюсь рекомендует Fixed или MRU
        0
        Спасибо. Конкретно эта стать, это рекомендации для работы VMware с масивами NetApp.
        У массивов NetApp рекомендации производителя для работы с мультипасингом именно такие. Позже дам ссылку на KB.

        Иногда есть «Общие правила», а ингода есть более «часные» правила, которые перекрывают первые, это как раз тот случай.
      +1
      Также у Вас VMFS на картинке VMFS использует 64кб блоки что не совсем верно для VMFS5,
      для новосозданной VMFS5(не апгрейд с VMFS3) блок имеет размер 1мб с суб-блоками 8кб

        0
        Да, спасибо я в курсе, но это пример для понимания misalignment.
          0
          Хотя я наверно, на всякий случай добавлю эту информацию.

        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

        Самое читаемое