Дисковая подсистема компьютера. Производительность дисковой подсистемы - краткий ликбез. Некоторые требования к современному жесткому диску
Дисковой подсистемой компьютера называют устройства, используемые для повседневного хранения и считывания данных. Традиционно к ней относят флоппи-дисководы и жесткие диски. В последнее время сюда относят и устройства для работы с компакт-дисками.
Флоппи-дисководы – "ветераны" среди дисковых устройств. Они считывают данные с дискет (носителя информации) и производят на них запись. Тип дисковода определяется видом используемой дискеты (FloppyDisk). На сегодняшний день широко применяются дискеты размером 3.5" с поддержкой двухсторонней записи высокой плотности (DSHD). Емкость такой дискеты традиционно составляет 1.44 Мб, хотя с использованием специального Software она может быть повышена до 2,8 Мб или, наоборот, понижена. Дискеты размером 5.25" практически вышли из употребления.
На сегодняшний день дискеты не являются основным средством хранения данных и программ и используются, обычно, для переноса небольших файлов с одного компьютера на другой. Именно это обстоятельство и определило живучесть более компактных и удобных в транспортировке 3.5" дискет. Стандартом для компьютера считается наличие одного 3.5" дисковода, который чаще всего изготавливается во внутреннем исполнении (бывают и варианты в отдельном корпусе).
Производители дисководов: Teac, NEC, Mitsumi, Panasonic, Epson… Производители дискет: Verbatim, BASF, Sony, TDK, FujiFilm… Особо отметим дискеты Verbatim, которые считаются наиболее надежными и имеют различные варианты исполнения, в т.ч. с тефлоновым покрытием.
Жесткий диск (Hard Disk) впервые был реализован для ПК в 1983 году и с тех пор стал основным устройством хранения информации. Принцип хранения данных на жестких дисках тот же, что и на дискетах: намагничивание участков тонкого ферромагнитного слоя, нанесенного на поверхность носителя. Только в жестких дисках используются более прогрессивные мелкодисперсные и многослойные покрытия, нанесенные на идеально плоские и гладкие алюминиевые или стеклянные диски. Обычно жесткий диск имеет 4 "блина", т.е. носителя с двухсторонним покрытием.
Главным параметром жесткого диска считают его емкость. Первый жесткий диск, названный создателями "винчестер", имел емкость 10 Мб. С тех пор этот параметр существенно вырос и достигает 160 Гб. Современные настольные ПК оснащаются жесткими дисками 20, 40 и 60 Гб, мобильные ПК зачастую имеют устройства меньшей емкости.
Главный резерв производительности и вместимости диска – увеличение плотности записи информации на магнитный слой носителя (пластины). По мнению исследователей, предел плотности для нынешней технологии магнитной записи – 40-50 Гбит/кв.дюйм. Сегодня серийно выпускаются диски с плотностью записи 14-15 Гбит/кв.дюйм, хотя имеются варианты и 22,5 Гбит/кв.дюйм. Вот как развивался этот показатель:
Жесткий диск взаимодействует с остальными элементами компьютера через контроллер и имеет два интерфейса: EIDE и SCSI. Диск с интерфейсом EIDE (часто его называют IDE) более распространен и менее дорогостоящ, имеет встроенный контроллер на материнской плате, но создает нагрузку на процессор, что замедляет выполнение команд. Интерфейс SCSI более дорогое решение, позволяющее существенно увеличить скорость работы с жестким диском, уменьшить нагрузку на процессор. При этом требуется дополнительная установка платы с контроллером.
Еще один параметр жесткого диска частота его вращения. Собственно вращается блок дисков, находящихся внутри герметичного корпуса. В большинстве дисков применяется частота вращения 5400 и 7200 об/мин, хотя имеются модели с 10000 и 15000 об/мин. Увеличение скорости вращения ведет к повышению производительности жесткого диска, но увеличивает шум, производимый им при работе.
Все современные жесткие диски имеют кэш-буфер данных, размер которого для IDE-дисков колеблется в пределах от 512 Кб до 2 Мб, а для SCSI-дисков достигает 16 Мб.
Максимальная внутренняя скорость последовательного чтения данных (transfer) составляет на сегодня 30…48 Мб/с. Существуют разработки со скоростью чтения 1 Гбит/с.
Среднее время поиска при чтении/записи (seek) колеблется от 15 мс до 3,9 мс. Среднее время поиска соседней дорожки при чтении/записи составляет 2…0,8 мс.
Современные жесткие диски используют протокол UltraATA/33, UltraATA/66 или
UltraATA/100, обеспечивающие внешнюю скорость чтения диска, соответственно, .33, 66 или 100 Мб/с. Разработан новый интерфейс UltraATA/133, который пока не нашел должной поддержки производителей. Ожидается выход дисков с интерфейсом Serial ATA со скоростью 1,5 Гбит/с, который впоследствии может быть ускорен еще вчетверо.
В заключении отметим такой специфический параметр жесткого диска, как ударопрочность, которая в рабочем состоянии составляет 10…60 Gs, а в нерабочем – 100…400 Gs.
Основные производители жестких дисков: Seagate, Fujitsu, IBM, WesternDigital, Quantum, Maxtor, Samsung…
Дисковая подсистема компьютера как важный инструмент для обработки растровой графики. Какой вариант быстрее?
В технологических процессах допечатной обработки изображений производительность компьютера играет важную роль. Во-первых, существуют определенные минимальные системные требования для профессиональной работы с графикой. Так, например, подготовить качественный полноцветный макет печатного издания, используя 14-дюймовый монитор и видеокарту, неспособную отображать 24-разрядный цвет, практически невозможно. Во-вторых, соответствие вашей рабочей платформы этим минимальным требованиям еще не означает, что работа с графическими файлами большого объема будет комфортной. Для повышения эффективности работы с компьютером, он должен обладать запасом производительности. Это позволяет выполнять даже ресурсоемкие операции (масштабирование, наложение фильтров на изображение и т. п.) достаточно быстро, а в идеале - в режиме реального времени. Немалый вклад в общую производительность графической станции вносит ее дисковая подсистема. Она становится "узким местом" системы при обработке файлов, объем которых сравним с объемом оперативной памяти компьютера.
Ситуация с жесткими дисками для платформы Wintel всегда выглядела следующим образом: существовали SCSI-винчестеры, ориентированные на Hi-End-сектор рынка, и параллельно предлагались менее дорогие IDE-варианты, предназначенные для установки в остальные системы. За последние пару лет произошел самый настоящий технологический прорыв в области накопителей с интерфейсом IDE - достаточно сказать, что если в конце 1998 года средним по всем показателям считался жесткий диск емкостью 4,3 Гбайт, с частотой вращения шпинделя 5400 об./мин и плотностью записи 2 Гбайт на пластину, то в конце 2000 года в среднюю категорию попадают диски объемом 40-45 Гбайт / 7200 об./мин / 15-20 Гбайт на пластину. При этом нормой становится использование стандарта ATA-100 и уменьшение шума работающего диска до величин порядка 30 дБ.
В области жестких дисков SCSI такого скачкообразного роста характеристик не наблюдалось - до сих пор средняя емкость для дисков этого стандарта находится на уровне 18 Гбайт при плотности записи порядка 6 Гбайт на пластину. Превосходство в производительности над IDE-дисками сохраняется благодаря другим важным параметрам - высокой частоте вращения шпинделя (10 000 об./мин являются нормой), большому объему встроенного буфера (от 4 до 8 Мбайт против 0,5-2 Мбайт у IDE-моделей), а также во многом благодаря особенностям SCSI-технологий вообще.
Тем не менее, современные жесткие диски стандарта IDE буквально наступают на пятки своим дорогим SCSI-собратьям. Самые весомые аргументы в пользу IDE-варианта дисковой подсистемы вашего компьютера - чрезвычайно низкая цена (в 2-4 раза меньше, чем у SCSI) при большой емкости, низком тепловыделении и уровне шума.
Ситуация подогревается еще и тем, что в последнее время популярными стали RAID-массивы дисковых накопителей стандарта IDE. До этого RAID-технологии применялись в основном для дисковых подсистем SCSI. Появление на рынке относительно недорогих IDE RAID-контроллеров позволило IDE-винчестерам еще больше расширить их рыночную нишу. Стандарт RAID 1 (Mirror) позволяет увеличить надежность дисковой подсистемы пропорционально количеству избыточных жестких дисков. Так, построив RAID-массив в режиме Mirror из двух одинаковых винчестеров, мы в два раза увеличиваем надежность хранения нашей информации (она дублируется) и заодно получаем приятный бонус в виде несколько увеличившейся скорости чтения с дискового массива (это возможно благодаря поочередному считыванию блоков информации с двух винчестеров и организации ее в единый поток; этим занимается на аппаратном уровне RAID-контроллер). В случае использования RAID 0 (режим STRIPE) мы получаем увеличение скорости нашей дисковой подсистемы пропорционально количеству дисков, составляющих массив - информация разбивается на небольшие блоки и "раскидывается" по дискам. Таким образом, чисто теоретически, можно было бы увеличить быстродействие дисковой подсистемы в количество раз, равное количеству винчестеров в массиве. К сожалению, на практике скорость увеличивается не так значительно, но об этом вы сможете прочитать ниже, оценив результаты тестов. Нельзя не отметить главный недостаток режима RAID 0 (Stripe) - надежность хранения информации уменьшается ровно в то количество раз, которое равно числу используемых винчестеров. Специально для устранения этого неприятного эффекта предназначен режим RAID 0+1 - своеобразная "смесь" режимов Mirror и Stripe. Для организации массива RAID 0+1 необходимы как минимум 4 жестких диска. Результат - надежность одиночного диска плюс двойной объем и увеличившееся быстродействие.
Представления о производительности различных типов жестких дисков у многих пользователей зачастую сумбурны. Большинство людей знают только то, что "SCSI - это ужасно круто, намного быстрее, чем IDE", некоторые, из числа "продвинутых", искренне считают, что RAID-массив из двух дисков в режиме Stripe ровно в два раза быстрее одиночного винчестера. На самом деле в этой области сложилось много мифов, зачастую совсем неверных. Эта статья - попытка прояснить ситуацию, точно измерив быстродействие разных типов дисковых подсистем. Хотелось бы обратить особое внимание на то, что для оценки производительности использовались не синтетические наборы тестов (от которых, как правило, мало толку), а самые что ни на есть практические задачи из арсенала людей, профессионально занимающихся графикой на PC.
Итак, тестировались следующие варианты дисковых подсистем:
IDE -винчестер устаревшей серии (5400 об./мин, 512 кбайт кэш, 4 Гбайт на пластину) с интерфейсом АТА-33 - Fujitsu MPD3130AT; системная плата - i440BX с встроенным контроллером ATA-33. |
IDE -винчестер новой серии (7200 об./мин, 2048 Кбайт кэш, 20 Гбайт на пластину) с интерфейсом АТА-33 - Western Digital WD200; i440BX, ATA-33 (встроенный). |
IDE -винчестер новой серии (7200 об./мин, 2048 Кбайт кэш, 20 Гбайт на пластину) с интерфейсом АТА-100 - Western Digital WD200; RAID-контроллер Promise FastTrak100 (SPAN). |
RAID -массив из двух современных IDE-дисков в режиме Stripe - 2xWestern Digital WD200; Highpoint Technologies HPT370 UDMA/ATA 100 Raid Controller (STRIPE). |
SCSI -винчестер высокого класса (10 000 об./мин, 4096 Кбайт кэш, 6 Гбайт на пластину) с интерфейсом SCSI Ultra160 - Fujitsu MAJ 3182 MP; контроллер SCSI - Adaptec 29160N. |
Для чистоты эксперимента, каждый вариант дисковой подсистемы устанавливался в систему абсолютно "с нуля". Диск (или дисковый массив) разбивался программой FDISK на три логических. При этом объем загрузочного раздела (логический диск С:\) всегда устанавливался равным 3 Гбайт. Остальное пространство делилось поровну между дисками D:\ и E:\. Операционная система устанавливалась на диск С:\, файл подкачки Photoshop располагался на диске D:\; там же находились тестовые файлы. Файловая система - FAT32.
Для того, чтобы дать хорошую нагрузку на дисковую подсистему и таким образом оценить ее производительность, объем оперативной памяти был ограничен до 128 Мбайт (притом, что в системах такого класса, предназначенных для работы с растровой графикой, 256 Мбайт являются начальным уровнем). Объем памяти, доступной программе Photoshop 5.5, устанавливался в 50% от общей свободной. Этот объем составлял примерно 57 Мбайт. Все тесты прогонялись с двумя файлами различного объема - размер первого составлял 1/5 от объема памяти, доступного Photoshop, размер второго - в 1.5 раза больше (). Это позволило получить данные о скорости выполнения той или иной операции в двух случаях: когда обрабатываемый файл с запасом помещается в оперативной памяти, и когда он там гарантированно не помещается целиком. Надо сказать, что для файла меньшего объема результаты, полученные на разных дисковых подсистемах, практически идентичны, что совсем неудивительно - основная обработка происходила в оперативной памяти. Различия в этом случае заметны только в операциях чтения/записи - при открытии и сохранении файла. Совсем другая картина наблюдалась при обработке файла большого объема. Поскольку файл не помещался целиком в оперативной памяти, Photoshop активно задействовал дисковую подсистему компьютера. Результаты этих тестов, как наиболее показательные, оформлены в виде диаграмм. Полные результаты, включающие в себя тесты с файлом меньшего объема, а также с более мощным процессором, можно увидеть в сводной таблице № 2 .
Интересующиеся могут повторить все приведенные в этой статье тесты на других системах, поскольку все используемые настройки приведены в таблице. Тестовые файлы были созданы следующим образом: из каталога... \Adobe\Photoshop5.5\Goodies\ Samples\ был взят файл CMYK balloons.tif. После перевода в формат RGB он был увеличен до размеров 2240x1680 и 6400x4800 пикселов, результатом чего стали два файла формата TIFF RGB объемом 10,7 и 89,7 Мбайт соответственно. Над полученными файлами и проводились все операции. После каждой операции результат отменялся командой Undo. Последняя операция (Save) производилась в формате CMYK. Каждый тест прогонялся три раза, результаты усреднялись. После каждого теста система перезагружалась.
Система № 1: Fujitsu MPD3130AT; i440BX, ATA-33
Жесткий диск Fujitsu серии MPD - вполне заслуженный ветеран. Полтора года тому назад винчестеры такого класса, как Fujitsu MPD, Quantum CR и прочие их аналоги являлись самыми быстрыми в секторе жестких дисков стандарта IDE. Этот винчестер имеет три пластины емкостью по 4,32 Гбайт, 6 головок чтения/записи и встроенный буфер объемом 512 Кбайт. Среднее время поиска - 9,5/10,5 мс (чтение/запись), частота вращения шпинделя - 5400 об./мин, уровень шума - 36 дБ. Поддерживается стандарт АТА-66, однако это не более, чем маркетинговый ход, поскольку скорость передачи данных находится в пределах 14,5-26,1 Мбайт/с, что полностью вписывается в возможности стандарта АТА-33 (33,3 Мбайт/с).
Fujitsu MPD3130AT показал себя как надежный, тихий винчестер. При работе шума вращающегося шпинделя почти не слышно, но звук позиционируемых головок явственно различим. Греется диск очень мало - даже при длительной работе корпус остается прохладным или едва теплым.
В тестах MPD3130AT существенно проигрывает всем остальным участникам, что совсем неудивительно, учитывая разницу характеристик с ближайшим конкурентом WD200 (частота вращения - 5400 и 7200 об./мин соответственно, плотность записи - 4,3 Гбайт на пластину против 20 Гбайт).
Тестирование на двух различных операционных системах дало несколько противоречивые результаты: в Windows 98 заметно быстрее выполняются операции открытия и сохранения файла, а в Windows 2000 - все остальные. В остальном - никаких сюрпризов.
Система № 2: Western Digital WD200; i440BX, ATA-33.
WD200 - представитель нового поколения жестких дисков. Основные параметры - 7200 об./мин, увеличенный до 2048 Кбайт внутренний кэш, плотность записи - 20 Гбайт на пластину. Диск имеет одну пластину и две головки. Среднее время поиска заявлено производителем как 8,9/10,9 мс, что не очень отличается от характеристик Fujitsu MPD3130AT. Тем не менее, WD200 заметно быстрее. Во-первых, сказывается больший объем встроенного буфера. Во-вторых, скорость обмена на участке "буфер-поверхность" достигает впечатляющих 30,5-50 Мбайт/с - все-таки 20 Гбайт на пластину - нешуточная плотность записи.
В работе диск показал себя с самой положительной стороны - несмотря на повышенную скорость вращения шпинделя, он оказался тише Fujitsu MPD (заявленный уровень шума - 30 дБ). Перемещения головок практически не слышны.
С тепловыделением дела обстоят похуже, но вполне приемлемо. После часа интенсивной работы винчестер нагрелся градусов до 45, т.е. на ощупь был довольно теплым, но не горячим.
В целом данная конфигурация оставила очень благоприятное впечатление и является несомненным чемпионом по соотношению "цена-производительность". Судите сами - при цене порядка 130 долл. этот винчестер образует вполне законченное решение с встроенным контроллером АТА-33 чипсета 440ВХ. И никаких проблем с Windows 98, как это наблюдается в случае использования АТА-100.
Система № 3: Western Digital WD200; ATA-100 Promise FastTrak100 (SPAN).
Тесты выявили очень интересный момент - при использовании интерфейса АТА-100 в Windows 98 производительность дисковой подсистемы оказалась в большинстве случаях ниже, чем при использовании АТА-33. А в отдельных случаях наблюдалось просто катастрофическое (в 5-10 раз) падение производительности! Поскольку в Windows 2000 результаты были абсолютно предсказуемыми (то есть АТА-100 оказался, как и положено, быстрее АТА-33), это дает основания подозревать в некорректной работе связку Windows 98 + ATA-100. Возможно причина кроется в конкретной модели контроллера - Promise FastTrak100. К тому же, большинство тестов выполнялось быстрее в Windows 2000.
Из всего этого можно сделать логичный вывод - для серьезной работы с графикой Windows 98 не подходит. Если вы хотите использовать последние достижения в области IDE, а именно интерфейс АТА-100 или RAID-массив в режиме STRIPE - лучше работать с ОС семейства NT (Windows NT 4.0 или Windows 2000), которые в таких режимах ведут себя более корректно.
При использовании ОС Windows 2000 выигрыш от перехода с АТА-33 на АТА-100 есть, но он невелик.
Система № 4: два диска Western Digital WD200 + HPT370 UDMA/ATA 100 Raid Controller(STRIPE).
И, наконец, в деле был испытан RAID-массив из двух одинаковых жестких дисков в режиме чередования блоков данных (STRIPE). Использовался размер блока 64 Кбайт, как наиболее оптимальный (по данным других независимых испытаний). Теоретически быстродействие такой дисковой подсистемы может быть в 2 раза больше, чем у диска-одиночки. Но результаты тестов не оставляют поводов для оптимизма. В подавляющем большинстве задач выигрыш в производительности составляет 5-15% относительно одиночного диска с интерфейсом АТА-100.
Одним словом, результаты неутешительные. Рекомендовать построение массива RAID 0 можно лишь тому, кто хочет вытянуть максимальную производительность из технологии IDE, невзирая на все вышеописанные недостатки. Но это может понадобиться разве что тем, кто занимается вводом несжатого видео на PC.
Система № 5: Fujitsu MAJ 3182 MP + SCSI-контроллер Adaptec 29160N.
Последний участник "соревнований" - SCSI-винчестер весьма высокого класса. Надо сказать, что MAJ 3182 был выбран в качестве "верхней планки" данного теста. Что ж, свое превосходство этому жесткому диску удалось показать наглядно - практически во всех тестах он идет "ноздря в ноздрю" со своим главным соперником - RAID-массивом в режиме STRIPE.
Представление о потенциальных возможностях Fujitsu MAJ 3182 MP могут дать и его характеристики. Частота вращения шпинделя - 10 025 об./мин, количество дисков - 3, головок - 5, среднее время поиска - 4,7/5,2 мс, объем встроенного буфера - 4096 Кбайт. Используется интерфейс SCSI Ultra160, обеспечивающий синхронную скорость передачи данных на участке "буфер-контроллер" в 160 Мбайт/с.
Все эти впечатляющие параметры сказались на энергопотреблении и шумности винчестера. Греется Fujitsu MAJ 3182 MP просто ужасно - температура корпуса после продолжительной работы поднимается, наверное, до 60°С, если не больше - корпус явственно обжигает пальцы. Уровень шума при работе тоже не маленький - 40 дБ. И самый главный недостаток - цена. На момент написания этих строк комплект из жесткого диска и контроллера SCSI-160 стоил в Москве около 500 долл.
Итоги
Итак, по результатам тестов хотелось бы сделать несколько выводов, которые будут полезны тем, кто собирается модернизировать дисковую подсистему своей графической станции.
- Диски предыдущих поколений с небольшой плотностью записи и малым объемом встроенного буфера значительно проигрывают современным моделям по всем основным параметрам - скорости, емкости и бесшумности. Смело меняйте старенький винчестер класса Fujitsu MPD на новый высокооборотистый жесткий диск с повышенной плотностью записи (15-20 Гбайт на пластину) и большим объемом кэша (2 Мбайт). Выигрыш в производительности может составлять 100 и более процентов. Причем все сказанное остается в силе даже при использовании интерфейса АТА-33.
- Переход с АТА-33 на АТА-100 не дает большого прироста производительности. Покупать отдельный контроллер АТА-100, пусть и недорогой (порядка 30 долл.), на мой взгляд не стоит. Подходящий вариант - наличие на системной плате "бесплатного" встроенного контроллера этого стандарта.
- RAID-массив в режиме STRIPE показал очень хорошую производительность - на уровне "десятитысячника" SCSI, а зачастую и выше. При этом нужно учитывать очень привлекательную стоимость такой конфигурации, ведь два винчестера, составляющих массив, вместе с недорогим RAID-контроллером от Highpoint стоят меньше, чем один SCSI винчестер без контроллера! (130+130+30 = 290 долл.). И плюс ко всему, мы получаем огромную, по сравнению со SCSI-вариантом, емкость - 40 Гбайт. Единственный, но очень большой минус - уменьшение надежности хранения данных в 2 раза. Впрочем, если дисковый массив такого типа будет использоваться в качестве средства для оперативной работы, а не как долговременного хранилища ценной информации, его приобретение более чем оправдано.
- SCSI-винчестеры верхнего уровня, как и следовало ожидать, обладают высочайшей производительностью.
Однако, учитывая высокую цену, большое тепловыделение и уровень шума таких устройств, приобретение их оправдано только в том случае, когда нужна бескомпромиссно высокая производительность (и надежность дисковой подсистемы, ведь SCSI-винчестеры всегда славились своей надежностью и большой наработкой на отказ).
В заключение хотелось бы обратить внимание читателей на две строки в последней таблице - результаты измерений при замене процессора Pentium-III-650E (частота системной шины 100 МГц) на Pentium-III-866EB (FSB 133 МГц). Как видно, замена процессора на ощутимо более мощный не дает большого разброса результатов. Это показывает, что выбранная методика тестирования была правильной (низкая "процессорозависимость", основная нагрузка ложится на дисковую подсистему).
С Андреем Никулиным можно связаться по электронной почте: [email protected] .
Редакция благодарит за помощь компании Elko Moscow, SMS, "Пирит" и "Русский Стиль", предоставившие оборудование для тестирования.
Системная плата | ASUS P3B-F |
Процессор | Intel Pentium III-650E (FSB 100 MHz) |
Оперативная память | 128 Мбайт, PC-133 M.tec (2-2-2-8-Fast) |
Видеоадаптер | Creative 3DBlaster TNT2 Ultra |
RAID-контроллер | Highpoint Technologies HPT370 UDMA/ATA 100 Raid Controller |
ATA-100 контроллер | Promise FastTrak100 |
SCSI-контроллер | Adaptec 29160N (Single Channel 32-bit PCI-to-Ultra160 SCSI Host Adapter (OEM)) |
Жесткие диски | IDE-Fujitsu MPD3130AT IDE - Western Digital WD200 - 2 шт. SCSI - Fujitsu MAJ 3182 MP |
Операционная система | Windows 98 4.10.1998 + DirectX 7.0a Windows 2000 Professional 5.00.2195 Service Pack 1 |
Тестовая программа (настройки опций) | Adobe Photoshop 5.5: Cache Settings (Параметры кэш-памяти): Cache Levels - 4 Опция Use cache for histograms включена Physical Memory Usage (Использование физической памяти): Available RAM - 113 961 Kбайт; Used by Photoshop - 50%; Photoshop RAM - 56 980 Kбайт. Scratch Disks (Диски подкачки): First: D:\; остальные отключены. |
Тестовые файлы | 0,2 Photoshop RAM; 2240x1680 пикселов; 24-разрядный цвет; RGB TIFF, 10,7 Мбайт; 1,5 Photoshop RAM; 6400x4800x24; RGB TIFF; 87,9 Мбайт. |
Журналов в свободном доступе.
Когда заходит речь о производительности в первую очередь обращают внимание на частоту процессора, скорость памяти, чипсет и т.д. и т.п., про дисковую подсистему если и вспоминают, то мимоходом, чаще всего обращая внимание только на один параметр - скорость линейного чтения. В тоже время именно дисковая подсистема чаще всего становится узким местом в системе. Почему так происходит и как этого избежать мы расскажем в данной статье.
Прежде чем говорить о производительности вспомним как устроен жесткий диск, так как многие особенности и ограничения HDD заложены именно на физическом уровне. Не вдаваясь в подробности, можно сказать что диск состоит из одной или нескольких магнитных пластин над которыми расположен блок магнитных головок, пластины в свою очередь содержат намагниченные концентрические окружности - цилиндры (дорожки), которые в свою очередь состоят из небольших фрагментов - секторов. Сектор - минимальное адресуемое пространство диска, его размер традиционно составляет 512 байт , хотя некоторые современные диски имеют более крупный сектор размером в 4 Кбайт .
Во время вращения диска сектора проходят мимо блока магнитных головок, которые осуществляют запись или чтение информации. Скорость вращения (угловая скорость) диска в конечный момент времени величина постоянная, однако линейная скорость различных участков диска различна. У внешнего края диска она максимальна, у внутреннего - минимальна. Рассмотрим следующий рисунок:
Как видим за один и тот же промежуток времени определенная область диска сделает поворот на один и тот же угол, если мы обозначим эту область в виде сектора, то окажется что в него попадет пять секторов с внешней дорожки и только три с внутренней. Следовательно за данный промежуток времени магнитная головка считает с внешнего цилиндра большее количество информации, чем с внутреннего. На практике это проявляется в том, что график скорости чтения любого диска представляет собой снижающуюся кривую.
Начальные сектора и цилиндры всегда располагаются с внешней стороны, обеспечивая максимальную скорость обмена данными, поэтому рекомендуется размещать системный раздел именно в начале диска.
Теперь перейдем на более высокий уровень - уровень файловой системы. Файловая система оперирует более крупными блоками данных - кластерами. Типичный размер кластера NTFS - 4 Кб или 8 секторов. Получив указание считать определенный кластер диск произведет чтение 8 последовательных секторов, при последовательном расположении данных операционная система даст указание считать данные начиная с кластера 100 и заканчивая кластером 107. Данное действие будет представлять собой одну операцию ввода-вывода (IO), максимальное количество таких операций в секунду (IOPS) конечно и зависит от того, сколько секторов пройдут мимо головки за единицу времени (а также от времени позиционирования головки). Скорость обмена данными измеряется в МБ/с (MBPS) и зависит от того, какое количество данных будет считано за одну операцию ввода-вывода. При последовательном расположении данных скорость обмена будет максимальной, а количество операций ввода-вывода минимально.
Здесь будет не лишним вспомнить о таком параметре как плотность записи, которая выражается в площади необходимой для записи 1 бита данных. Чем выше этот параметр, тем больше данных может вместить одна пластина и тем выше скорость линейного обмена данными. Этим объясняются более высокие скоростные характеристики современных винчестеров, хотя технически они могут ничем не отличаться от более старых моделей. Рисунок ниже иллюстрирует данную ситуацию. Как несложно заметить, при более высокой плотности записи за один и тот-же промежуток времени, при той же самой скорости вращения будет считано/записано большее количество данных
Теперь разберем прямо противоположную ситуацию, нам требуется считать большое количество небольших файлов случайным образом разбросанных по всему диску. В этом случае количество операций ввода-вывода будет велико, а скорость обмена данными низка. Основное время будет занимать ожидание доступа к следующему блоку данных, которое зависит от времени позиционирования головки и задержки из-за вращения диска. Простой пример: если после 100 сектора поступит команда прочитать 98, то придется ждать полный оборот диска, пока появится возможность прочитать данный сектор. Сюда же следует добавить время, которое требуется чтобы физически прочитать нужное количество секторов. Совокупность этих параметров составит время случайного доступа , которое имеет очень большое влияние на производительность винчестера.
Следует отметить, что для ОС и многих серверных задач (СУБД, виртуализация и т.п.) характерен именно случайный доступ с размером блока в 4 Кб (размер кластера), при этом основным показателем производительности будет не скорость линейного обмена данными (MBPS), а максимальное количество операций ввода-вывода в секунду (IOPS). Чем выше этот параметр, тем большее количество данных может быть считано в единицу времени.
Однако количество операций ввода-вывода не может расти бесконечно, это значение очень жестко ограничено сверху физическими показателями винчестера, а именно временем случайного доступа.
А теперь поговорим о фрагментации, суть этого явления общеизвестна, мы же посмотрим на него сквозь призму производительности. Для крупных файлов и линейных нагрузок фрагментация способна значительно снизить производительность, так как последовательный доступ превратится в случайный, что вызовет резкое снижение скорости доступа и также резко увеличит количество операций ввода-вывода.
При случайном характере доступа фрагментация не играет особой роли, так как нет никакой разницы в каком именно месте диска находится тот или иной блок данных.
Появление дисков с более крупным 4 Кб сектором стало причиной появления еще одной проблемы: выравнивания файловой системы относительно секторов диска. Здесь возможны два варианта: если файловая система выровнена, то каждому кластеру соответствует сектор, если не выровнена, то каждому кластеру соответствует два смежных сектора. А так как сектор это минимальная адресуемая единица, то для считывания одного кластера потребуется считать не один, а два сектора, что негативно скажется на производительности, особенно при случайном доступе.
Реальная производительность жесткого диска - это всегда баланс между скоростью обмена данными и количеством операций ввода вывода. Для последовательного чтения характерен большой размер пакета данных, который считывается за одну операцию ввода вывода. Максимальная скорость (MBPS) будет достижима при последовательном чтении секторов с внешнего края диска, количество операций ввода-вывода (IOPS) будет при этом минимально - дорожки длинные, позиционировать головку нужно реже, данных при этом считывается больше. На внутренних дорожках линейная скорость будет ниже, количество IO - выше, дорожки короткие, позиционировать головку нужно чаще, данных считывается меньше.
При случайном доступе скорость будет минимальна, так как размер пакета данных очень мал (в худшем случае кластер) и производительность упрется в максимально доступное количество IOPS. Для современных массовых дисков это значение равно около 70 IOPS, нетрудно посчитать, что при случайном доступе с размером пакета в 4 Кб мы получим максимальную скорость не более 0,28 MBPS.
Непонимание этого момента часто приводит к тому, что дисковая подсистема оказывается бутылочным горлышком, которое тормозит работу всей системы. Так, выбирая между двумя дисками с максимальной линейной скоростью в 120 и 150 MBPS, многие не задумываясь выберут второй, не посмотрев на то, что первый диск обеспечивает 70 IOPS, а второй всего 50 IOPS (вполне характерная ситуация для экономичных серий), а потом будут сильно удивляться тому, почему "более быстрый" диск сильно тормозит.
Что будет, если количества IOPS диска окажется недостаточно чтобы обработать все запросы? Возникнет очередь дисковых запросов. На практике все несколько сложнее и очередь диска будет возникать даже в том случае, когда IOPS достаточно. Это связано с тем, что различные процессы, обращающиеся к диску, имеют разный приоритет, а также то, что операции записи всегда имеют приоритет над операциями чтения. Для оценки ситуации существует параметр длина очереди диска , значение которого не должно превышать (по рекомендациям Microsoft)
Количество шпинделей HDD + 2
В любом случае постоянная большая длина очереди говорит о том, что системе недостаточно текущего значения IOPS. Увеличение очереди диска на уже работающих системах говорит либо о увеличении нагрузки, либо о выходе из строя или износе жестких дисков. В любом случае следует задуматься об апгрейде дисковой подсистемы.
На этом мы закончим наш сегодняшний материал, приведенной информации должно быть достаточно для понимания физических процессов, происходящих при работе жесткого диска и того, как они влияют на производительность. В следующих статьях мы рассмотрим, как правильно определить, какое количество IOPS нужно в зависимости от характера нагрузки и как правильно спроектировать дисковую подсистему, чтобы она удовлетворяла предъявляемым требованиям.
Теги:
Стремительная эволюция программного обеспечения обусловило все большее возрастание требований к дисковой подсистеме компьютера. Кроме скорости работы и объема хранимой информации особое внимание производителей было сосредоточено на улучшении таких параметров, как надежность накопителей и их потребительские характеристики (например, простота установки и уровень шума). Рост популярности портативных компьютеров направил поток инженерной мысли в область миниатюризации накопителей и увеличения их надежности в экстремальных условиях. Технически разработать решение, удовлетворяющее одновременно всем упомянутым требованиям, теоретически возможно. Однако с практической точки зрения универсальное решение принесет мало радости, поскольку «идеальный» винчестер будет стоить во много раз дороже, чем «неидеальный». Именно по этой причине в настоящее время мы наблюдаем подлинное разнообразие жестких дисков, выполненных по разным технологиям, подключаемых через различные интерфейсы и обладающих различными техническими характеристиками. В предлагаемой вашему вниманию статье даются краткие советы по выбору винчестеров, а также рассматриваются текущие проблемы, с которыми при внедрении RAID-массивов сталкиваются на практике пользователи и системные администраторы.
Некоторые требования к современному жесткому диску
Самым признанным и распространенным средством хранения информации по праву считается жесткий диск (винчестер). Информация на этом накопителе не исчезает при отключении питания компьютера, в отличие, скажем, от оперативной памяти, а стоимость хранения мегабайта информации предельно мала (около 0,6 цента). Современный винчестер обладает высокой производительностью и внушительной емкостью при низкой стоимости мегабайта дисковой памяти. Современные жесткие диски могут иметь размер 47 Гбайт и выше. Чтобы «прочувствовать» такой объем, можно сделать простую прикидку. На 47 Гбайт диска можно записать около 7 млн. журнальных страниц КомпьютерПресс в текстовом формате, или почти 57 тыс. уникальных номеров журнала. Для этого редакции КомпьютерПресс потребовалось бы без сбоев проработать почти 5 тыс. лет. Внутри герметичного кожуха винчестера с огромной постоянной скоростью (5400, 7200, 10 000, 15 000 оборотов в минуту) вращаются жесткие диски (обычно - несколько, крайне редко - один) с высококачественным магнитным покрытием. Они «нанизаны» на вращающийся вал - шпиндель. Информация на диске располагается на «дорожках» (концентрических окружностях), каждая из которых разбита на кусочки-сектора. Каждая область диска получает соответствующий номер в процессе низкоуровневого форматирования, которое производит изготовитель привода. Чтение и запись на обеих сторонах магнитного диска производится при помощи магнитных головок. Сами головки крепятся на специальном рычаге (адъюкаторе) и проносятся над поверхностью вращающегося диска со скоростью, неразличимой человеческим глазом. Среднее время, за которое головка успевает расположиться над нужной областью диска (среднее время доступа), по сути отражает его производительность - чем меньше время доступа, тем быстрее винчестер. Помимо перечисленного в состав винчестера входит плата контроллера, содержащая всю электронику привода.
Современный жесткий диск, согласно спецификации PC’99, должен поддерживать режим bus mastering, а также технологию S.M.A.R.T. Под bus mastering подразумевается механизм прямого обмена информацией по шине без участия центрального процессора. Кроме повышения производительности, этот режим снижает нагрузку на центральный процессор (на его ресурсы и без того много претендентов: программные модемы-«лентяи», звуковые карты, одновременно работающие приложения и пр.). Для реализации протокола bus mastering необходимо, чтобы его поддерживали все участники процесса (включая контроллер жесткого диска и микросхемный набор материнской платы). Технология S.M.A.R.T. (Self-Monitoring Analysis and Reporting Technology) представляет собой аппаратный механизм предсказания сбоев на винчестере, что гарантирует пользователей от «сюрпризов» винчестера. Современные жесткие диски с интерфейсом ATA (IDE) должны поддерживать режим Ultra ATA/33, обеспечивающий пиковую внешнюю производительность винчестера до 33,3 Мбайт/с. Многие диски выпускаются уже с интерфейсом Ultra ATA/66 (максимальная скорость передачи 66,6 Мбайт/с), но, к сожалению, реально эти показатели достигаются редко, поскольку производительность винчестеров сдерживается не узостью интерфейса передачи данных, а главным образом механикой.
Высокая скорость вращения дисков внутри винчестера приводит к возникновению вибрации, которая недопустима и гасится специальными конструктивными приспособлениями. Именно поэтому конструктивное совершенство винчестера нередко можно определить на слух: чем тише работает жесткий диск , тем лучше его механика и меньше нагрев.
Покупка винчестера: на что обратить внимание
При покупке винчестера в прайс-листе торгующей фирмы обычно можно встретить следующую строчку: HDD IBM 13.7 GB 5400 rpm IDE ATA/66. На русский язык это переводится так: винчестер производства IBM, емкостью 13,7 Гбайт, скоростью вращения шпинделя 5400 оборотов в минуту с интерфейсом Ultra ATA/66. Малопонятно это выглядит лишь на первый взгляд. На самом же деле принципы выбора винчестера универсальны:
- авторитетная торговая марка - не гарантия качества, но довод в пользу выбора именно фирменного винчестера. В первую очередь присмотритесь к моделям от IBM и Seagate, хотя у них, как и у любой компании, есть удачные и крайне неудачные серии винчестеров;
- чем выше емкость, тем выгоднее становится винчестер по отношению «цена за мегабайт». Однако винчестеры большой емкости нередко становятся свалкой забытых файлов, а стоят дороже своих менее емких собратьев. Большие винчестеры гораздо дольше обслуживать (например, производить дефрагментацию), поэтому для домашних целей можно рекомендовать жесткие диски емкостью около 10-20 Гбайт;
- чем выше скорость вращения шпинделя дисковода, тем больше его производительность (скорость записи и считывания данных), но выше цена и сильнее нагрев. Для домашнего и офисного использования советуем отдать предпочтение винчестерам со скоростью вращения шпинделя 5400-7200 rpm (revolutions per minute - оборотов в минуту);
- IDE (ATA) - это тип интерфейса (механизма и протокола подключения) дисковода к системной плате компьютера. Интерфейс IDE - самый дешевый и наиболее распространенный, поэтому ему можно дать универсальную рекомендацию. Более «профессиональным» считается интерфейс SCSI, позволяющий подключать до восьми устройств и IEEE-1394 (FireWire). SCSI получил заметно меньшее распространение, чем IDE, благодаря высокой цене и особенностям конфигурирования. А FireWire в ближайшее время должен стать стандартом для обмена цифровыми данными между цифровой бытовой электроникой и компьютерной периферией. Словом, если вы не занимаетесь видеомонтажом, оцифровкой видео и редактированием огромных файлов, то ваш выбор - винчестер с интерфейсом IDE;
- ATA/66 (то же Ultra ATA 66 или Ultra DMA 66) - расширение интерфейса IDE (ATA), позволяющее в исключительных случаях достигать скорости передачи данных 66 Мбайт/с и нередко снижать нагрузку на центральный процессор. Это, конечно, бывает крайне редко и длится считанные доли секунды. Обычная производительность винчестера - в 4-5 раз ниже. Для того чтобы дисковая подсистема могла развивать подобную производительность, необходимо, чтобы контроллер системной платы и винчестер поддерживали такой стандарт. Современные винчестеры выпускаются уже с поддержкой ATA-100 и стоят ненамного дороже аналогов с ATA/33 или ATA/66. Вывод: если позволяют финансы, предпочтительнее приобрести винчестер ATA-100, но и ATA/66 - вполне неплохой выбор.
Замечания по поводу оптимизации дисковой подсистемы
Cкоростной винчестер еще не гарантирует вам максимальную производительность дисковой подсистемы. Подобно тому, как короля играет свита, производительность винчестера зависит от тех устройств, в окружении которых он вынужден работать. Прежде всего необходимо соразмерять потребности и возможности. На практике это означает, что перед покупкой винчестера вы должны абсолютно точно знать возможности своей материнской платы. Приобретение накопителя ATA-100 под материнскую плату ATA-33/66 должно быть тщательно продумано и обосновано - это нужно в первую очередь для вас самих. К сожалению, нередки случаи (особенно в академической среде), когда для обновления давно устаревших i486/P60 приобретались накопители ATA-100 (7200 об./мин). Говорить о финансовой или практической целесообразности этого решения не приходится. Однако не будем сосредоточиваться на очевидном, а рассмотрим малоизвестные факторы, влияющие на скорость дисковой подсистемы.
Два ATA-устройства на одном шлейфе: хорошо или плохо? Однозначно - плохо! И вызвано это не только тем фактором, что транспортной средой для обоих устройств служит один и тот же физический шлейф. Проблема заключается несколько в другом - в способе работы контроллера с каждым устройством, при котором невозможна их параллельная работа. Другими словами: до тех пор, пока первое устройство не выполнило команду, обратиться ко второму невозможно. Это означает, что в случае обращения к более медленному устройству в связке более быстрое будет вынуждено ожидать окончания предыдущей операции, что может существенно замедлить его работу. Наиболее отчетливо это видно на примере связки «винчестер-привод CD-ROM». Именно поэтому рекомендуется разносить ATA-устройства по различным шлейфам в зависимости от скорости их работы.
Использование режима bus mastering. Самый первый принятый стандарт АТА предполагал использование центрального процессора (ЦП) компьютера для организации работы с устройствами хранения информации. Это был режим PIO (programmed input/output), работу в котором до сих пор должны поддерживать все АТА-устройства. В то же время недальновидность этого способа, расходовавшего ценные процессорные ресурсы на работу с АТА-устройствами, была вполне очевидна. Поэтому производители оборудования предложили альтернативу - режим Bus Mastering (другое название - DMA/UDMA). Главным отличием нового режима стало освобождение ЦП от операций управления передачей данных и делегирование этих функций АТА-контроллеру. В результате высвобождаются мощности ЦП для более важных операций, что позволяет увеличить пропускную способность дисковой подсистемы. Этот режим без проблем поддерживается всеми материнскими платами уже более пяти лет.
Использование RAID-контроллера. Основными претензиями к жестким дискам остаются их малый объем и постоянно недостаточная скорость работы. Это справедливо для винчестеров, установленных как на серверах, так и на рабочих станциях. Однако если предложение провести обновление серверной дисковой подсистемы еще имеет шанс быть одобренным руководством, то жалобы на недостаточную скорость жесткого диска на рабочей станции с вероятностью 99,9% скончаются еще не достигнув ушей вашего системного администратора. С домашним компьютером дело обстоит еще драматичнее, поскольку деньги на обновление дисковой подсистемы придется изымать из семейного бюджета. При этом скоростные винчестеры (ATA-100, 7200 об./мин) в настоящее время стоят порядка 130 долл. за 20 Гбайт. Выходом из тупика может стать использование RAID-контроллера, позволяющего объединить несколько физических дисков в один логический. В двух словах принцип использования RAID заключается в распараллеливании потоков чтения/записи информации между несколькими физическими носителями. В результате максимальная скорость чтения/записи с «объединенного» носителя возрастает во столько раз, сколько физических накопителей использовалось при создании RAID-массива. Вышесказанное справедливо только для RAID-массивов нулевого уровня, которые не предполагают дублирования хранимой информации. Раньше в RAID-массивах использовались довольно дорогие жесткие диски с интерфейсом SCSI. Но уже около года на рынке доступны дешевые (от 36 долл.) RAID-контроллеры для жестких дисков с интерфейсом IDE. Кроме того, некоторые производители материнских плат (Abit , MSI и др.) наряду со стандартными интерфейсами IDE устанавливают на свои платы RAID-контроллеры. Наиболее распространенными моделями карт RAID-контроллеров для ATA-винчестеров на нашем рынке являются Promise и Abit Hot Rod. Естественно, они не единственные. В частности, компания American Megatrends, Inc. (AMI), более известная как производитель RAID-контроллеров для SCSI-винчестеров, обратила свое внимание на этот сегмент рынка и выпустила AMI HyperDisk ATA-100 RAID (ориентировочная цена 120 долл.). В результате мы в любой момент имеем возможность увеличить быстродействие своей дисковой подсистемы, не нуждаясь в крупных затратах. Для того чтобы ситуация с RAID не казалась столь оптимистичной, добавим ложку дегтя в бочку меда: у ряда RAID-контроллеров существуют серьезнейшие проблемы, природа которых пока неизвестна. Речь идет, например, о проблеме совместимости винчестеров IBM DTLA - 3070xx и RAID-контроллеров, построенных на чипсете HighPoint HPT-366/368/370. Эта проблема уже несколько недель активно обсуждается в Интернет-форумах. Суть ее заключается в том, что в случае создания RAID-массива с использованием RAID-контроллера на базе чипсета HPT - 366/368/370 на базе винчестеров IBM DTLA-3070xx происходит непрогнозируемое «осыпание» данных и появление большого числа сбойных блоков даже на новых винчестерах. Судя по отзывам пользователей, эта проблема не коснулась пользователей продукции компании Promise, однако обладатели Abit Hot Rod и материнских плат с интегрированным контроллером HPT-370 (достоверно подтверждено на платах Abit VP6 и Abit BX-133 RAID) в полной мере ее ощутили. Природа этого явления пока не получила официального объяснения, однако высказываются сомнения относительно корректности завершения работы винчестеров, входящих в состав массива, при завершении работы компьютера. В результате данные из кэша винчестеров не сохраняются на носители, что нарушает целостность данных. При этом в случае использования RAID-контроллера как источника дополнительных ATA-100 портов (то есть неиспользования функции RAID) указанная проблема не возникает. Самое обидное заключается в том, что этому эффекту подвержены одни из лучших представителей семейства ATA-100 винчестеров (серия DTLA - 3070xx), поскольку о подобных случаях с винчестерами других производителей не сообщается.
Некоторые наблюдения по организации RAID-массивов из АТА-накопителей
В данном разделе приведен ряд достоверных наблюдений авторов в процессе создания сервера резервного копирования, а также предварительных выводов, которые были сделаны на их основе.
Ситуация первая: используется Abit VP6 Dual PIII - 667 с четырьмя IBM DTLA-307045 в одном RAID-массиве. Первый месяц все работает без проблем. Примерно в середине пятой недели происходит спонтанное (за одни сутки) «осыпание» (появление сбойных блоков) всего массива. Массив был разобран, и путем выполнения проверок всех дисков индивидуально было констатировано огромное количество сбойных блоков (~ 3%) на каждом винчестере. Интересно, что картина их расположения повторялась у каждой пары накопителей. Сделанный вывод: проблема совместного взаимодействия HPT-370 с IBM DTLA-3070xx не решается последними версиями прошивок и драйверов.
Ситуация вторая: все то же самое, только вместо встроенного RAID-контроллера используется AMI HyperDisk 100. Кроме того, сбойные диски IBM заменены на два винчестера Fujitsu и два винчестера Quantum, подключенных соответственно к первому и второму каналу контроллера. Предполагалась организация двух RAID-массивов на базе каждой пары винчестеров. Все винчестеры установлены в rack-модули, соединенные с RAID-контроллером шлейфами ATA-100 (80-контактными). После ручного создания двух массивов мы констатировали появление двух новых дисков ожидаемого размера (ОС MS Windows 2000). После этого при форматировании с попыткой записи данных операционная система зависла. Вспомнив, что в rack-модуле соединение винчестеров идет через шлейф АТА-33 (при этом контроллер указывал режим работы с винчестерами UDMA-5), мы заменили соединительные шлейфы на АТА-33. После подобной замены контроллер при каждой загрузке начал выводить предупреждение о неизбежном повышении скорости, которое ожидает нас при замене шлейфов. С глубоким прискорбием игнорируя это приглашение, мы констатировали начало нормальной работы одной пары накопителей. Однако подключение второй пары преподнесло сюрприз - созданный накопитель оказалось невозможно отформатировать средствами Windows 2000, поскольку в конце форматирования ОС сообщала, что форматирование не может быть продолжено. Пережив приступ минутной слабости, мы пристально изучили документацию на HyperDisk, особенно раздел, посвященный автоматическому созданию массивов. В результате было произведено уничтожение первого набора массивов и в автоматическом режиме был создан второй. И тут начались неожиданности. Прежде всего контроллер объединил в один массив винчестеры разных производителей, то есть вместо тандемов по производителям мы получили смешанные тандемы. Это выглядело странным на фоне призывов к использованию одинаковых винчестеров при создании массивов. Неясной осталась и причина, по которой в stripe-массив оказались объединены пары накопителей, а не все четыре одновременно. Исследование сложившейся конфигурации установило ее полную работоспособность. Однако, поскольку объемы винчестеров Fujitsu и Quantum различались (в результате несимметричного объединения терялось примерно 200 Мбайт на каждый массив), мы продолжили попытки симметричного объединения винчестеров. После недолгого, но пристального изучения конфигурации массива было замечено, что каждая пара винчестеров, входящая в его состав, физически подключена к разным каналам RAID-контроллера. Вспомнив тот факт, что АТА-контроллер не способен параллельно работать с устройствами, подключенными к одному его каналу, и что использование массива предполагает одновременную запись на каждое устройство, входящее в его состав, мы сделали предварительный вывод о проблемной работе массива при подключении образующих его накопителей одному каналу АТА. Это предположение давало разумное объяснение факту объединения четырех винчестеров в два массива (а не в один), которое автоматически было выполнено контроллером AMI HyperDisk. Логичным выводом из данного предположения было изменение конфигурации дисков таким образом, чтобы связки Primary Master - Secondary Slave и Secondary Master - Primary Slave образовывались винчестерами от одного производителя. После перекоммутации накопителей было произведено автоматическое переконфигурирование массивов, которое принесло ожидаемый результат - два массива, состоящие из накопителей одного производителя. В итоге мы вернули себе более 200 «урезанных» мегабайт массива. Однако наша радость угасла, когда операционная система обнаружила только один (меньший) массив. На момент подписания номера все попытки заставить операционную систему «увидеть» массив не увенчались успехом, что может служить лишним доказательством необходимости использования в процессе создания массивов абсолютно одинаковых дисков.
КомпьютерПресс 4"2001
Материал разделен на три части: А - теория, Б - практика, В - создание мультизагрузочной флэшки.
А. Общая теория (популярно).
1. Железо.
Все физические устройства, которые используются нами повседневно для хранения информации (HDD, CD-ROM, флэшка, и даже флопик) - это блочные устройства ввода/вывода (block I/O device). Они могут подключаться к компьютеру через различные интерфейсы: IDE, SATA, eSATA, USB. Операционная система предоставляет единый прозрачный для пользователя и программиста прикладного ПО способ чтения/записи информации с/на эти носители.
С железом напрямую общаются драйвера. Драйвер - это программа, загруженная в операционную систему. Он является прослойкой между ОС и устройствами, представляя для ОС стандартный программный интерфейс блочных устройств I/O.
2. Данные на физическом диске.
Блочными эти устройства называются потому, что информация на них записывается и считывается блоками (секторами, кластерами) фиксированного размера. Размер блока кратен 512 байт. Блочный подход необходим для обеспечения высокой скорости работы дисковой подсистемы.
Сам диск форматируется (размечается) на низком уровне (на заводе). Диск состоит из цилиндров. Цилиндр - это окружность на пластине диска. Первые цилиндры расположена в центре пластины диска, последние - на внешнем краю. Каждый цилиндр делиться на секторы. В пределах секторов организуются блоки на диске. Помимо самих данных в блоках записывается информация для контроля ошибок. С этой информацией работает контроллер внутри жесткого диска и она не видна снаружи. Драйвер посылает команды контроллеру диска на уровне «считать 10 блоков 10 цилиндра 20 сектора».
Все полезные данные, записанные на носитель, организованы в разделы. В Windows каждый раздел обычно представлен в виде логического диска (C, D, E, …). На сменных носителях (флэшка, компакт-диск, флопик) как правило создан один единственный раздел, на внутренних жестких дисках - наоборот - обычно несколько разделов. Данные в разделе организованы в файловой системе.
Для каждого раздела может независимо устанавливаться свой размер блока - размер кластера. Он регулирует баланс скорость/экономичность. Блок - это минимальная адресуемая единица разметки на диске. Кластер объединяет несколько блоков - это минимальная адресуемая единица в разделе.
Таким образом устанавливается следующая логическая иерархия (от внизу вверх): блок, сектор, цилиндр - кластер - раздел - файл, каталог.
В большинстве файловых систем файл может занимать один или несколько кластеров. Таким образом, если размер файла меньше размера кластера, то файл займет целый кластер. Для любого файла на диске будет выделено количество байт, кратное размеру кластера. Некоторые файловые системы умеют делить один кластер на несколько файлов (упаковка), но это скорей исключение (пока). Таким образом, чем больше размер кластера, тем выше скорость и больше места теряется на полузаполненных кластерах.
3. Разметка физического диска.
Размер раздела также измеряется в блоках. Именно по этому при разбивке диска на разделы размер, выраженный в байтах, может быть немного подкорректирован программой.
Так как на диске может быть несколько разделов, их нужно где-то перечислить с указанием пределов и свойств каждого раздела. Для этого служит таблица разделов, которая находится в начале физического диска (начало диска - это его первый блок в соответствии с адресацией). В классическом случае она входит в состав MBR (master boot record), которая целиком занимает первый блок. На всю таблицу разделов выделено 64 байта. Каждая запись таблицы состоит из адресов начала и конца раздела, типа раздела, количества секторов в разделе и флага «загруженности» раздела и занимает 16 байт. Таким образом максимальное количество разделов на диске ограничено четырьмя (16 × 4 = 64).
Так сложилось исторически, но со временем стало очевидно, что 4 раздела не всегда достаточно. Решение проблемы было найдено. Те разделы, которые размечены в заголовке диска (в MBR), назвали Primary (первичные). Их по прежнему должно быть до 4-х включительно. Дополнительно ввели понятие Extended (расширенных) разделов. Расширенный раздел включает один или более подраздел и не содержит файловой системы. Сам он является полноценным первичным разделом.
Так как подразделы расширенного раздела не перечислены в таблице разделов диска, их невозможно пометить как загрузочные. Загрузочный (bootable) раздел - это тот раздел, с которого начинает загружаться операционная система. Он отмечается флагом в своей записи таблицы разделов. Таким образом отметить можно только один из 4-х первичных разделов. Расширенный раздел загрузочным быть не может, так как на нем нет файловой системы.
Разметка расширенного раздела описана в в его начале. По аналогии с MBR существует EBR (Extended boot record), расположенная в первом секторе. В ней описывается разметка логических дисков данного расширенного раздела.
На оптическом диске и флэшке обычно размещается только один раздел, так как более мелкое деление там не имеет смысла. Обычно при записи компакт-диска применяется файловая система ISO 9660. Образ диска с этой файловой системой называется ISO-образ. Он часто используется в отрыве от физического диска в качестве контейнера для передачи данных, т. к. любой образ - это побитовая точная копия физического носителя.
4. Файловая система.
Каждый раздел диска, предназначенный для хранения данных (т. е. все разделы, кроме расширенного) форматируется в соответствии с некоторой файловой системой. Форматирование - это процесс создания структуры файловой системы в некотором пространстве на диске - в разделе. Файловая система организует пользовательские данные в виде файлов, расположенные в некоторой иерархии каталогов (папок, директорий).
Структура каталогов и файлов в разделе в классическом случае описана в таблице файлов. Как правило таблица занимает некоторое место в начале раздела. После таблицы пишутся сами данные. Таким образом создается система, где структура описана отдельно, а данные (файлы) хранятся отдельно.
В случае удаления файла с диска он удаляется из таблицы файлов. Место, которое он занимал на диске, помечается как свободное. Но физической зачистки этого места не происходит. Когда на диск производится запись, данные записываются в свободное место. Поэтому если после удаления файла создать новый, существует вероятность записи его на место удаленного. При быстром форматировании (используются в подавляющем большинстве случаев) раздела также перезаписывается только таблица. На этих особенностях основана процедура восстановления файлов после удаления или форматирования.
В процессе работы на диске могут возникать физические повреждения. Некоторые блоки могут становиться недоступными для чтения. Эти блоки называют «бэдами» (bad sector). Если в процессе чтения диска попадает бэд, происходит ошибка ввода/вывода (I/O error). В зависимости от того, в каком месте появился бэд-блок и сколько их появилось, может потеряеться либо часть содержимого файлов, либо в часть таблицы файлов.
При попытке записи в бэд-блок контроллер диска должен определить проблему и выделить для этого блока новое место на поверхности диска, а старое место из использования изъять (relocate bad block). Он делает это незаметно для ОС и драйверов, самостоятельно. Происходит это до тех пор, пока есть резерв места для переноса.
5. Работа с диском.
Операционная система представляет возможность работы с дисками на уровне файлов, разделов и устройства. Конкретная реализация доступа на каждый уровень зависит от конкретной ОС. Но в любом случае, общим является то, что к физическому диску и к любому его разделу можно обратиться точно так же, как к обычному бинарному файлу. Т. е. в него можно писать данные, из него можно данные считывать. Такие возможности особенно полезны для создания и восстановления образов дисков, клонирования дисков.
В ОС семейства UNIX все устройства хранения данных представлены в виде файлов в каталоге /dev:
sda, sdb, sdc, … - физические диски (HDD, включая внешние, флэшки, IDE-сидиромы);
fd0, fd1 - флопики.
Разделы на каждом из дисков доступны в виде sda1, sda2, sd3, …
Нумерация дисков происходит в том порядке, в котором их видит BIOS. Нумерация разделов - в порядке создания разделов на диске.
Чтобы сделать образ (образ - это побитовая копия информации, размещенной на диске или в разделе) диска целиком (например первого по BIOS - sda), нужно вычитать данные из /dev/sda в любой другой специально созданный для образа файл, используя программу последовательного копирования содержимого файла. Чтобы записать образ в файл, нужно при помощи той же программы вычитать данные из образа в /dev/sda. По аналогии можно создать/восстановить образ раздела (например, первого на первом диске - sda1), обращаясь к /dev/sda1 вместо /dev/sda.
6. Монтирование.
Чтобы «превратить» дисковое устройство в набор файлов и каталогов, к которым можно получить доступ, его необходимо примонтировать. В Windows как такового монтирования не существует. Там разделы просто подключаются к логическим дискам (C:, D:, E, …). Информация о том, какую букву присвоить какому диску, хранится в самой ОС.
В UNIX понятие монтирования является основоположным в работе с дисками и дает значительно больше гибкости, чем есть в Windows. Монтирование - это процесс привязки некоторого источника образа диска (это либо сам диск, либо файл с его образом) к некоторому каталогу в файловой системе UNIX. Файловая система в UNIX начинается из одной точки - от корневого каталога (/), и никаких логических дисков C, D, E не существует.
В начале загрузки ОС семейства UNIX в корневой каталог / монтируется раздел диска, помеченный как root (корневой). На разделе диска должны быть созданы служебные каталоги ОС, находящиеся в корне файловой системы. К ним могут монтироваться другие разделы, либо файлы могут записываться прямо в основной раздел (примонтрированный к /).
Ключевой момент заключается в том, что источник образа диска (блочное устройство, файл с образом или каталог уже примонтированной файловой системы) можно монтировать к любому каталогу на любом уровне вложенности файловой системы, которая начинается с /. Таким образом, разные логические разделы физического диска представляются каталогами в единой файловой системе в противоположность отдельным файловым системам разных логических дисков в Windows (там каждый диск рассматривается как автономная файловая система, имеющая свой корень).
Для монтирования необходимо указать файловую систему образа, опции монтирования и каталог, к которому будет привязка.
За счет этой гибкости можно привязать один каталог в несколько разных мест в файловой системе, сделать образ диска и примонтировать его не записывая на диск, раскрыть ISO-образ. И все это делается без использования сторонних утилит.
7. MBR - загрузочная область.
В начале физического диска обычно расположена MBR (master boot record). Это загрузочная область диска. При загрузке компьютера BIOS определяет какой диск является первичным (primary) и ищет на нем MBR. Если она найдена, то ей передается управление. Если нет, выводится ошибка о том, что загрузочный диск не найден.
В MBR, кроме таблицы разделов (описано выше), располагается код программы, которая загружается в память и выполняется. Именно эта программа должна определить загрузочный раздел на диске и передать ему управление. Передача управления происходит аналогично: первый блок (512 байт) загрузочного раздела помещается в оперативную память и выполняется. Он содержит программный код, который инициирует загрузку ОС.
За счет того, что управление от BIOS при загрузке компьютера передается программе, записанной на диске, есть возможность сделать выбор загрузочного раздела более гибким. Это и делают загрузчики GRUB и LILO, широко применяемые в мире UNIX. Последний загрузчик в настоящее время использовать на современных компьютерах смысла нет. С помощью GRUB можно предоставить пользователю выбор, какой раздел загружать и каким образом.
Код GRUB слишком большой, чтобы поместиться в MBR. Поэтому он устанавливается на отдельном разделе (обычно в том разделе, который монтируется в /boot) с файловой системой FAT, FFS или Ext2. В MBR записывается код, который загружает код GRUB с определенного раздела и передает ему управление.
GRUB самостоятельно или с помощью пользователя определяет с какого раздела должна происходить загрузка. В случае Winsows-раздела ему просто передается управление точно так же, как это было бы из обычной MBR. В случае Linux-а загрузчик выполняет более сложные действия. Он загружает в память ядро ОС и передает ему управление.
Сделать бэкап загрузочной области диска так же легко, как бэкап всего диска или отдельного раздела. Суть в том, что MBR занимает первые 512 байт диска /dev/sda. Следовательно, для бэкапа MBR необходимо вычитать первые 512 байт /dev/sda в файл, а для восстановления - наоборот - файл вычитать в /dev/sda.