Привет, Хабр!

В современном IT-ландшафте малый и средний бизнес (SMB) сталкивается с фундаментальным противоречием: необходимость в инфраструктуре корпоративного уровня надежности при бюджете, который редко можно назвать корпоративным. Требования к аптайму, целостности данных и катастрофоустойчивости сегодня высоки как никогда, но традиционные решения от лидеров рынка становятся все менее доступными. Недавние изменения на рынке виртуализации, в частности, последствия приобретения VMware компанией Broadcom, лишь усилили эту тенденцию, заставив многих искать мощные и экономически эффективные альтернативы.  

В этом контексте Proxmox Virtual Environment (VE) выделяется как один из ведущих претендентов на роль стандартной платформы для SMB. Это комплексное решение с открытым исходным кодом, которое объединяет в себе гипервизор KVM, контейнеризацию LXC, программно-определяемые хранилища (SDS) и сети (SDN) в едином управляемом интерфейсе. Proxmox VE предлагает функциональность, ранее доступную только в дорогостоящих коммерческих продуктах, делая ее доступной для широкого круга компаний.  

Однако внедрение Proxmox в прод ставит перед системным архитектором ключевой выбор, определяющий всю дальнейшую архитектуру, стоимость и уровень отказоустойчивости системы. Этот выбор — технология хранения данных. Настоящая статья посвящена детальному разбору двух основных путей:

  • Путь A (ZFS): Максимальная отказоустойчивость и целостность данных в рамках одного, но очень надежного узла. Это стратегия «крепости» — мощного, защищенного сервера, способного противостоять сбоям дисков и повреждению данных, но остающегося единой точкой отказа на уровне всего шасси.

  • Путь B (CEPH): Построение истинно высокодоступной (High-Availability, HA) инфраструктуры на базе гиперконвергентного кластера (HCI) из трех и более узлов. Это стратегия «эскадры», где выход из строя одного из кораблей не приводит к потере функциональности всей системы — виртуальные машины автоматически перезапускаются на оставшихся в строю узлах.

Миссия этой статьи — стать прагматичным, инженерным руководством по выбору между этими двумя путями. Мы детально разберем обе архитектуры, сфокусировавшись на построении стабильных, готовых к продуктивной эксплуатации систем. Мы определим, где можно и нужно экономить, а где экономия превращается в «авантюру» — безрассудный риск, недопустимый в продакшене. Все рекомендации будут основаны на актуальных стабильных версиях продуктов, таких как Proxmox VE 8.x/9.x и Proxmox Backup Server 4.x.  

Фундамент: Философия «железа» для экономного продакшена

Основа любой стабильной системы — это правильно подобранное оборудование. Никакие программные ухищрения не смогут компенсировать хрупкий фундамент, построенный на неподходящих компонентах. Самая распространенная и опасная «авантюра» в малом продакшене — это использование потребительского (consumer-grade) или неверно сконфигурированного серверного оборудования. Цель — построить систему, которая будет скучно и предсказуемо надежной. Философия умной экономии здесь проста: можно и нужно экономить на CAPEX, приобретая бывшее в употреблении (used) серверное оборудование, но никогда нельзя экономить на классе компонентов.

CPU & RAM: Мозг и мускулы системы

Выбор процессора и оперативной памяти напрямую зависит от выбранной стратегии хранения.

Для ZFS оперативная память — король. Производительность ZFS неразрывно связана с ее кэшем — Adaptive Replacement Cache (ARC), который целиком располагается в ОЗУ. Экономия на памяти напрямую ведет к деградации производительности дисковой подсистемы. Практическая формула для расчета минимально необходимого объема RAM под ARC: 2 ГБ базовых + 1 ГБ на каждый терабайт (TiB) дискового пространства в пуле. Начиная с Proxmox VE 8.1, инсталлятор по умолчанию ограничивает максимальный размер ARC 10% от общего объема ОЗУ (но не более 16 ГБ), однако для систем с интенсивной дисковой нагрузкой этот параметр следует пересматривать в сторону увеличения. Использование ECC-памяти является обязательным стандартом для любой продакшен-системы на ZFS для предотвращения повреждения данных в кэше.  

Для Ceph важны процессорные ядра. Демоны Ceph OSD (Object Storage Daemon), отвечающие за операции с дисками, создают значительную нагрузку на CPU, особенно при работе с высокопроизводительными NVMe-накопителями. Простое правило для обеспечения стабильности: резервировать как минимум одно ядро/поток CPU на каждый сервис Ceph (MON, MGR, OSD) на узле. Например, для кластера из трех узлов, на каждом из которых работает один MON, один MGR и шесть OSD, следует ментально выделить около 8 ядер CPU исключительно под нужды Ceph.  

Дисковая подсистема: Самый критичный компонент

Здесь совершается большинство фатальных ошибок при проектировании.

HBA вместо аппаратного RAID: Золотое правило. Аппаратный RAID-контроллер — враг программно-определяемых хранилищ, таких как ZFS и Ceph. Он скрывает от операционной системы реальное состояние дисков (S.M.A.R.T.), его собственный кэш вносит непредсказуемые задержки и мешает работе алгоритмов кэширования ZFS и Ceph, а также не позволяет системам хранения напрямую управлять дисками для самовосстановления. Для продакшена необходимо использовать Host Bus Adapter (HBA) или RAID-контроллер, перепрошитый в "IT Mode" (Initiator-Target), который просто предоставляет прямой доступ к дискам.

Enterprise vs. Consumer SSD: Грань между надежностью и катастрофой. Это критически важное различие. Для любых задач, связанных с интенсивной записью (журналы Ceph DB/WAL, ZFS SLOG, Special VDEV), использование SSD корпоративного класса является обязательным. Ключевые отличия — наличие защиты от потери питания (Power Loss Protection, PLP) и высокая выносливость, измеряемая в Drive Writes Per Day (DWPD). PLP гарантирует, что данные из кэша SSD будут записаны во флеш-память при внезапном отключении питания, предотвращая повреждение данных. Использование потребительских SSD в этих ролях — одна из самых серьезных «авантюр».  

Сеть: Нервная система кластера

Для одиночного сервера на ZFS требования к сети стандартны, но для кластера Ceph сеть становится одним из определяющих факторов производительности и стабильности.

1GbE — это анахронизм для кластерных хранилищ. Использование сети 1GbE для Ceph — верный путь к созданию узкого места, которое проявит себя в самый неподходящий момент, например, во время ребалансировки или восстановления данных после сбоя диска. Такие операции генерируют огромный объем трафика, и медленная сеть может дестабилизировать весь кластер.  

10GbE — минимальный стандарт для Ceph. Для кластера из 3-5 узлов 10GbE является абсолютным минимумом. Существует две жизнеспособные и бюджетные топологии:

  • Бессвитчевая Full-Mesh топология: Использование двухпортовых 10GbE NIC на каждом из трех узлов для их прямого соединения в кольцо. Это позволяет сэкономить на дорогостоящем 10GbE-коммутаторе, но плохо масштабируется за пределы 3-4 узлов.  

  • Топология с коммутатором(ами): Стандартный подход, обеспечивающий масштабируемость. Однако здесь кроется еще одна потенциальная «авантюра». Использование одного коммутатора создает единую точку отказа. Профессиональный подход к построению HA-кластера подразумевает использование двух коммутаторов и агрегацию каналов с помощью LACP (802.3ad) на каждом узле. Это обеспечивает отказоустойчивость на уровне сети: при выходе из строя одного коммутатора или порта кластер продолжит функционировать без перебоев.  

Сценарий 1: «Одинокий волк» — надежный сервер на ZFS

«Одинокий волк» — надежный сервер на ZFS
«Одинокий волк» — надежный сервер на ZFS

Этот сценарий идеально подходит для малого бизнеса, филиалов или для размещения сервисов, где абсолютная непрерывность работы (High Availability) не является главным приоритетом, но целостность данных и возможность быстрого восстановления после сбоя критически важны. Зачастую один мощный и правильно сконфигурированный сервер оказывается более рентабельным, чем минимальный кластер из трех узлов.

Таблица: Спецификация оборудования (BOM) для одноузлового ZFS-сервера

Цель этой таблицы — предоставить конкретный, аннотированный список компонентов, который можно использовать как шаблон для сборки.

Компонент

Спецификация

Обоснование

Шасси

Серверное шасси 2U или 4U

Достаточное количество дисковых отсеков и хорошее охлаждение.

Процессор

8-16 ядерный серверный CPU (AMD EPYC, Intel Xeon)

Баланс между производительностью для ВМ и накладными расходами ZFS (сжатие, чек-суммы).

ОЗУ

64-128 ГБ ECC DDR4/5

Обязательно ECC. Объем рассчитывается с запасом для ARC (минимум 2 ГБ + 1 ГБ/ТБ).

Системные диски

2x 240-480 ГБ Enterprise SATA/NVMe SSD

Для зеркального пула ZFS (rpool), на котором установлена Proxmox VE. Зеркало обеспечивает отказоустойчивость ОС.

Диски для данных

4-8x Enterprise SAS/SATA HDD или SSD

Выбор между HDD (емкость) и SSD (производительность) зависит от профиля нагрузки ВМ.

HBA-контроллер

LSI SAS 9300-8i (или аналог) в IT-режиме

Обеспечивает прямой доступ к дискам, что критично для ZFS.  

Кэш/Лог (опционально)

1-2x Enterprise NVMe SSD (малого объема)

Для SLOG, L2ARC или, что предпочтительнее, для Special VDEV.

Сетевая карта

2x 10GbE SFP+

Для быстрых бэкапов на Proxmox Backup Server и будущей масштабируемости.

Блок питания

2x Redundant PSU

Обеспечивает отказоустойчивость на уровне питания.

Проектирование пула ZFS: Производительность и надежность

Конфигурация ZFS-пула — это компромисс между скоростью, емкостью и отказоустойчивостью.

Зеркала против RAID-Z. Для хранения виртуальных машин, которые генерируют преимущественно случайную нагрузку (random I/O), пулы из зеркал (эквивалент RAID-10) обеспечивают значительно более высокие показатели IOPS (операций ввода-вывода в секунду), чем массивы RAID-Z. Производительность в ZFS масштабируется с количеством vdev (виртуальных устройств). Пул из трех зеркал (6 дисков) будет быстрее, чем один vdev RAID-Z2 из 6 дисков. RAID-Z1/Z2/Z3 лучше подходят для хранения больших файлов, архивов и бэкапов, где важна последовательная скорость и максимальная емкость.  

Сила Special VDEV. Это одна из самых мощных современных возможностей OpenZFS. Special VDEV — это отдельное быстрое виртуальное устройство (vdev), как правило, зеркало из NVMe SSD, предназначенное для хранения метаданных и, опционально, небольших блоков данных. Для хранилища ВМ, где происходит множество операций с метаданными, добавление Special VDEV дает колоссальный прирост отзывчивости и производительности, разгружая основной пул из медленных HDD.  

SLOG и L2ARC: Когда они действительно нужны. Вокруг этих технологий много мифов. SLOG (Separate Log Device) — это устройство для хранения ZFS Intent Log (ZIL). Он ускоряет только синхронные операции записи. Чтобы SLOG был эффективен, он должен иметь сверхнизкую задержку и высокую выносливость, поэтому для этой роли подходят только очень быстрые устройства, такие как Intel Optane или NVMe SSD корпоративного класса.  

L2ARC — это кэш второго уровня на чтение, располагающийся на SSD. В большинстве случаев добавление дополнительной оперативной памяти для увеличения основного ARC-кэша дает лучший результат, чем добавление L2ARC. L2ARC следует рассматривать как последнее средство, когда добавить ОЗУ уже невозможно.  

Практический тюнинг ZFS для Proxmox

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

  • ashift=12: Этот параметр устанавливает размер сектора, с которым работает ZFS. Для всех современных дисков (HDD и SSD) с физическим сектором 4K, установка ashift=12 (212=4096) при создании vdev является обязательной. Неправильное значение (например, ashift=9 для 4K-диска) приведет к серьезной деградации производительности. Этот параметр нельзя изменить после создания vdev.  

    Bash

    zpool create -o ashift=12 mypool mirror /dev/sda /dev/sdb
  • volblocksize: Размер блока для ZVOL (дисков ВМ). Исторически Proxmox использовал значение 8K, но в последних версиях по умолчанию 16K. Для баз данных и смешанной нагрузки ВМ рекомендуется использовать volblocksize от 16K до 64K. Это уменьшает write amplification (усиление записи) для небольших операций ввода-вывода и снижает накладные расходы на метаданные. Этот параметр задается в настройках хранилища в GUI Proxmox.  

  • compression=lz4: Сжатие lz4 следует включать по умолчанию для всех датасетов. Оно имеет минимальные накладные расходы на CPU, но может значительно повысить производительность за счет уменьшения объема данных, физически записываемых на диск.  

    Bash

    zfs set compression=lz4 mypool
  • atime=off: Отключает запись времени последнего доступа к файлам. Это простая настройка, которая убирает лишние операции записи и дает бесплатный прирост производительности.  

    Bash

    zfs set atime=off mypool
  • xattr=sa: Важная оптимизация для хранения контейнеров LXC. Она заставляет ZFS хранить расширенные атрибуты в самих inode, что значительно ускоряет операции с большим количеством мелких файлов.  

  • Лимиты ARC: Для тонкой настройки потребления памяти можно отредактировать файл /etc/modprobe.d/zfs.conf, добавив строку options zfs zfs_arc_max=BYTES, где BYTES — максимальный размер ARC в байтах. Это позволяет зарезервировать больше памяти для виртуальных машин, если дисковая подсистема не является узким местом.  

Сценарий 2: «Сила трех» — гиперконвергентный кластер на Ceph

Гиперконвергентный кластер на Ceph
Гиперконвергентный кластер на Ceph

Этот сценарий предназначен для бизнеса, где любой простой напрямую ведет к финансовым потерям. Он необходим для сервисов, требующих высокой доступности: веб-серверов, баз данных, критически важных внутренних приложений. Входная стоимость выше (минимум три сервера), но эта архитектура обеспечивает устойчивость к отказу целого физического узла.

Таблица: Спецификация оборудования (BOM) для 3-узлового Ceph-кластера (на один узел)

Для Ceph крайне желательна гомогенность (одинаковость) оборудования на узлах для предсказуемой производительности и стабильности.  

Компонент

Спецификация

Обоснование

Шасси

Серверное шасси 1U или 2U

Компактное размещение в стойке.

Процессор

8-12 ядерный серверный CPU (AMD EPYC, Intel Xeon)

Достаточно ядер для ВМ и для резервирования под сервисы Ceph.

ОЗУ

64-128 ГБ ECC DDR4/5

Память для ВМ и для демонов OSD (примерно 4-8 ГБ на OSD).

Системные диски

2x 240-480 ГБ Enterprise SATA SSD

ZFS-зеркало (rpool) для ОС Proxmox.

Диски для Ceph OSD

4-6x Enterprise NVMe или SAS/SATA SSD

Одинаковые модель и объем для предсказуемой производительности.

HBA-контроллер

LSI SAS 9300-8i (или аналог) в IT-режиме

Прямой доступ к дискам для Ceph.

Сетевая карта

2x 10/25GbE SFP+/SFP28

Для разделения публичной и кластерной сетей Ceph.

Блок питания

2x Redundant PSU

Отказоустойчивость по питанию.

Развертывание Ceph через GUI Proxmox

Proxmox VE значительно упрощает процесс развертывания Ceph, абстрагируясь от большей части ручной работы в командной строке. Процесс включает в себя установку пакетов Ceph на каждом узле, создание начальной конфигурации с первым монитором (MON) и менеджером (MGR), а затем последовательное добавление дисков в качестве OSD через веб-интерфейс.  

Конфигурация сети Ceph: Глубокое погружение

Правильная конфигурация сети — залог стабильности и производительности кластера Ceph. В идеальном мире для продакшена рекомендуется использовать три физически разделенные сети:

  • Публичная сеть (Public Network): Используется для трафика между клиентами (виртуальными машинами) и демонами Ceph (MON и OSD). По этой сети передаются запросы на чтение и запись данных. Минимальные требования — 10GbE.

  • Кластерная сеть (Cluster Network): Выделенная сеть для внутреннего трафика Ceph: репликации данных между OSD, обмена heartbeat-сообщениями и трафика во время ребалансировки. Разделение этого трафика критически важно, чтобы интенсивные внутренние процессы не влияли на задержку клиентских запросов. Рекомендуемая скорость — 10GbE или выше.  

  • Сеть Corosync: Сеть для обмена служебной информацией между узлами самого кластера Proxmox. Этот трафик очень чувствителен к задержкам, но не требует высокой пропускной способности. Для максимальной стабильности его можно вынести в отдельную сеть (даже 1GbE), часто с использованием бондинга для отказоустойчивости.  

Пулы Ceph: Репликация против Erasure Coding

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

Реплицируемые пулы (Replicated Pools). Это режим по умолчанию и рекомендуемый выбор для хранения дисков ВМ. С настройкой size=3, min_size=2 Ceph создает три полные копии каждого объекта данных на разных узлах. Это обеспечивает высокую производительность на чтение и запись и быструю реакцию на сбои. Платой за это является высокий расход дискового пространства: для хранения 1 ТБ полезных данных требуется 3 ТБ сырого пространства.  

Пулы с кодированием стирания (Erasure Coded, EC). Этот механизм похож на RAID5/6. Данные разбиваются на k блоков данных и m блоков четности. Пул k=2, m=1 может пережить отказ одного OSD, при этом требуя всего 1.5 ТБ сырого пространства для хранения 1 ТБ данных. EC-пулы значительно эффективнее по использованию дискового пространства, но требуют больше ресурсов CPU для вычислений и имеют более низкую производительность при случайной записи. Они идеально подходят для хранения «теплых» или «холодных» данных: бэкапов, архивов, больших медиафайлов, но не рекомендуются для дисков активных ВМ.  

Оптимальной стратегией для малого бизнеса часто является гибридный подход. Можно создать в одном и том же кластере два типа пулов:

  1. Реплицируемый пул на быстрых SSD/NVMe-дисках для активных виртуальных машин.

  2. EC-пул на медленных, но емких HDD для бэкапов или архивных данных.

Такое разделение реализуется с помощью классов устройств (device classes) и правил CRUSH map в Ceph, которые позволяют указать, на каких физических дисках должен размещаться тот или иной пул. Это мощный инструмент для оптимизации стоимости хранения без ущерба для производительности критичных сервисов.  

Страховка: выстраиваем взрослую стратегию бэкапов с PBS

Независимо от того, используется ли отказоустойчивый ZFS или высокодоступный Ceph, резервное копирование остается обязательным элементом любой продакшен-инфраструктуры. Proxmox Backup Server (PBS) — это не опциональное дополнение, а неотъемлемая часть экосистемы Proxmox. Его ключевые возможности — инкрементальные бэкапы, мощная дедупликация на уровне блоков, сжатие и шифрование на стороне клиента — делают его идеальным инструментом для эффективной и безопасной защиты данных.  

Стратегия локального резервного копирования

Первый рубеж обороны — локальный бэкап-сервер. Существует два основных подхода к его развертыванию:

  • На выделенном физическом сервере: Наиболее надежный вариант. Полностью изолирует бэкапы от основной виртуализационной инфраструктуры.

  • В виде виртуальной машины: Более удобный и экономичный вариант, но создает зависимость: для восстановления ВМ из бэкапа сначала нужно восстановить сам PBS. Этот риск можно минимизировать, если регулярно бэкапить саму ВМ с PBS стандартными средствами Proxmox VE.  

Хранилище (datastore) для PBS настоятельно рекомендуется организовывать на базе ZFS для обеспечения целостности самих бэкапов.

Off-site бэкап и правило «3-2-1»

Правило «3-2-1» гласит: имейте три копии данных на двух разных типах носителей, и одна из копий должна храниться за пределами основной площадки (off-site). Выход Proxmox Backup Server 4.0 с нативной поддержкой S3-совместимых хранилищ стал революцией для SMB, сделав реализацию этого правила значительно проще и дешевле. Ранее для off-site бэкапа требовалось либо настраивать синхронизацию на второй экземпляр PBS (что подразумевает наличие второго сервера или VPS), либо использовать сложные скрипты с утилитами вроде rclone. Теперь есть два прямых пути:  

Вариант А: Синхронизация PBS-to-PBS. Традиционный и очень надежный метод. На одном PBS настраивается «удаленное подключение» (remote) к другому, а затем создается «задача синхронизации» (sync job), которая по расписанию «вытягивает» (pull) новые бэкапы. При настройке крайне важно соблюдать меры безопасности: создавать для синхронизации отдельных пользователей с минимально необходимыми правами, а не использовать root.  

Вариант Б: Революция S3 (PBS 4.0+). Этот метод позволяет использовать облачные объектные хранилища в качестве удаленного датастора. Это значительно снижает порог входа для организации off-site бэкапов. Настройка включает в себя создание S3-совместимого бакета (например, в Backblaze B2, Wasabi или другом облаке), настройку S3 Endpoint в PBS и создание нового датастора типа S3. PBS использует локальный кэш для метаданных и часто используемых чанков, чтобы минимизировать количество API-запросов и снизить стоимость. На момент написания статьи эта функция находится в статусе «technology preview», но активно развивается.  

Таблица: Рекомендуемая политика хранения и очистки (Pruning) бэкапов

По умолчанию PBS хранит бэкапы вечно. Для управления дисковым пространством необходимо настроить политику хранения (retention). Ниже приведен разумный стартовый шаблон, который можно адаптировать под свои нужды, используя разные неймспейсы для разных групп ВМ. Визуализировать эффект от настроек можно с помощью Prune Simulator в документации PBS.  

Неймспейс / Группа ВМ

Расписание бэкапа

Политика хранения (keep-*)

Описание

Критичные (БД, AD)

Каждые 1-4 часа

keep-hourly=24, keep-daily=7, keep-weekly=4, keep-monthly=6

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

Стандартные (веб-серверы)

Ежедневно

keep-daily=14, keep-weekly=8, keep-monthly=12, keep-yearly=2

Хранит ежедневные бэкапы за 2 недели, еженедельные за 2 месяца, ежемесячные за год и годовые за 2 года.

Архивные / Некритичные

Еженедельно

keep-weekly=4, keep-monthly=6

Хранит еженедельные бэкапы за месяц и ежемесячные за полгода.

Итог: Считаем совокупную стоимость владения (TCO)

Выбор архитектуры должен основываться не только на технических преимуществах, но и на полной стоимости владения (Total Cost of Ownership, TCO). TCO включает в себя не только первоначальные капитальные затраты (CAPEX) на оборудование, но и операционные расходы (OPEX) на протяжении всего жизненного цикла системы: электроэнергию, администрирование, стоимость простоев и т.д..  

Таблица: Сравнение факторов TCO: Одноузловой ZFS vs. 3-узловой Ceph

Эта таблица помогает структурировать анализ и сделать осознанный бизнес-выбор.

Фактор

Одноузловой ZFS

3-узловой Ceph

Комментарии

Оборудование (CAPEX)

Низкие (1 сервер)

Высокие (3 сервера + 10G-сеть)

Основная разница в первоначальных инвестициях.

Лицензии / Подписка

Бесплатно / 1 подписка

Бесплатно / 3 подписки

Стоимость подписки Proxmox зависит от количества сокетов CPU.

Электроэнергия и охлаждение

Низкие

Высокие (в ~3 раза)

Прямая зависимость от количества работающих серверов.

Трудозатраты на администрирование (OPEX)

Низкие

Средние

Управление кластером Ceph сложнее, чем одним ZFS-сервером.

Стоимость простоя (Риск)

Высокая

Низкая

Ключевое различие. Отказ узла ZFS = полный простой. Отказ узла Ceph = сервисы продолжают работать.

Простои на обслуживание

Требуются

Минимизированы

С Ceph можно проводить обслуживание узлов поочередно с живой миграцией ВМ, без остановки сервисов.

Подписка Proxmox: Стоит ли она того?

Для любой продуктивной системы ответ однозначный: да. Подписка Proxmox — это не плата за программу, а недорогая страховка. Она предоставляет доступ к стабильным, тщательно протестированным enterprise-репозиториям пакетов и к профессиональной технической поддержке. Запуск бизнеса на бесплатных "no-subscription" репозиториях, которые получают обновления без предварительного тестирования, — это самая настоящая «авантюра», которая может привести к нестабильности и простоям.  

Заключение: Выбор без авантюр

Proxmox VE в связке с ZFS или Ceph предоставляет малому и среднему бизнесу беспрецедентно мощную и доступную платформу для виртуализации корпоративного класса. Ключ к успеху лежит не в тотальной экономии, а в экономии умной — в инвестициях в правильные фундаментальные компоненты, которые обеспечивают надежность и масштабируемость.

Итоговое дерево решений выглядит следующим образом:

  • Выбирайте ZFS, если:

    • Ваш бюджет строго ограничен одним физическим сервером.

    • Приоритетом является абсолютная целостность данных, а не непрерывность работы 24/7.

    • Вы можете позволить себе плановые простои для обслуживания и обновлений оборудования.

  • Выбирайте Ceph, если:

    • Ваш бизнес не может позволить себе простои, и каждая минута офлайна — это упущенная выгода.

    • Вам необходима возможность проводить техническое обслуживание и обновления без остановки сервисов.

    • У вас есть бюджет на минимум три физических узла и соответствующую 10GbE-сетевую инфраструктуру.

Правильный выбор, основанный на честной оценке бизнес-требований и рисков, позволит построить надежную, эффективную и свободную от безрассудных авантюр IT-инфраструктуру, которая станет опорой для вашего бизнеса на долгие годы.

Комментарии (0)


  1. SlavikF
    19.09.2025 16:32

    Пару месяцев назад поставил себе Proxmox 8.4 и использовал ZFS.

    Для Proxmox OS был один NVMe диск, для ZFS - два других NVMe диска в RAID1.

    Обнаружил, что при высокой дисковой нагрузке в виртуалках, падало и подвисало всё: и виртуалки и сама ОС, хотя на диск ОС нагрузки не было.

    Я почитал на форуме Proxmox - и это известная проблема: при нагрузке дисков ZFS появляется большой IO delay на процессоре. Потом - зависания и иногда crash... И проблема - не в дисках (у меня server class NVMe), а вроде как в kernel.

    Сейчас поставил себе Proxmox + BRTFS, который у них - "technology preview", но работает всё стабильно.

    Моя система:

    • DELL Precision T7920

    • Intel Xeon Gold 6212U 24c/48t

    • 768GB RAM

    Я пробовал ставить и Ceph, но как-то уж очень он навороченный и сложный. Надо сидеть и разбираться, а хочется чтобы просто работало.


    1. AdminFuture Автор
      19.09.2025 16:32

      Здравствуйте!
      Спасибо за такой подробный отзыв и описание вашего опыта. Это классический и, надо признать, невероятно досадный сценарий, с которым сталкиваются многие, даже на очень мощном оборудовании. Вы абсолютно правы — проблема, скорее всего, не в ваших дисках (NVMe серверного класса — это именно то, что нужно), а в фундаментальных особенностях работы ZFS и её взаимодействия с ядром Linux, особенно на системах с огромным объемом ОЗУ.
      Давайте разберем, что именно произошло и почему ваш переход на Btrfs оказался успешным.
      Почему ZFS «повесила» систему при высокой нагрузке?
      Вы столкнулись с ключевой особенностью ZFS — её адаптивным кэшем (ARC), который живёт в оперативной памяти. На вашей системе с 768 ГБ ОЗУ ZFS по умолчанию могла зарезервировать под ARC огромный объем памяти (исторически до 50% от всей RAM, хотя в новых версиях Proxmox этот лимит стал более консервативным — 10% или 16 ГБ, но это все равно нужно проверять и настраивать).
      Когда ваши виртуальные машины начали генерировать высокую дисковую нагрузку, произошло следующее:

      • Перегрузка ARC: Кэш ZFS начал интенсивно работать: обрабатывать огромное количество запросов на чтение/запись, перемещать блоки между разными уровнями кэша, управлять метаданными. При гигантском размере ARC эта работа сама по себе создает значительную нагрузку на CPU и подсистему памяти.

      • Блокировки на уровне ядра: ZFS, будучи сложной файловой системой, активно взаимодействует с ядром Linux для управления памятью и вводом-выводом. При пиковых нагрузках на ARC это может приводить к длительным блокировкам (locks) внутри ядра. Система начинает тратить так много времени на управление ZFS, что другие процессы, даже не связанные с этим ZFS-пулом, не могут получить доступ к ресурсам.

      • Высокий IO Delay: Это именно то, что вы наблюдали. IO delay в данном случае — это не столько ожидание ответа от медленного диска (ваши NVMe молниеносны), сколько ожидание, пока ядро «освободится» от задач ZFS и сможет обработать запросы к другим устройствам, включая ваш системный диск. Система не ждет диск, она ждет сама себя. В итоге, хотя нагрузка была нацелена на ZFS-пул, эффект распространился на всю систему, потому что узким местом стал не диск, а само ядро, перегруженное управлением памятью для ZFS. Можно ли было это исправить на ZFS? Да, скорее всего, можно было. Для таких мощных систем стандартные настройки ZFS часто требуют тюнинга:

      • Ограничение ARC: Первое и самое главное — вручную ограничить максимальный размер ARC. В вашем случае, даже 64 ГБ или 128 ГБ для ARC было бы более чем достаточно, оставив подавляющую часть RAM свободной для виртуальных машин и самого ядра. Это делается в файле /etc/modprobe.d/zfs.conf, добавляя строку options zfs zfs_arc_max=BYTES.

      • Тюнинг volblocksize: Для дисков виртуальных машин Proxmox по умолчанию использует volblocksize=16k (в старых версиях было 8k). Для смешанных нагрузок увеличение этого параметра до 32k или 64k часто снижает нагрузку на метаданные и уменьшает "write amplification", что также могло бы облегчить работу ZFS.

      • Special VDEV: Учитывая наличие у вас нескольких NVMe, можно было бы создать зеркало из двух дисков как special vdev для пула данных. Это бы вынесло все метаданные на отдельное, сверхбыстрое устройство, радикально снизив нагрузку на основной пул и ARC, связанную с операциями над метаданными. Почему Btrfs работает стабильно? Ваш опыт с Btrfs также закономерен. Несмотря на статус «technology preview» в Proxmox, Btrfs в последних версиях ядра Linux стала значительно стабильнее. Ключевое отличие от ZFS в вашем сценарии — управление кэшем. Btrfs использует стандартный кэш страниц (page cache) ядра Linux, а не собственный гигантский менеджер памяти, как ARC в ZFS. Это делает её поведение более предсказуемым для планировщика ядра. Она не пытается «отвоевать» половину системной памяти и агрессивно ей управлять, поэтому вероятность возникновения тех самых блокировок ядра значительно ниже. Конечно, статус «technology preview» означает, что Proxmox не гарантирует полную поддержку и стабильность во всех сценариях, особенно при будущих обновлениях, но для многих пользователей, как и для вас, она оказывается надежным решением.

      • А что насчет Ceph? Вы абсолютно правы: Ceph — это «навороченный и сложный» инструмент. Его сложность оправдана тем, что он решает совершенно другую задачу — построение распределенного, отказоустойчивого хранилища на нескольких серверах. Он создан для сценариев, где выход из строя целого сервера не должен приводить к простою сервисов. Для задачи «чтобы просто работало» на одной, пусть и очень мощной, машине, Ceph действительно является избыточным. Спасибо еще раз, что поделились. Ваш случай — прекрасная иллюстрация того, что в мире IT не бывает универсально «лучшего» решения, а есть наиболее подходящее под конкретную задачу, железо и готовность к ручному тюнингу.


    1. werter_l
      19.09.2025 16:32

      Используйте lxc вместо vm везде, где это возможно и нагрузка на дисковую подсистему сразу станет меньше.


  1. ildarz
    19.09.2025 16:32

    Диски для данных 4-8x Enterprise SAS/SATA HDD или SSD

    SAS SSD в обсуждаемых конфигурациях не имеют смысла, их текущая ниша - СХД, аппаратные рейды, ну и иногда ситуации, когда просто нужен большой объем на SSD, а подключить много NVMe накопителей платформа не позволяет. NVMe уже давно как минимум не дороже, а иногда и сильно дешевле, а по рабочим характеристикам несравнимы, особенно в случае DAS. Так что если по какой-то причине экономим на спичках - это скорее SATA, и то не факт, если ситуация с бюджетом более-менее вменяема - почти всегда NVMe.

    Соответственно блок советов про кэширующие/отдельные NVMe диски практически неактуален, если только вам не нужна сверхвысокая производительность (а в SMB она нужна примерно никогда).

    Гиперконвергентный кластер на Ceph - крайне сомнительное решение для SMB, на мой взгляд. Возможностей выстрелить себе в ногу - навалом, производительность по дефолту плохая, выгоды совершенно неочевидны. 24/7 SMB обычно не работает, а там, где работает - имеет смысл смотреть на облачную инфраструктуру, а не строить колхоз на Ceph силами малоквалифицированного персонала (а другой в SMB - исключительная редкость). А если уж хочется чего-то локального, но отказоустойчивого - все еще есть неумирающая классика вида 2 ноды + двухконтроллерная СХД, и надо очень хорошо подумать, прежде чем выбирать Proxmox на Ceph взамен такого варианта.

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

    Ранее для off-site бэкапа требовалось либо настраивать синхронизацию на второй экземпляр PBS (что подразумевает наличие второго сервера или VPS), либо использовать сложные скрипты с утилитами вроде rclone. 

    Или ленточки купить.


    1. AdminFuture Автор
      19.09.2025 16:32

      Большое спасибо за такой развернутый и, что самое ценное, основанный на практике комментарий! Это именно тот уровень дискуссии, который делает технические сообщества живыми и полезными. Вы затронули несколько абсолютно верных и критически важных моментов, которые заслуживают детального обсуждения. Позвольте ответить по пунктам, чтобы прояснить позицию, изложенную в статье.

      1. SAS SSD vs. NVMe: Экономика б/у железа

      Вы абсолютно правы: если собирать сервер с нуля из новых компонентов, то NVMe — это король. По соотношению цена/производительность и IOPS/ватт он давно обогнал и SAS, и SATA. Статья ни в коем случае не оспаривает этот факт.

      Однако, ключевой контекст статьи — «экономим, но без авантюр», что для многих SMB означает покупку бывшего в употреблении (used) серверного оборудования. И здесь картина меняется. Серверы 3-5 летней давности (условные Dell PowerEdge Rx30/Rx40, HPE ProLiant Gen9/Gen10) массово оснащены SAS3 (12 Gbps) бэкплейнами и контроллерами (HBA). Найти платформу тех лет с 8-16 слотами U.2 NVMe — задача сложная и дорогая. А вот сервер с 24 SFF SAS3 отсеками — это стандарт.

      На вторичном рынке можно приобрести Enterprise SAS SSD (с высоким DWPD и PLP) по цене, которая значительно ниже новых NVMe аналогичной емкости. В этом сценарии сборка all-flash массива на SAS SSD — это не нишевое решение, а прагматичный и очень выгодный компромисс между ценой и надежностью. Именно поэтому SAS SSD были упомянуты — как реалистичный вариант для бюджетного, но надежного продакшена на базе б/у железа.

      2. Актуальность кэширования на NVMe

      Здесь снова все упирается в сценарий. Если ваш основной пул данных уже находится на NVMe, то, конечно, выносить SLOG или Special VDEV на еще один NVMe-диск имеет смысл только в погоне за экстремальными показателями, что для SMB действительно редкость.

      Но статья рассматривает более распространенный для SMB гибридный сценарий: массив из медленных, но емких и дешевых HDD, который нужно ускорить. В этой конфигурации небольшой зеркальный vdev из NVMe под метаданные (Special VDEV) и/или лог синхронных записей (SLOG) — это не роскошь, а необходимость. Он превращает медленный, «задумчивый» HDD-пул в отзывчивую систему, способную обслуживать ВМ и базы данных. Разница в производительности и отзывчивости интерфейса при операциях с метаданными (листинг директорий, работа со снапшотами) становится колоссальной.

      3. Ceph для SMB: Сложность vs. Настоящая HA

      Это, пожалуй, самый важный и дискуссионный пункт. Вы абсолютно правы во всех рисках: Ceph сложен, требует квалификации, и «выстрелить себе в ногу» действительно легко. Производительность «по умолчанию» может разочаровать.

      Однако, давайте посмотрим на альтернативы с точки зрения отсутствия vendor-lock-in и единой точки отказа.

      Классическая схема «2 ноды + двухконтроллерная СХД» — это прекрасное, проверенное временем решение. Но у него есть свои минусы, которые для SMB могут быть критичны:

      Стоимость и Vendor Lock-in: Хорошая двухконтроллерная СХД — это дорогое устройство от конкретного вендора, с его проприетарными прошивками, дорогими дисками (часто только брендированными) и платными лицензиями на функции. Это полная противоположность философии Proxmox и Open Source.

      Скрытая единая точка отказа: Несмотря на два контроллера, СХД — это все еще одна «коробка». Отказ бэкплейна, сбой прошивки при обновлении или проблема с питанием в стойке с СХД — и вся ваша инфраструктура останавливается. Ceph, будучи распределенной системой, устойчив к отказу целого шасси.

      Масштабируемость: Масштабирование СХД часто означает покупку новой, более дорогой «головы» или полок расширения. Масштабирование Ceph — это добавление еще одного стандартного, недорогого сервера.

      Ceph — это действительно «колхоз» в том смысле, что вы строите его сами из стандартных компонентов. Но это ваш колхоз, полностью под вашим контролем, без привязки к вендору. Статья как раз и призвана стать тем руководством, которое поможет избежать типовых ошибок и построить этот «колхоз» правильно, чтобы он работал предсказуемо и надежно. Да, это требует от администратора больше знаний, но и дает несоизмеримо больше гибкости и независимости в долгосрочной перспективе.

      4. ZFS и сложность тюнинга

      Снова соглашусь. Производительность ZFS сильно зависит от конфигурации. Именно поэтому в статье уделено столько внимания параметрам ashift, recordsize, compression и т.д. Цель статьи — не сказать «ZFS — это просто», а дать конкретный набор рецептов: «Для ВМ с базами данных используйте recordsize=16K на зеркалах, для файлопомойки — recordsize=1M на RAIDZ2». Это попытка превратить сложность в управляемый инженерный процесс.

      5. Off-site бэкапы и ленты

      Отличное дополнение! Вы совершенно правы, про ленты незаслуженно забыли. Для долгосрочного, холодного и полностью air-gapped архива ленточные накопители (LTO) до сих пор остаются одним из самых надежных и дешевых (в пересчете на ТБ) решений. Обязательно учту это в будущих материалах.

      Еще раз огромное спасибо за ваш комментарий. Он идеально подсветил те моменты, где инженерные компромиссы и экономические реалии малого бизнеса вступают в игру, и помог глубже раскрыть контекст предложенных в статье решений.


  1. RoasterToaster
    19.09.2025 16:32

    Какие прельстивые ответы. Это какая иишка так елейно мироточит?


    1. AdminFuture Автор
      19.09.2025 16:32

      птица говорун
      птица говорун

      Обычный админский профессиональный деформаз — когда вместо общих слов расписываешь, как именно собрать железо так, чтобы завтра не горело. Птица-говорун в классике “отличается умом и сообразительностью” — то есть говорит не громко, а по существу. Я именно это и делаю: фиксирую контекст SMB и даю рабочие компромиссы, которые пережили продакшен».

      По теме, если коротко, где тут не “мироточение”, а инженерия:

      1. SAS SSD на вторичке
        Для SMB с б/у шасси уровня Gen9/Gen10 и SAS3-бекплейнами это нормальный, проверяемый путь: PLP, высокий DWPD, вменяемая цена и предсказуемость. Не золотая пуля, но понятный all-flash без охоты за редкими U.2-платформами прошлых лет.

      2. NVMe не ради понтов, а там, где это даёт максимум
        В гибриде (HDD-пул) — зеркальный NVMe под Special VDEV (метаданные) и/или SLOG для sync-нагрузки резко снимает “задумчивость”: листинг, снапшоты, мелкий IO. В all-NVMe — да, кеши спорны, там уже речь о крайних сценариях, а не о здравом смысле SMB.

      3. Ceph не “колхоз ради колхоза”, а способ убрать одиночную точку отказа
        Он действительно требует рук и головы. Но взамен — горизонтальное масштабирование без вендор-замка и устойчивость к падению целого шасси, а не только контроллера. Это осознанный обмен сложности на отказоустойчивость.

      4. ZFS — не магия, а набор рычагов
        recordsize, ashift, компрессия — всё это не “для красоты”, а чтобы конкретные профили нагрузки (ВМ/БД vs файлопомойка) работали предсказуемо. Формулы простые: для БД — маленький блок на зеркалах; для холодного/крупного — RAIDZ с крупным блоком.

      И да, про ленты согласен на 200%: для холодного, air-gapped архива LTO всё ещё король по руб/ТБ и по трезвости.

      Так что пусть уж в треде звучит птица-говорун — аккуратно и по делу — а не соловей-разбойник. Я открыт к предметной критике: можно пройтись по каждому пункту и разобрать узкие места — где именно вы видите риск или несоответствие практике. Если найдём слабое место — поправлю текст, чтобы следующий, кто будет собирать железо “экономим, но без авантюр”, получил ещё более полезный гайд.

      P.S. Про “ИИ”: если бы писал ИИ, он бы вряд ли упирался в б/у SAS3-бекплейны, PLP и повадки SLOG/metadata в реальном гибриде. Это всё из тех ситуаций, где ночью смотришь на iLO и думаешь: «как сделать, чтобы утром оно просто работало».


  1. ForsakenROX
    19.09.2025 16:32

    Статью полностью написанную нейросетью комментируют, вроде бы квалифицированные специалисты, в комментариях нейросеть им отвечает и они ведут диалог не замечая околесицы с вставками случайных слов и выдуманной терминологии. Почему эта статья прошла модерацию ? Зачем это на хабре ? Воистину - судный день не просто ближе, он уже настал.


    1. Uolis
      19.09.2025 16:32

      Да уж, комменты от "автора-ии" просто жесть. Я не понимаю как люди могут без слёз смотреть на все эти "Здравствуйте! Спасибо за увлекательный ответ!". Брр...



  1. Roman2dot0
    19.09.2025 16:32

    Статья к удалению, ии автора в бан.

    Претензий бы не было, буть это годная статья, но, по факту, она такой не является.


  1. VenbergV
    19.09.2025 16:32

    Жаль в Proxmox VE 9 решили убрать GlusterFS.
    Пользуемся много лет для HA кластеров, где VM диск нужен почти только для загрузки. Например программный маршрутизатор, с сетевым экраном, и с пол сотнями туннелей до филиалов.