Linux и системы хранения данных

Linux - открытая платформа для построения гибких решений для хранения данных

Платформу Linux можно назвать "швейцарским перочинным ножом" c множеством файловых систем. Кроме того, Linux предлагает множество технологий для хранения данных, подходящих как для обычных компьютеров, так и для серверов. Еще Linux включает в себя первоклассные NAS и SAN-технологии, защиту данных и управление запоминающими устройствами, а также поддержку современных технологий: облачных сред и твердотельных накопителей. В этой статье рассматриваются различные аспекты организации хранения данных в Linux, позволившие этой операционной системе занять одно из ключевых мест на рынке серверных решений.

M. Тим Джонс, инженер-консультант, Emulex Corp.

М. Тим ДжонсМ. Тим Джонс - архитектор встроенного ПО и, кроме того, автор книг Artificial Intelligence: A Systems Approach, GNU/Linux Application Programming (выдержавшей на данный момент второе издание), AI Application Programming (второе издание) и BSD Sockets Programming from a Multilanguage Perspective. Он имеет обширный опыт разработки ПО в самых разных предметных областях - от ядер специальных ОС для геосинхронных космических аппаратов до архитектур встраиваемых систем и сетевых протоколов. Тим - инженер-консультант Emulex Corp., Лонгмонт, Колорадо.



13.12.2011

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

В этой статье исследуются различные технологии хранения данных, которые помогают Linux оставаться одним из ключевых игроков на рынке систем для хранения данных. Сначала рассматриваются низкоуровневые аспекты – различные типы архитектур для хранения данных, - а затем высокоуровневые, включая функциональность, файловые системы и направления будущего развития (см. рисунок 1).

Рисунок 1. Структура решения для хранения данных
Рисунок 1. Структура решения для хранения данных

Классификация архитектур для хранения данных

Ключевая характеристика любой архитектуры для хранения данных – это способ подключения устройств хранения данных к целевой платформе. Трем основным способам подключения соответствуют три типа архитектур, охватывающие большую часть моделей хранения данных:

  • устройство хранения с непосредственным подключением к платформе (direct-attached storage - DAS);
  • сеть хранения данных (storage area network - SAN);
  • сетевое устройство хранения (network attached storage - NAS).

Платформа Linux поддерживает все три типа архитектур и эволюционирует вместе с ними.

Другие типы устройств

Эта статья в основном посвящена устройствам хранения данных на жестких дисках, но стоит сказать несколько слов и про другие типы устройств, поддерживаемых в Linux. Linux является непревзойденным лидером в поддержке устройств массового хранения данных – от уже почти исчезнувших дискет и CD и DVD-дисководов до корпоративных ленточных накопителей.

На рисунке 2 изображены три указанных типа моделей хранения данных с дополнительным акцентом на то, где находится файловая система, а где само устройство хранения данных. В DAS-модели используется непосредственное подключение устройств к платформе; она охватывает большинство вариантов использования устройств хранения данных. SAN-модель отделяет устройство хранения данных от платформы и организует доступ к нему через специальные блочные протоколы. NAS-модель использует архитектуру, схожую с SAN, но функционирует на файловом уровне.

Рисунок 2. Основные модели хранения данных
Рисунок 2. Основные модели хранения данных

Непосредственное подключение устройств хранения данных (DAS)

Linux поддерживает огромное количество DAS-интерфейсов, включая старые стандарты, например, ATA (Advanced Technology Attachment)—IDE (Integrated Drive Electronics), ATA—parallel SCSI и Fibre Channel, наряду с новыми интерфейсами, такими как SAS (serial attached SCSI), SATA (serial ATA) и eSATA (external SATA). Также в Linux поддерживаются и перспективные технологии хранения данных, например, USB3 (Extensible Host Controller Interface [xHCI]) и Firewire (IEEE 1394).

Сети хранения данных

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

Для SAN-хранилищ существует большое количество протоколов и интерфейсов. В Linux поддерживаются стандартные SAN-протоколы, такие как Fibre Channel и iFCP (расширение Fibre Channel поверх протокола IP). Также имеются и более современные протоколы, как SAS, FCoE (расширение Fiber Channel поверх Ethernet) и iSCSI (Internet SCSI). Кроме этого в Linux можно найти и более специфичные протоколы, например, RDMA—iSER (расширение iSCSI для удаленного прямого доступа к памяти) и SCSI RDMA (расширение SCSI RDMA для высокоскоростной шины Infiniband).

Преимущества, обусловленные "вторым рождением" Ethernet уже в качестве протокола для хранения данных, полностью реализованы в Linux, что доказывает гибкость и силу подходов, применяющихся в Linux. Имеющаяся в Linux полноценная поддержка 10-Gigabit Ethernet позволяет создавать высокопроизводительные SAN-решения. В Linux можно использовать протокол ATAoE (ATA поверх Ethernet), который расширяет функциональность протокола ATA за счет возможностей протокола Ethernet.

Сетевые хранилища

Последними в нашем списке моделей хранения данных представлены NAS-решения. NAS-хранилище объединяет устройства хранения данных с помощью сетевых интерфейсов, предоставляя различным клиентам доступ к хранилищу на файловом уровне. Чаще всего для этого используются два популярных протокола: NFS (Network File System – сетевая файловая система) и SMB/CIFS (Server Message Block/Common Internet File System – сетевой протокол прикладного уровня для удаленного доступа к различным ресурсам).

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

Развитие Linux идет рука об руку с совершенствованием и расширением NFS. К данному моменту NFS превратилась в stateful-протокол (протокол с поддержкой состояния), включающий такие оптимизации, как отделение данных от метаданных и параллельный доступ к данным. Дополнительную информацию об эволюции NFS можно получить из статей, перечисленных в разделе Ресурсы. Поддержка 10 Gigabit Ethernet в Linux делает возможным создание высокопроизводительных NAS и SAN-репозиториев.

Другие модели хранения данных

Далеко не все архитектуры хранения данных четко помещаются в рамки, определенные DAS-, SAN- и NAS-моделями. Но благодаря тому, что Linux является открытой платформой и разработка новых технологий для него не представляет особой сложности, в Linux можно найти поддержку самых передовых технологий.

Стоит упомянуть еще одну интересную, хотя и не новую, модель хранения данных – объектно-ориентированное хранение (object storage). Эта модель отделяет от файла относящиеся к нему метаданные и хранит их отдельно друг от друга (на серверах для данных и метаданных). Подобное разделение дает определенные преимущества, такие как минимизация «узких мест», связанных с обращением к метаданным, поскольку доступ к ним требуется только для поиска и открытия файла. Также можно улучшить производительность, разделив данные между несколькими серверами для параллельного доступа. Объектное хранилище может быть реализовано в Linux различными способами, в том числе на основе спецификации OSD (Object Storage Device – объектно-ориентированные устройства хранения данных) либо с помощью файловых систем Linux clUSTER (Lustre) или exofs (Extended Object File System – расширенная объектно-ориентированная файловая система).

В другой аналогичной технологии – CAS (content-addressable storage – контентно-адресуемое хранение данных) – для поиска данных на устройствах хранения используются хэш-значения, полученные из данных. Важное преимущество этой технологии, также известной как FCS (fixed-content storage), состоит в том, что она позволяет легко решить проблему дублирования данных: повторяющие фрагменты можно идентифицировать по одинаковым хэш-значениям. Этот подход к организации хранения данных применяется в архитектуре Venti, изобретенной в Bell Labs и поддерживаемой в Linux.


Управление логическими разделами

Когда-то виртуализация хранения информации была доступна только в системах хранения данных верхней ценовой категории, но теперь она является стандартной возможностью Linux. Одна из наиболее важных служб, доступных в Linux, - это LVM (logical volume manager – менеджер логических разделов.) LVM – это "прослойка", расположенная над физическими запоминающими устройствами и сопутствующими инструментами, входящими в архитектуру системы хранения данных. LVM скрывает подробности нижележащей архитектуры и обеспечивает к ней доступ как к одному или нескольким логическим разделам, управлять которыми гораздо проще. Например, изменить размер жесткого диска невозможно, а размер логического раздела можно менять, добавляя или отнимая пространство.

Благодаря своей способности "скрывать" физические устройства за логическими разделами LVM позволяет расширить функциональность систем хранения данных. Например, можно создавать копии разделов, доступные только для чтения или записи, распределять данные между разделами для повышения производительности (RAID-0), зеркалировать данные между разделами (RAID-1), осуществлять миграцию разделов между физическими устройствами без остановки системы.

Для защиты данных без помощи зеркалирования в Linux имеется функциональность md (multiple disks – множество дисков) и богатый набор RAID-возможностей. Сюда входят программная RAID-функциональность, поддержка RAID-4 (чередование данных с блоком контроля четности) и RAID-5 (чередование данных с распределенным блоком контроля четности), RAID-6 (чередование данных с распределенным и дублирующимся блоком контроля четности) и RAID-10 (чередование данных с зеркалированием).

Технология LVM основана на компоненте device-mapper, который входит в систему хранения данных и предоставляет функциональность многопутевого подключения (multipath). При использовании multipath-подключения к устройству хранения данных можно обращаться с помощью нескольких не зависящих друг от друга способов, например, один SCSI-диск может подключаться к двум SCSI-контроллерам. Тем самым обеспечивается защита от сбоев при доступе к устройству, так как оно останется доступным, пока существует хотя бы один работающий способ обратиться к нему. В SAN-архитектуре устройства хранения данных обычно подключаются к "концентратору" сети хранения данных (SAN-fabric) с помощью нескольких интерфейсов.


Новые возможности систем хранения данных

В последние несколько лет в стек технологий хранения данных были добавлены две новые возможности, связанные с эволюцией области хранения данных:

  • целостность данных,
  • поддержка твердотельных накопителей.

Целостность данных

Первое нововведение связано с использованием массовых жестких дисков в корпоративных системах хранения данных. В то время как жесткие диски для промышленного применения (например, SAS-накопители) отличаются высокой надежностью, SATA-накопители разрабатываются по другим требованиям, из которых важнейшим является цена. Поэтому причине SATA-диски могут страдать от проблемы, известной как "скрытое повреждение данных", когда возникающие ошибки могут оставаться незамеченными до тех пор, пока данные не будут считаны с диска. Чтобы решить эту проблему и сделать возможным использование SATA-дисков в корпоративной среде, в блоки на диске были добавлены коды целостности данных (в этом случае на диске применяются 520-байтные сектора вместо обычных 512-байтных). Кроме того, диск при записи данных может сам проверять, что код целостности соответствует записываемым данным. Такой подход позволяет обнаруживать ошибки непосредственно во время записи на диск, а не позже, когда уже ничего нельзя сделать.

Этот механизм, изображенный на рисунке 3, называется DIF (data integrity field – поле целостности данных). DIF-последовательность представляет собой 8-байтную завершающую последовательность, включающую в себя CRC-значение (cyclic redundancy check – циклический избыточный код) для этого блока данных, ссылочную метку (reference tag – обычно фрагмент LBA-адреса (logical block addressing – механизм логической адресации к блокам) и метку приложения (application tag), значение которой определяет приложение. Ссылочная метка используется для поиска ошибок записи, когда данные записываются в ненадлежащий блок, а метка приложения используется для поиска других ошибок в соответствующем приложении. Например, при записи PDF-документа метка приложения может содержать значение специального поля, определенного в формате PDF. При считывании PDF-документа значение, сохраненное в метке приложения каждого блока, проверяется на соответствие формату PDF. Технология DIF поддерживается в Linux начиная с ядра версии 2.6.27.

Рисунок 3. Структура DIF-последовательности для 512-байтного сектора
Рисунок 3. Структура DIF-последовательности для 512-байтного сектора

Поддержка твердотельных (SSD) накопителей

Появление SSD-накопителей привело к серьезным изменениям в области хранения данных. В этих накопителях удалось устранить значительные задержки, связанные с вращением дисков, и организовать более эффективный обмен данными между накопителем и центральным процессором. Но SSD-накопители отличаются от жестких дисков тем, что имеют ограниченный период использования. На SSD-накопитель данные можно записать только ограниченное число раз, зависящее от используемой технологии, поэтому эти накопители должны быть максимально эффективными при записи данных. Что еще хуже, SSD-накопитель для минимизации ошибок вынужден перемещать данные внутри себя. Этот процесс, называемый уборкой мусора (garbage collection) или выравниванием износа (wear-leveling), также выполняет запись на накопитель, снижая его ресурс, и поэтому должен быть минимизирован.

Другое отличие SSD-накопителей от обычных жестких дисков состоит в том, что HDD-накопитель не заботится о корректности данных, хранящихся на диске. Если файловая система признает данные "недействительными", данные все равно могут оставаться на диске без всяких последствий. У SSD-накопителей это ограничение отсутствует, так как у них существует уже упоминавшаяся функциональность wear-leveling. По этой причине Linux (начиная с ядра версии 2.6.29) поддерживает функциональность, позволяющую файловой системе общаться с SSD-накопителем и передавать ему список бракованных блоков. Эта функциональность позволяет SSD-накопителю исключить эти блоки из процесса wear-leveling и увеличить продолжительность использования накопителя.


Файловые системы

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

Из современных файловых систем Linux поддерживает ZFS и BTRFS (Butter FS). Эти файловые системы конкурируют между собой и используют разновидность модели copy-on-write (данные копируются только тогда, когда клиент обращается к ним с целью записи). Эти системы также поддерживают дедупликацию данных, встроенную защиту данных (по аналогии с RAID), контрольные суммы метаданных и другие возможности (например, моментальное копирование).

Linux также является "родной" ОС для множества распределенных файловых систем. Например, массовая параллельная распределенная файловая система Lustre поддерживает десятки тысяч узлов и масштабируется до объемов в десятки петабайт. В прошлом году в ядро Linux была добавлена поддержка файловой системы Ceph, предоставляющей схожую функциональность. Также Linux поддерживает и другие файловые системы, например, GlusterFS и GPFS (General Parallel File System – стандартная параллельная файловая система).

В Linux можно найти и специализированные файловые системы, включая журналируемые файловые системы, например, NiLFS(2) (New Implementation Log Structure File System – новая реализация журналируемой файловой системы), и объектно-ориентированные файловые системы, такие как exofs. Поскольку Linux может применяться в различных областях, в ней есть файловые системы и для ограниченных ресурсов (встраиваемые системы), и для высокопроизводительных приложений (HPC). Для встраиваемых систем доступны YAFFS2 (Yet Another Flash File System – еще одна файловая система для flash-памяти) и JFFSv2 (Journaling Flash File System – журналируемая файловая система для flash-памяти), UBIFS (Unsorted Block Image File System). Для HPC-приложений доступны pNFS (parallel NFS – параллельная NFS), Luster и GPFS.


Заключение

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

Одна из последних инноваций в области хранения данных – это использование удаленных сервисов для экономически выгодного хранения архивных данных. Сегодня различные поставщики предлагают на основе этой технологии, известной как "облачное хранение" (cloud storage), эффективный и «прозрачный» доступ к удаленным централизованным хранилищам данных, обеспечивающим различные уровни обслуживания (например, степень защиты или пропускную способность). Две подобные платформы – это Ubuntu One и Dropbox, также известна платформа SpiderOak, позволяющая сохранять локальные каталоги в облачное хранилище за умеренную плату.

Какие еще перспективные возможности видны на горизонте Linux? Поддержка большеразмерных (больше 512-байт) секторов и "тонкое резервирование" (thin provisioning), позволяющее избежать ненужного резервирования дискового пространства (когда объявленный размер хранилища превосходит его физическую емкость). Стоит упомянуть и дедупликацию данных, позволяющую максимально повысить доступность хранилища, и более эффективный стек технологий, использующий скоростные характеристики и эффективность SSD-накопителей. Что бы ни случилось в области хранения данных, Linux обязательно узнает об этом первым.

Ресурсы

  • Linux and the storage ecosystem: оригинал статьи (EN).
  • Demystifying Storage Networking: DAS, SAN, NAS, NAS Gateway, Fibre Channel, and iSCSI (EN): статья от IBM Storage Networking о различиях между основными моделями хранения данных.
  • NFS продолжает развиваться вместе с Linux, и сегодня Linux поддерживает параллельную версию NFS (pNFS), обеспечивающую высокую масштабируемость и производительность. В статье М. Тима Джонса Network file systems and Linux (developerWorks, ноябрь 2010 г.) рассказывается об эволюции NFS.
  • В этой статье упоминается LVM, как инструмент для виртуализации решений для хранения данных. Дополнительную информацию о LVM2 (вторая версия LVM) можно найти на странице LVM2 Resource Page. LVM2 использует компонент device-mapper, описание которого можно найти на странице Device-mapper Resource Page. Там же можно ознакомиться с пользовательскими инструментами для выполнения multipath-операций.
  • Технология T10 DIF обеспечивает «сквозную» защиту внутри системы хранения данных. Дополнительную информацию о завершающей DIF-последовательности и теоретическое обоснование этой технологии можно найти в первоначальном описании проекта T10 - T10/03-224r0.
  • По ссылкам, перечисленным ниже, можно найти информацию о некоторых файловых системах, упоминавшихся в этой и других статьях:
  • Технология DRBD предоставляет простой способ защиты физического тома с помощью двух серверов. Согласно этой технологии, физический том реплицируется по обычной TCP-IP-сети на указанный хост. Дополнительную информацию о DRBD можно найти в статье High availability with the Distributed Replicated Block Device (developerWorks, август 2010 г.)
  • CAS-системы предоставляют высокоэффективное решение для хранения данных благодаря простоте дедупликации. Наибольший интерес представляет использование CAS в контексте виртуализации, где дублирование данных весьма распространено. Получить дополнительную информацию по этому вопросу можно в статье Experiences with Content Addressable Storage and Virtual Disks (Anthony Liguori and Eric Van Hensbergen).
  • ОС Linux поддерживает технологию EHCI (Enhanced Host Controller Interface – усовершенствованный интерфейс хост-контроллера) и новейшую технологию xHCI (для высокоскоростных устройств USB 3.0).
  • ОС Linux поддерживает различные стандарты подключения дисковых накопителей, включая SCSI, IDE/Enhanced IDE (EIDE)/ATA, SAS, SATA, Fibre Channel и др.
  • В этой статье упоминаются файловые системы GPFS (высокопроизводительная кластерная файловая система) и Lustre (массовая параллельная распределенная файловая система). ОС Linux является безусловным лидером по широте поддержки файловых систем самых различных типов.
  • В SSD-накопителях, в отличие от механических жестких дисков, данные хранятся в твердотельной (solid-state) памяти, например, NAND-flash. SSD-накопители имеют превосходную производительность и низкое энергопотребление по сравнению с традиционными вращающимися дисками. Сегодня SSD-накопители применяются в промышленных и потребительских устройствах.

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux
ArticleID=780925
ArticleTitle=Linux и системы хранения данных
publish-date=12132011