...
...

Затерявшийся в Дебрях

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

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

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

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

"Контроллер шины" - аппаратная интерфейсная плата (или карта/адаптер, если вы предпочитаете), связывающая шину ввода-вывода компьютера с устройствами хранения. Это включает все различные типы парралельных SCSI контроллеров (например, от Adaptec Inc., DPT, QLogic Corp. и Mylex Corp.). Другие включают Fibre Channel интерфейсы (FC-AL, FC-SW, IBM Corp's SSA и Apple Computer Inc's FireWire).

Термин "контроллер накопителя" будет использован относительно к интегрированной логике управления и кэшу, находящимися на каждом дисковом накопителе.

Я использую термин "ATA" относительно любого устройства, которое использует любой из IDE протоколов: EIDE, ATA-2, ATA-3, Ultra33-ATA и Ultra66-ATA. Ни одно из этих устройств не использует внешний контроллер, взамен они соединяются с шиной ввода-вывода через устройство буферизации, остальное делают ATA-драйверы ОС.

Я применяю термин "SCSI" относительно любого устройства или контроллера, который использует один из многочисленных SCSI протоколов: Fast SCSI (SCSI 2), Ultra SCSI (SCSI 3) или Ultra2 SCSI (SCSI 2).

Все эти устройства требуют контроллеры, и устройства делают большую часть работы. Это противоположность ATA устройствам.

"Дисковый раздел" - это смежная группа блоков (SCSI) или цилиндров (ATA), которые определены как единое целое. Диск может иметь один и более разделов, что зависит от его размера и ограничений файловой системы. Разделы - прежде всего, инструмент управления дисковым пространством, таким как содержание ОС, приложений и разделение данных. Изначально, файловая система - программное обеспечение, которое осуществляет связь между ОС и данными. Каждый дисковый раздел должен иметь файловую систему, за исключением некоторых специфических случаев (разделы для баз данных или swap). На одном компьютере каждый раздел может использовать разные файловые системы. Файловая система реализует механизм обнаружения ошибок и контролирует движение данных в/из этой структуры хранения. Наиболее широко используемые системы: UNIX File System (UFS), Veritas Journaling File System (VXFS), Journaling File System (JFS) и Advanced File System (ADVFS) для UNIX, а также File Allocation Table (FAT/FAT32) и Windows NT File System (NTFS) для Windows.

Типичная операция ввода-вывода

Обратим внимание на типичные операции ввода-вывода. Приложение дает запрос ввода-вывода ОС. ОС, в свою очередь, передает запрос файловой системе, которая инициирует вызов драйвера к определенному контроллеру шины (такому как SCSI контроллер). Затем контроллер передает серию команд контроллеру, находящемуся на накопителе. Команды, которые передаются между шинным и дисковым контроллерами, являются функцией шинного протокола. Диск получает команду позиционироваться на адрес отдельного 512-байтного блока данных (наименьшая часть данных на диске) и начинает передавать информацию следующих n-блоков от этой стартовой точки. Файловая система управляет этими адресами, будь то физические блочные адреса (SCSI) или виртуальные геометрические адреса (ATA).

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

[Период очереди] Большой трафик будет вызывать увеличение времени обслуживания на этот запрос (как видно в iostat на некоторых UNIX-системах). Это может добавлять десятки или сотни мс к вашему запросу ввода-вывода.

Командный период - серия статусных и установочных сигналов между контроллером и логикой накопителя (ограниченной данными и скоростью сигналов соединения шины). Этот период использует только несколько мкс и может быть игнорирован.

Период доступа - сумма = время поиска+время установки+время поворота диска. Последнее - время, за которое интересующий нас сектор появится под головкой. Этот период длится десятки мкс, очень длинное время по CPU стандартам.

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

(Осторожно: производительность системы ввода-вывода требует осторожного равновесия между размером записи приложения, размером блока файловой системы, губиной и шириной страйпа RAID-массива. Они должны быть все кратны один другому, например, 2Kб/8Kб/32Kб). Время передачи данных этого периода непосредственно зависит от rpm, немного мкс тратится на кэширование, проверку контрольной суммы и время передачи данных через шину, что может быть игнорировано.

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

Результаты производительности ввода-вывода

Оценка дисковой производительности - баланс двух отдельных противопоставленных показателей, каждый из которых характеризуется типом полосы пропускания. Это максимальное число операций ввода-вывода в секунду (IOPS) и максимально выдерживаемый предел передачи данных (измеряется в MB/s). IOPS предназначен для того, чтобы характеризовать максимальное число операций чнение/запись маленькими блоками, что диск или система хранения может поддерживать в определенный период времени. Этот способ измерения часто используется в мире UNIX, особенно в контексте баз данных.

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

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

IOPS

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

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

Когда диск получил команду искать отдельный сектор и читать (или записывать) следующие 100 последовательных секторов, это всего лишь единственная операция ввода-вывода. Если головкам поступила команда сменить позицию 100 раз, тогда это получится 100 операций ввода-вывода, принимая определение операции ввода-вывода как уникальную команду чтения или запись. В противном случае этого действия 100 IOPS будет обманчивым показателем, т.к. при этом не производились операции ввода-вывода. Все равно многие продавцы используют этот неправильный метод оценки своих продуктов. Некоторые продавцы производят тестирование RAID-модулей записью одного блока в кэш и потом зациклено считывают тот же самый блок столько раз, сколько он может считаться за несколько секунд. IOPS рейтинг тогда не представляет из себя ничего больше как считывание блока из кэша RAID контроллера. Хотя этот тип измерения больше пригоден для оценки производительности шины и контроллера, но никак не IOPS.

Как же определить IOPS рейтинг самому? Среднее время доступа - сумма среднего времени поиска+среднее время задержки вращения. Так принято, что среднее время поиска определяется временем прохождения головки 1/3 цилиндров диска. Для примера, Seagate Barracuda ST19171 WD Ultra Wide диск на 9Гб - типичная рабочая лошадка, которая является основой во многих системах хранения - среднее время поиска - 9,9 мсек. Средняя задержка вращения - 7 200 rpm/60 = 120 вращений в секунду (rps). Тогда 1/120 = 0,008333 секунд на вращение. Окончательно, 8,333 мсек/2 = 4,17 мсек. Это средняя задержка вращения. Итак, среднее время доступа - 9,9 мсек+4,17мсек = 14,07. Для получения максимального теоретического случайного показателя IOPS для этого накопителя нужно 1 000 мсек/14 мсек, что составит 71,4 IOPS на диск. Другими словами, около 71 уникальных случайных запроса ввода-вывода в секунду может быть обработано отдельным диском. По ряду чисто физических причин происходит понижение производительности еще на 8%. Таким образом, 71,4*0,92 = 65,7 - среднее статистическое от практического IOPS для ST19171 WD диска. Так, Seagate (и индустрия в большинстве) оценивает дисковые накопители. Если вы имеете 10 таких дисков на SCSI канал и они вместе программно объединены как RAID-0, тогда теоретически максимальный случайный показатель IOPS будет около 714 IOPS - короткий тест и 657 IOPS - продолжительный тест.

Инженеры, работающие на одного из продавцов, спорили со мной, что диск Seagate способен на 110-120 IOPS. Вы можете видеть, что они рассматривали только вращения в секунду и воспринимали это как пиковый показатель IOPS. Категорически не согласен. Они игнорируют результаты движения головок, время позиционирования, также как и фундаментальное определение IOPS. Маркетинговая литература цитирует рейтинг в 4 600 IOPS с 35 дисками, двумя SCSI каналами и двойным контроллером, каждый с 128 Мб кэша. Причем они говорили, что это было достигнуто без кэширования и в режиме случайного доступа. Это просто невозможно. В самом лучшем случае, накопители, находящиеся в этом RAID-массиве, способны показать максимально 2 485 IOPS. Даже быстрый RAID контроллер с хорошо организованным кэшем не может повысить показатель IOPS на 185%. Если этот тест перезапустить с увеличенной загрузкой, write-back кэшированием и большим количеством кэша зарезервированного под запись, тогда я, возможно, соглашусь с этим.

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

Скорость передачи данных

Скорость передачи данных - не иначе как ширина полосы пропускания данных или эффективная ширина полосы пропускания и характеризует устройство ввода-вывода. Ширина полосы пропускания показывает как много данных может быть передано в определенный период времени, тогда как IOPS - как много команд ввода-вывода (обычно, с минимально возможным размером) могут быть выполнены в период времени. Скорость одновременной передачи блоков данных от кэша накопителя по SCSI шине может достигать 34 МБ/с на Ultra Wide SCSI диске (или 17 МБ/с на Fast Wide SCSI диске). В то время как самые последние высокопроизводительные накопители поддерживают скорость передачи 17-25 МБ/с, скорость для большинства 7 200 rpm дисков составляет 7-10 МБ/с. Эта скорость зависит от расположения блоков данных на цилиндрах (помните, что внешние быстрее).

Скорость передачи отдельного накопителя зависит от: rpm, плотности дорожки, числа поверхностей в единичном цилиндре и внутренней скорости, с которой логика может обрабатывать данные (читать или управлять потоками). Дешевые накопители компенсируют невысокую производительность большей вместительностью. В первую очередь, это оправдано стоимостью. Поэтому используется минимальное число пластин (меньше поверхностей в цилиндре), медленный движок (обычно 4 500 rpm) и более упрощенный и меньший размером кэш в интегрированном контроллере. Но вы лишаетесь практически всех высокопроизводительных операционных возможностей SCSI, также как управления операцией ввода-вывода и более усовершенствованного и эффективного управления кэшем. Вследствие пониженного качества эти накопители характеризуются скромными показателями (минимальное снижение на 50%) и MTBF конфликтами.

Рассмотрим следующие примеры с использованием SCSI шин: для того чтобы поддерживать скорость передачи 34 МБ/с на одной SCSI шине, операция ввода-вывода потребует использования 6 дисков данных, работающих в тандеме. 5 дисков данных (5*7=35 МБ/с) не могут поддерживать 34 МБ/с, требуется выполнять несколько поисков дорожек на нескольких накопителях в течение операции ввода-вывода. 6 дисков (6*7=42 МБ/с) могут поддерживать эту производительность при использовании больших файлов. Это предполагает дефрагментацию файловой системы и что все блоки данных находятся в последующих логических блоках RAID страйпа.

Система хранения может обеспечивать либо высокий показатель IOPS, либо высокую скорость передачи. Почему это так? Для того чтобы добиться высокого показателя IOPS, должны быть очень маленькие запросы ввода-вывода (2 Кб блоки). Упоминаемый ранее накопитель Seagate имеет 71 IOPS как верхний предел при передаче 2 Кб блоками, это составит 142 МБ/с. Похоже на флоппик?

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

В этой точке максимальная скорость передачи зависит от следующего:

• Максимальный размер буфера памяти, который драйвер ввода-вывода может отвести под единичный запрос;

• Число таких запросов, которое может быть помещено в очереди накопителя (для SCSI, между 32 и 256);

• Внутренняя скорость передачи диска (7-10 МБ/с для более старых накопителей или 25 МБ/с для некоторых новых);

• Загрузка шины.

На этом участке путешествия мы прошли через один из самых заросших участков Джунглей в стране Storland.

В следующий раз мы рассмотрим проблемы соединения. Al, al@usa.net (c) компьютерная газета




© Компьютерная газета

полезные ссылки
Оффшорные банковские счета