Как устроено программное хранилище данных: архитектура, уровни и основные компоненты | AdminWiki

Как устроено программное хранилище данных: архитектура, уровни и основные компоненты

30 августа 2026 10 мин. чтения
Содержание статьи

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

Типовой путь записи выглядит так: приложение или виртуальная машина отправляет данные по SMB, NFS, iSCSI либо через локальный интерфейс; сервис хранилища принимает запрос; часть операций попадает в RAM-кэш или журнал синхронной записи; затем данные распределяются по vdev, RAID-группе или отдельным дискам. При чтении тот же путь проходит в обратную сторону. Поэтому быстрые NVMe не компенсируют перегруженный сетевой канал, а RAID не защищает от ошибочного удаления файлов.

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

Как устроено хранилище данных: краткая схема архитектуры

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

  • Клиенты: пользователи, приложения, виртуальные машины, Kubernetes-узлы.
  • Сеть и протокол доступа: Ethernet, SMB, NFS, iSCSI.
  • Сервис хранения: экспорт ресурсов, аутентификация, управление сессиями.
  • Кэш и журнал записи: RAM, SSD, защищенное устройство для синхронных операций.
  • Логический слой: datasets, файловые системы, тома, квоты и снимки.
  • Пул хранения: объединение vdev, RAID-групп или отдельных носителей.
  • Дисковый уровень: HBA, контроллеры, HDD, SATA/SAS SSD, NVMe.
  • Защита: репликация, резервные копии, мониторинг, план восстановления.

Какие задачи решает программная система хранения данных

Система должна предоставлять нужный тип доступа, хранить требуемый объем, выдерживать рабочую нагрузку и сохранять данные при ожидаемых сбоях. Для файловых ресурсов обычно используют SMB или NFS. Блочные устройства для гипервизоров и некоторых баз данных часто публикуют по iSCSI. Локальный доступ подходит для сервисов, работающих на том же узле.

Приоритеты задает приложение. Архив видеозаписей обычно чувствителен к последовательной пропускной способности и емкости. Виртуальные машины и СУБД чаще упираются в случайный доступ, IOPS и p95/p99 latency. Для сравнения файлового, блочного и объектного подходов используйте практическое руководство по типам хранилищ.

Где проходят границы системы и внешние зависимости

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

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

Уровни хранения данных: от диска до файлового ресурса

Дисковый уровень хранения данных: устройства, контроллеры и интерфейсы

Физический уровень задает базовые пределы системы. HDD дают большую емкость при низкой стоимости, но медленно обслуживают случайные операции из-за механики. SATA и SAS SSD сокращают задержку и повышают IOPS. NVMe уменьшает накладные расходы протокола и обычно дает больше очередей, что полезно при параллельной нагрузке.

Контроллер ввода-вывода должен корректно передавать состояние дисков операционной системе. Для ZFS и других файловых систем с проверкой контрольных сумм обычно выбирают HBA в режиме JBOD или passthrough. Непрозрачный аппаратный RAID скрывает отдельные устройства и может усложнить диагностику, замену диска и контроль целостности.

Проверяйте S.M.A.R.T., температуру, ошибки чтения и записи, состояние кабелей, версии прошивок дисков и HBA. Диски одинакового объема могут заметно различаться по задержкам, устойчивой скорости записи и поведению при длительной нагрузке.

RAID в системе хранения: избыточность до пула

RAID распределяет данные между несколькими дисками и сохраняет работоспособность при отказе части носителей. Зеркало хранит две или более копии блоков. RAID 5 и RAIDZ1 используют один parity-блок на полосу. RAID 6 и RAIDZ2 выдерживают отказ двух дисков. RAIDZ3 рассчитан на отказ трех дисков.

СхемаДопустимый отказХарактерные сценарииОсобенность
ЗеркалоОдин диск в каждой пареВМ, базы данных, низкая задержкаВысокая производительность случайной записи, полезная емкость около 50%
Parity с одним дискомОдин диск в группеНебольшие архивы, умеренная нагрузкаМеньше запас на время восстановления
Parity с двумя дискамиДва диска в группеЕмкие HDD-пулыБольше защита, ниже полезная емкость

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

Пул хранения данных: единое пространство и правила распределения

Пул объединяет физические диски, vdev или RAID-группы в общий ресурс. На этом уровне система распределяет данные, учитывает свободное место, создает снимки и публикует логические области для пользователей и сервисов. Названия объектов различаются между TrueNAS, ZFS, Linux и другими платформами, но принцип остается тем же.

Топологию пула выбирают до загрузки рабочих данных. Во многих реализациях нельзя безболезненно изменить ширину RAID-группы или заменить parity-схему после создания. Смешивание носителей с разной емкостью и производительностью приводит к неравномерному использованию и сложной прогнозируемости.

Практический пример: несколько зеркальных vdev подходят для виртуальных машин с большим числом случайных операций. RAIDZ-пул из HDD подходит для последовательных архивов, резервных копий и видеоконтента. Пул не следует заполнять до предела: при высокой заполненности ухудшается распределение новых блоков, возрастает фрагментация и усложняется обслуживание.

Файловая система в хранилище данных: тома, наборы данных и доступ

Файловая система организует данные в файлы и каталоги, применяет права доступа, квоты, сжатие, снимки и политики хранения. В ZFS отдельный dataset позволяет задать собственные квоты, recordsize, сжатие и расписание снимков. Это удобнее, чем единый ресурс с одинаковыми параметрами для базы данных, пользовательских файлов и архивов.

SMB и NFS предоставляют файловый доступ. iSCSI отдает клиенту блочное устройство, а файловую систему создает уже сам клиент или гипервизор. Настройки блока должны соответствовать нагрузке: крупные последовательные файлы обычно выигрывают от крупных блоков, а мелкие случайные операции требуют другой настройки. Детали работы пулов, datasets, snapshots и контрольных сумм разобраны в материале о ZFS в программных системах хранения.

Компоненты системы хранения данных, которые определяют производительность

IOPS, задержка и пропускная способность: какие метрики смотреть

Пропускная способность измеряет объем данных за секунду. IOPS показывает число операций ввода-вывода. Задержка показывает время выполнения одной операции. Для последовательной записи больших файлов критичны МБ/с или ГБ/с. Базы данных, почтовые серверы и диски виртуальных машин обычно чувствительны к latency и IOPS.

Среднее значение задержки скрывает пики. Фиксируйте p95 и p99 latency, размер блока, read/write ratio, глубину очереди, количество параллельных клиентов и долю синхронных записей. Тест с одним потоком и последовательным доступом не подтверждает готовность пула к нагрузке нескольких ВМ.

Кэширование и журнал записи: когда они ускоряют работу

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

Журнал синхронной записи сокращает задержку операций, которые приложение считает завершенными только после надежной фиксации данных. Для такого устройства нужны защита от потери питания, PLP, и надежное питание самого сервера. Обычный потребительский SSD без PLP может стать риском: при отключении питания подтвержденные операции могут не попасть на постоянный носитель.

Сеть и протокол доступа как часть производительности хранилища

Сетевой интерфейс ограничивает скорость раньше дисков, если его пропускной способности не хватает. Один канал 1 GbE дает практический предел около 110 МБ/с для полезного трафика. Канал 10 GbE снимает это ограничение для многих NAS-сценариев, но не решает проблему высокой дисковой задержки.

Проверяйте NIC клиента и сервера, коммутатор, ошибки интерфейсов, MTU, настройки SMB/NFS/iSCSI, multipath и загрузку CPU. Агрегация каналов повышает суммарную емкость для нескольких потоков, но один поток часто остается ограниченным скоростью одного линка. Перед заменой дисков измерьте весь путь запроса от клиента до носителя.

Отказоустойчивость и защита данных: RAID, снимки, репликация и резервные копии

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

От каких сбоев защищает RAID, а от каких нет

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

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

Снимки и репликация: локальная история и копия на другой площадке

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

Репликация передает снимки на второй узел, удаленную площадку или совместимое внешнее хранилище. Асинхронная репликация имеет RPO, равный интервалу между успешными передачами. При интервале 15 минут потеря до 15 минут последних изменений допустима по проектной модели. Ошибочное удаление может попасть в реплику, если история снимков слишком короткая.

Резервное копирование и проверка восстановления

Бэкап должен быть независим от основного пула и иметь версии. Практический ориентир 3-2-1: три копии данных, два типа носителей, одна копия вне основной площадки. Схему нужно адаптировать под угрозы, требования к хранению и бюджет.

Зафиксируйте RPO, допустимую потерю данных во времени, и RTO, допустимое время восстановления сервиса. Настройте уведомления о неуспешных заданиях, ограничьте права на удаление копий, периодически восстанавливайте файлы и сервисы в тестовой среде. Подробные схемы, расчет объема и порядок проверки доступны в руководстве по резервному копированию систем хранения.

Как спроектировать конфигурацию хранилища перед запуском

Соберите требования к нагрузке, емкости и доступности

Начните с измеримых данных: активный объем, годовой рост, размер типичного файла, число клиентов, read/write ratio, случайный или последовательный профиль, целевой уровень p95 latency, RPO и RTO. Добавьте запас свободного места, запас производительности и окно обслуживания.

Отделите постоянную нагрузку от пиков. Например, ночное резервное копирование, массовая миграция ВМ и ежемесячный отчет могут создавать кратковременный поток, который не виден в обычной статистике. Планируйте его отдельно.

Сопоставьте профиль нагрузки со схемой пула и носителями

Зеркала и быстрые SSD или NVMe подходят для ВМ и баз данных, где нужна низкая задержка случайных операций. HDD-пулы с parity-схемой подходят для емких последовательных архивов. При смешанной нагрузке разделите классы хранения: не размещайте горячие диски ВМ и потоковый архив на одном перегруженном пуле без проверки.

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

Проверьте восстановление, мониторинг и администрирование хранилища данных

  • Настройте уведомления о деградации RAID, ошибках S.M.A.R.T., температуре и проблемах контроллера.
  • Контролируйте заполнение пула, latency, IOPS, пропускную способность, состояние репликации и задания бэкапа.
  • Документируйте схему пула, сетевые зависимости, учетные записи, ключи шифрования и порядок восстановления.
  • Проведите тест отказа диска и отдельный тест восстановления файлов или сервиса.
  • Обновляйте прошивки и программные компоненты в запланированное окно с проверенным откатом.

Типовые ошибки при построении программного хранилища

Выбор RAID без учета восстановления и свободной емкости

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

Использование репликации или снапшотов вместо резервной копии

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

Оценка системы только по скорости дисков

Высокая latency при свободных дисках указывает на сеть, протокол, CPU, очередь контроллера, синхронную запись или неверный размер блока. Упор в 1 GbE не исправить заменой HDD на NVMe. Измеряйте клиент, сеть, сервис доступа, кэш, пул и носители в одной временной шкале.

Итог: как читать архитектуру хранилища перед настройкой

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

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

Поделиться:
Сохранить гайд? В закладки браузера