Коллеги прислали очередную ссылку на прекрасный пример вырождения кадров в российском ИТ. Отличный пример, надо сказать:
- люди в разговоре используют слова, смысла которых не понимают.
- говорят, что пришли за советом, но на самом деле пришли с готовым (и плохим) решением, и хотят чтобы их за плохой похвалили. Но их не хвалят, это обидно!
- говорят, что читали литературу по теме, но на самом деле читали только 2 статьи на русском, и ничего больше. Полный ноль. Но это тоже обидно!
Например:
14th Gen Intel® Core™ Desktop Processors
CPU PCIe 5.0 Lanes Up to 16
CPU PCIe 4.0 Lanes 4
Intel® Xeon® Gold 5515+
PCI Express Revision 5.0
Max # of PCI Express Lanes 80
AMD EPYC™ 9005
Up to 160 PCIe® 5.0 lanes
Затем у вас возникает NVM Express (NVMe) или Non-Volatile Memory Host Controller Interface Specification (NVMHCIS) – это интерфейс передачи данных «до устройства хранения». Устройство хранения, в свою очередь, это сейчас какая-то NAND память. Раньше была еще память 3D XPoint, более известная как Optane, но ее выпуск прекращен, хотя она и обгоняла варианты NAND. Устройство хранения – NAND SSD, может быть в формате BGA, M.2 2230 \ 2280 \ 22110 и так далее, может быть в виде 2.5 SSD с интерфейсами M.2, U.2 (SFF-8639), U.3, EDSFF или даже L3-NVMe-3840 - NVMe Palm. Вариантов много. Сам физический разъем может быть SFF-8643, SFF-8639 и так далее.
При этом, никто не мешает включать NAND SSD через AHCI \ SATA \ SAS – и все будет работать, но есть нюансы по скорости, горячей замене, задержкам, пропускной способности и так далее.
Почему это нужно и важно знать.
Потому что в головах у людей опилки происходит смешение IDE, ATA, SCSI и serial attached scsi (SAS).
На IDE контроллер можно было поставить 2 (два) устройства – master и slave.
На Ultra2 Wide SCSI – до 16 устройств.
SAS поддерживает до 65535 устройств.
Как следствие, даже в простые старые сервера (не рассматривая старые СХД) уже давно можно было ставить по 16 дисков (тогда еще дисков, сейчас уже драйвов \ приводов \ устройств хранения) на SCSI или SAS RAID контроллер, и проблем с этим не было. Наоборот, RAID контроллер за счет своей памяти, и батарейки к нему, ускорял работу, частично снимая проблему RAID write penalty, в том числе за счет всяких фокусов.
НО.
С 2012 - 2015 года, в массы пошли SSD диски, и появился стандарт NVMe 1.1b (история тут), и высокоскоростные жесткие диски (15к оборотов, 10к оборотов) стали уходить на второй план. К 2020 примерно, году, умерли и те и другие. Не нужны – цена SSD NAND упала настолько, что тот же объем памяти будет стоить уже сравнимо с дисков на 7.2к оборотов, а скорость выше в разы.
НО.
С 2012 – 2014 года началось умирание русскоязычного комьюнити, и революция с переходом на SSD прошла мимо масс. До сих пор люди пишут в спецификации 10к диски, RAID контроллеры итд. Но все, 10к дисков больше нет.
То есть, куча людей остановилась в развитии на уровне знаний где-то 2012 – 2015 года, когда RAID контроллеры уже были, а NVMe еще не было.
Подвох в том, что существуют RAID 3-Mode (SATA/SAS/NVMe), и, естественно, возникает простое желание – взять и собрать NVMe RAID. Технически это возможно, он соберется.
Практически SCSI \ NVMe команды, приходя на контроллер, будут попадать в очередь контроллера (или не будут - потому что в документации этот вопрос написан крайне мутно), а там глубина очереди всего 64, может 128, может 256. Глубину очереди в обзорах порой просто не затрагивают (пример). И в спецификации этого параметра нет. И в ОС этот параметр настраивается, до определенных пределов.
При том, что у Dell PERC H755N front NVMe - Controller queue depth - 5120, но не указано, на контроллер или на IO target.
При том, что в тестах типа Partner Blog: Boston Limited | Elevate Your NVMe Performance with SupremeRAID™ Next Generation GPU-based RAID - результаты очень неплохие.
У NVMe диска, подключенного напрямую, глубина очереди 2046 и выше. Итог – система в целом будет работать медленнее, и, что еще хуже, с непредсказуемым поведением дисков. Операционная система может в какой-то момент посчитать, что исправный NVMe диск работает слишком медленно, по ее представлению, и пометить его как неисправный. И вы скажете ШТОООА? А вот.
Поэтому: пока что никаких NVMe RAID. Еще раз:
Queue depth is extremely important, as issues have been observed with controllers that have very small queue depths. In particular, controllers with small queue depths (less than 256) can impact virtual machine I/O performance when vSAN is rebuilding components, either due to a failure or when requested to do so when entering maintenance mode.
Design Decision : Choose storage I/O controllers that have as large a queue depth as possible. While 256 are the minimum, the recommendation would be to choose a controller with a much larger queue depth where possible. (Цитата стянута из вот этой, полезной в целом, статьи)
Подвох в том, что у вас на серверной материнской плате может оказаться 2-4-6, ну может 8, разъемов под NVMe. На передней панели слоты есть, а на дисковом бекплейне – нет. И как хотите. Поэтому нужно очень, очень внимательно читать спецификацию на все.
И при этом, вы все равно не можете нормально собрать аппаратный NVMe RAID на простом серверном железе. Что делать и как это обходят прочие производители? Для СХД давным давно, со времен первых HPE 3PAR, используется динамический рейд, с чанками \ чанклетами, только называется у всех по разному – Lenovo draid, Huawei raid 2.0, Netapp Dynamic disk pools (DDP), и так далее.
Для всего остального есть программный RAID, только вот загрузиться с такого зеркала, без плясок и кучи ручных операций, нельзя.
Прочие больные места -1. На старых серверах, где-то до 2020 года выпуска, в BIOS нет интегрированного NVMe драйвера. Иногда можно разобрать старый образ BIOS, вручную добавить драйвер, собрать обратно и обновить систему, иногда нет. В итоге, устройство есть и работает, как и положено PCIe устройству, а как загрузочный диск данное устройство не определяется. И все. Сам не сталкивался, дальние знакомые на какой-то распродаже купили старые Supermicro и поели с этим, большой ложкой.
Прочие больные места -2. Некоторые SSD NVMe домашнего сегмента работают только в режиме PCIe4. Некоторые при этом могут работать с некоторыми материнскими платами с какой-то версией BIOS в режиме автоопределения, а некоторым надо ставить режим вручную.
Поэтому, когда кто-то необученный переносит свой домашний опыт «воткнул и заработало» на работу с серверами, может быть больно тут, там, везде. И еще в паре десятков мест это может выстрелить в ногу, но про это позже.
Обманчивая простота современной виртуализации и соблазны перейти на SDS и HCI
HA: VMware vSphere High Availability: средство отказоустойчивости виртуальных машин, позволяющее в случае отказа физического хост-сервера автоматически перезапустить его виртуальные машины с общего хранилища
Аналог: Hyper-V High Availability (в составе Hyper-V failover cluster)
VMware Fault Tolerance (FT): средство непрерывной доступности виртуальных машин, позволяющее поддерживать резервную работающую копию виртуальной машины на другом сервере.
Аналоги – так сразу и не скажу. Если смотреть на уровень выше или дороже, то это что-то типа 4* BullSequana S200 – то есть BullSequana S800. И то, такое определение сошло бы для контингента хабра, потому что это совсем другое.
Software-defined storage (SDS) – в какой-то степени маркетинговый термин, потому что туда попадает и Gluster, и S2D, и даже XPenology, ScaleIO и RAIDIX. Возникает соблазн сказать, что «если что-то ставится на обычное железо и получается СХД (Storage system \ Data Storage), то это SDS. Но это не совсем так – в современных СХД стоят почти те же самые Intel или что-то из arm, специализированные контроллеры для ускорения операций остались где-то на рубеже 2015-2018 годов, и на некоторых СХД возможен запуск виртуальных машин для каких-то очень небольших задач.
Чуть проще различать SDS и HCI.
SDS занимается почти только обработкой данных.
HCI (Hyper-converged infrastructure) занимается и виртуализацией, и хранением, и сетью.
Причем, сказать «занимается сетью», обсуждая HCI, можно только с перепоя. Это тоже очень непростая тема для обсуждения, потому что существует и активно применяется Azure SmartNIC/DPU/IPU / Azure Boost – FPGA модуль ускорения для сети. Или, те же настройки VMware VeloCloud SD-WAN и NSX Data Center – это вещь «очень в себе». Как и Hyper-V Network Virtualization с VXLAN. Как и OpenStack Networking Open vSwitch (OVS), Open Virtual Network (OVN) и так далее.
В чем кажущиеся плюсы HCI?
С первого взгляда кажется, что это просто. Можно собрать почти любой HCI на почти любом железе из соседнего ларька с бу, и это запустится, вот примеры конфигурации для сборки домашней лаборатории.
Система будет ругаться, кричать ужасными алертами, что так делать нельзя, не надо так, но разве это кого-то остановит, запустилось же.
Можно даже собрать сеть так, как собирали деды – на LACP, наплевав на то, что уже больше 10 лет существует и active – active, и Switch Embedded Teaming с его Dynamic VMMQ, и даже божественный и неповторимый Network Air Gaps.
Читать алерты не нужно, все же не взорвалось сразу, значит ок.
Если вам безразлична остановка на неделю, если у вас нет и не было проверенного плана восстановления – то смело делайте. Если же вам критична остановка, то не нанимайте на работу идиотов, которые запускают сервисы на чем попало.
Тем не менее, экономные начальники, которые нанимают на работу людей, который собирают HCI системы на SATA , или ставят NVMe в RAID, или строят системы на 2 серверах не из HCL – были, есть, и будут. С последующим «ой кто же это сделал».
То есть, для учебы, тестов, стендов, прочих систем которые совсем не жалко – сколько угодно делайте, и из чего угодно. Хоть стройте систему на shotgun mode. Учиться –можно, работать нет.
В реальной жизни все иначе
Если у вас нет опыта работы в инфраструктуре с хотя бы 2-3 хотя бы MSA 2060 и аналогами (Synology и TrueNas не считаются), то даже не смотрите в сторону HCI. HCI имеет смысл, когда у вас есть опыт работы с классическим хранилищем, и вы понимаете их плюсы и минусы. Иначе любая HCI будет источником сплошной и бесконечной боли, причем в самый неудобный и неприятный момент.
Да, есть варианты типа ROBO на 3 сервера, и даже 2-node cluster, но
минимальное число серверов в инфраструктуре HCI – 4, но надо 6, лучше 10:
vSAN: To use RAID-6, you must have at least six hosts in the cluster.
S2D – можно начать с 4, но лучше 10-12: Dual parity efficiency for hybrid deployments, Dual parity efficiency for all-flash deployments.
HCI крайне, бесконечно капризен к используемому оборудованию и его конфигурации.
То есть, если вы хотите зачем-то внедрить HCI И спать спокойно, то вам придется покупать исключительно сертифицированное оборудование, и внимательно следить за рекомендациями связки драйвер + прошивка. Это еще если у производителя HCI есть такие рекомендации, иначе все на свой страх и риск.
Еще раз повторю: запуск системы и ее работа во время тестов – 1,2, 3 дня, неделя – не означает, что система не упадет просто так через 32 тысячи минут. Или через 200 дней. Или еще как-то. Это не говоря про проблемы с зависимостями, где обновление какой-то одной библиотеки может положить весь кластер.
Комплексная литература на русском по HCI отсутствует, и почти отсутствует русскоязычная экспертиза
По простым задачам вам, может, и помогут – советами типа «перезагрузи все». Совет плохой.
По сложным задачам помогать вам будет некому. То есть, может да, может нет – но это не та система, и не то сообщество, где люди вообще склонны помогать, и тем более бесплатно.
Но, и за деньги помогать зачастую, некому. Все сами.
Вам не поможет набраться опыта падение этой системы.
Есть старое и ошибочное мнение – профессионал это тот, кто наступал на грабли много раз.
Это не так.
Профессионал – это человек, который наступал на грабли мало раз, потому что про основной объем граблей он узнал заранее, предусмотрел эти сценарий отказа, проработал их на стенде и при пилоте, и потом бил по рукам тех, кто говорил «давайте сразу в прод, я сто раз так делал».
Тут должна быть какая-то не скомканная концовка, но я ее не придумал.