Disk speed windows 2003

Измерение производительности и IOPS жестких дисков и СХД в Windows

Одной из основных метрик, позволяющих оценить производительность существующей или проектируемой системы хранения данных является IOPS (Input/Output Operations Per Second — количество операций ввода/вывода). Говоря простым языком, IOPS – этой количество блоков, которое успевает считаться или записаться на носитель или файловую систему в единицу времени. Чем это число больше – тем больше производительность данной дисковой подсистемы (откровенно говоря, само по себе значение IOPS стоит рассматривать в комплексе с другими характеристиками СХД, таким как средняя задержка, пропускная способность и т.п.).

В этой статье мы рассмотрим несколько способов измерения производительности используемой системы хранения данных в IOPS под Windows (локальный жесткий, SSD диск, сетевая папка SMB, CSV том или LUN на СХД в сети SAN).

Счетчики производительности дисковой подсистемы Windows

Вы можете оценить текущий уровень нагрузки на дисковую подсистему с помощью встроенных счетчиков производительности Windows из Performance Monitor. Чтобы собрать данные по этим счетчикам:

  1. Запустите Perfmon ;
  2. Создайте новый набор сборщиков данных (Data Collector Set). Выберите Create manually;
  3. Выберите опцию Create data logs ->Performance counter; Performance counter;» width=»530″ height=»262″ srcset=»https://winitpro.ru/wp-content/uploads/2016/02/performance-counter.jpg 530w, https://winitpro.ru/wp-content/uploads/2016/02/performance-counter-300×148.jpg 300w» sizes=»(max-width: 530px) 100vw, 530px»/>
  4. Теперь в свойствах нового набора для сбора данных добавьте следующие счетчики производительности для объекта Physical Disk (можете выбрать счётчики для конкретного диска или для всех доступных локальных дисков):
    • Avg. Disk Sec./Transfer
    • Avg. Disk Queue Length
    • Avg Disk Bytes/Transfer
    • Disk Bytes/sec
    • Disk Transfers/sec
    • Split IO/sec
  5. Можете изменить другие параметра сбора данных. По умолчанию значения счетчиков собираются каждые 15 секунд.

Как интерпретировать результаты производительности дисков в Perfmon? Для быстрого анализа производительности дисковой подсистемы необходимо посмотреть на значения как минимум следующих 5 счетчиков.

  • Disksec/Transfer – время, необходимое для выполнения одной операции записи/чтения на устройство хранения/диск — disk latency. Если задержка более 25 мс (0.25) или выше, значит дисковый массив не успевает выполнять операции. Для высоконагруженных систем значение не должно превышать 10 мс (0.1);
  • Disk Transfers/sec – количество операций чтения/записи в секунду (IOPS). Это основной показатель интенсивности обращений к дискам (примерные значения в IOPS для разных типов дисков представлены в конце статьи);
  • DiskBytes/Sec средняя скорость обмена с диском (чтения/записи) за 1 секунду. Максимальные значения зависит от типа диска (150-250 Мб/секунду — для обычного диска и 500-10000 для SSD);
  • SplitIO/sec показатель фрагментации диска, когда операционной системе приходится разделять одну операцию ввода/вывода на несколько операций. Может также говорить о том, приложение запрашивает слишком большие блоки данных, которые немогут быть переданы за одну операцию;
  • Avg. DiskQueueLength длина очереди к диску (количество транзакций ожидающий обработку). Для одиночного диска длина очереди не должна превышать 2. Для RAID массива из 4 дисков длина очереди до 8 будет считаться допустимым значением.

Тестирование IOPS в Windows с помощью DiskSpd

Для генерации нагрузки на дисковую подсистему и измерения ее производительности Microsoft рекомендует использовать утилиту DiskSpd (https://aka.ms/diskspd). Эта консольная утилита, которая в несколько потоков может осуществлять операции I/O с указанным таргетом. Я довольно часто использую эту утилиту чтобы замерить производительность СХД в IOPS и получить максимальную скорость чтения/записи c данного сервера (можно конечно измерить производительность и со стороны СХД, в этом случае diskspd будет использоваться для генерации нагрузки).

Утилита не требует установки, просто скачайте и распакуйте архив на локальный диск. Для x64 битных систем используйте версию diskspd.exe из каталога amd64fre.

Я использую такую команду для тестирования диска:

diskspd.exe –c50G -d300 -r -w40 -t8 -o32 -b64K -Sh -L E:\diskpsdtmp.dat > DiskSpeedResults.txt

  • -c50G – размер файла 50 Гб (лучше использовать большой размер файла, чтобы он не поместился в кэш контроллера СХД);
  • -d30 0 – продолжительность тестирования в секундах;
  • -r – произвольное чтение/запись (если нужно тестировать последовательный доступ, используйте –s);
  • -t8 – количество потоков;
  • -w40 – соотношение операций записи к операциям чтения 40% / 60%;
  • -o32 — длина очереди;
  • -b64K — размер блока;
  • -Sh — не использовать кэширование;
  • -L — измерять задержки (latency) ;
  • E:\diskpsdtmp.dat – путь к тестовому файл.

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

Например, в моем тесте получены следующие общие данные про производительности (Total IO):

  • MiB/s — 241 (около 252 Мб/сек, неплохо)
  • IOPS — 3866.49 (отлично!)
  • Средняя задержка — 66.206 мс (высоковато!)

Можно получить отдельные значения только по операциям чтения (секция Read IO ) или записи (секция Write IO ).

Протестировав с помощью diskspd несколько дисков или LUN на СХД, вы сможете сравнить их или выбрать массив с нужной производительностью под свои задачи.

Как получить IOPS и производительность дисковой подсистемы с помощью PowerShell?

Недавно мне на глаза попался PowerShell скрипт (автор Microsoft MVP, Mikael Nystrom), являющийся по сути надстройкой над утилитой SQLIO.exe (набора тестов для расчета производительности файлового хранилища).

Итак, скачайте архив содержащий 2 файла: SQLIO.exe и DiskPerformance.ps1 (disk-perf-iops.ZIP — 73Кб) и распакуйте архив в произвольный каталог.

Пример запуска PowerShell скрипта для определения IOPS:

.\DiskPerformance.ps1 -TestFileName test.dat –TestFileSizeInGB 1 -TestFilepath C:\temp -TestMode Get-LargeIO -FastMode True -RemoveTestFile True -OutputFormat Out-GridView

Я использовал в скрипте следующие аргументы:

  • -TestFileNametest.dat имя файла, создаваемого утилитой FSUTIL;
  • –TestFileSizeInGB1 —размер файла для тестов. Допустимые варианты 1,5,10,50,100,500,1000 Гб. Размер файла должен быть больше, чем размер кэша системы. Иначе будет измеряться IOPS для данных в кэше, а не на диске;
  • -TestFilepathC:\Temp указывается диск, для которого будет выполняться расчет производительности и каталог на диске, в котором будет создаваться тестовый файл. Допустимо указать UNC путь к сетевой папке;
  • —TestModeGet-LargeIO— есть два варианта измерения нагрузки, Get-SmallIO – измеряются IOPS, Get-LargeIO – измеряется скорость передачи данных. Разница между аргументами SmallIO и LargeIO, в размерах блоков при замере скорости 8 Кбайт и 512 Кбайт, и типе доступа Random или Sequential соответственно;
  • -FastModeTrue в режиме Fastmode каждый тест выполняется 10 секунд, иначе 60 сек;
  • -RemoveTestFileTrue удалить тестовый файл по окончании теста;
  • -OutputFormatOut-GridView — возможен вывод результатов измерения в консоль PowerShell (Format-Table) или в отдельное окно графической таблицы (Out-Gridview);

В нашем случае дисковый массив (тестировался виртуальный vmdk диск на VMFS хранилище, расположенном на дисковой полке HP MSA 2040 с доступом через SAN) показал среднее значение IOPS около 15000 и скорости передачи данных (пропускная способность) около 5 Гбит/сек.

В следующей таблице указаны примерные значения IOPS для различных типов дисков:

Тип IOPS
SSD(SLC) 6000
SSD(MLC) 1000
15K RPM 175-200
10K RPM 125-150
7.2K RPM 50-75
RAID5 из 6 дисков с 10000 RPM 900

Ниже приведены ряд рекомендаций по производительности дисков в IOPS для распространенных сервисов:

  • MicrosoftExchange2010 – с 5000 пользователей, каждый из которых получает 75 и отправляет 30 писем в день, потребует как минимум 3750 IOPS
  • MicrosoftSQL2008 Server – с 3500 SQL транзакциями в секунду (TPS) — 28000 IOPS
  • Обычный сервер приложений Windows на 10-100 пользователей — 10-40 IOPS

Динамические диски: рассматриваем одну из ключевых возможностей системы управления дисками в Windows Server 2003

Содержание статьи

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

Краткий исторический экскурс

Динамические диски появились еще в NT 4.0, только там они назывались мультидисками (multidisk) и представляли собой обыкновенные программные RAID’ы, широко распространенные в мире UNIX. Информация о конфигурации мультидисков хранилась в реестре, и крах системы приводил к потере всех данных. Потеря всех данных происходила и при полной переустановке системы или попытке перенести жесткий диск на систему с другой NT. Эти недостатки нивелировали все достоинства мультидисков, существенно ограничивая область их применения. Начиная с Win2k, Microsoft слегка усовершенствовала менеджер дисковой подсистемы, и теперь информация о конфигурации хранится непосредственно на самом диске, откуда считывается в реестр при первом монтировании мультидиска.
По маркетинговым соображениям мультидиски были переименованы в динамические диски (dynamic disk), и Microsoft развернула целую компанию по их продвижению на рынок. Но если при обновлении NT 4.0 до Win2k информация о существующих мультидисках нормально считывалась из реестра, то попытка обновления NT 4.0 до XP или Server 2003/2008 ведет к необратимой потере данных, которые необходимо предварительно скопировать на другой носитель. В остальном же динамические диски по сравнению с мультидисками не претерпели никаких существенных изменений. Однако отказ от реестра как от основного хранилища информации о конфигурации RAID-массива создает все предпосылки для перехода с обычных дисков на динамические. Но, прежде чем принимать окончательное решение, необходимо взвесить все за и против, чем мы сейчас, собственно, и займемся.

Мифы о динамических дисках

Динамические диски окружены огромным количеством сплетен, мифов и легенд, кочующих из одного издания в другое и приписывающих им чудодейственные возможности, которыми они не обладают и обладать не могут в принципе (смотри, например, www.computerperformance.co.uk/Litmus/disk_dynamic.htm).
Опрос знакомых администраторов показал, что большинство из них уверены, что динамические диски (в отличие от обычных) могут изменять свой размер «на лету». Однако мало кто из них пытался осуществить это на практике, а попытавшись, убеждался, что с этим справляются только утилиты сторонних разработчиков типа знаменитого PQMagic.

Заблуждение это происходит из-за неверной трактовки термина free space, под которым технические писатели из Microsoft подразумевали unallocated space, то есть свободное пространство, не принадлежащее никакому дисковому тому. Допустим, у нас есть два раздела, на которых свободно по 69 и 96 Гб соответственно. Можем ли мы увеличить размер первого раздела хотя бы на 10 Гб за счет второго? Ответ отрицательный! А вот если мы воткнем еще один винчестер, на котором нет никаких разделов (или же имеются неразмеченные разделы), то в этом (и только этом!) случае динамический диск действительно сможет увеличить свой размер, поглотив все неразмеченное пространство (или его часть).

В результате этого один раздел (например, F:) окажется расположен на двух (или более) физических дисках, но с точки зрения операционной системы будет трактоваться как один том. Такая задача никакому PQMagic’у уже не по зубам, однако следует помнить, что подобное увеличение размера динамического диска достается дорогой ценой. Во-первых, при отказе одного диска мы автоматически теряем второй (и все остальные). Во-вторых, при попытке переноса динамического тома на другую машину нам придется тащить за собой сразу два или более диска, что опять-таки не всегда приемлемо, и в ряде случаев выгоднее использовать несколько стандартных томов (типа C:, D:, E:), чем один динамический диск такого же размера, тем более что Win2k3 позволяет монтировать раздел на любую пустую папку другого раздела, а при необходимости демонтировать его обратно.
Заблуждение второе — динамические диски поддерживают неограниченное количество томов на одном устройстве, а стандартные (они же базовые) — всего четыре, поскольку в таблице разделов имеется место только для четырех записей. Однако еще со времен MS-DOS таблица разделов поддерживает рекурсивные расширения, снимающие всякие ограничения на число томов. В MS-DOS и Win9x количество разделов не может превышать число возможных букв, но Win2k и все последующие системы позволяют назначать дискам имена произвольной длины или монтировать их на папки соседних разделов, поэтому при желании один диск можно разбить хоть на 666 томов. Вопрос только зачем.

Заблуждение третье — динамические диски работают быстрее/лучшее обычных. И с какой это радости?! Планировка запросов в динамических дисках выполнена просто ужасно, и, в случае если динамический диск занимает более одного физического, мы получаем конкретные тормоза. Если же динамический диск полностью умещается на одном физическом диске, то он работает абсолютно с той же скоростью, что и обычный.

Типы динамических дисков

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

Составные (spanned) состоят из одного или нескольких simple-томов, находящихся на разных физических дисках, объединенных в единый логический том. Информация записывается последовательно, как в классическом линейном RAID-массиве.

Чередующиеся (stripped) внешне похожи на spanned, поскольку, как и последние, объединяют несколько физических дисков в один логический том, но данные записываются вперемешку, то есть первый сектор — на первый жесткий диск, второй — на второй и т.д. В результате этого оба жестких диска работают параллельно, и, если они подключены к различным IDE-контроллерам, скорость обмена пропорционально возрастает. Однако если хотя бы один диск откажет, из данных образуется «решето», не подлежащее восстановлению. Одним словом, все как в классическом RAID-массиве уровня 0.

Зеркальные (mirrored) — два или более динамических диска, объединенных в один логический, причем запись дублируется на все диски (как в RAID’е уровня 1), и при выходе одного винчестера из строя он может быть заменен без потери данных (а в случае поддержки hot-plug’а — и без остановки сервера). Зеркалировать можно не только простые, но также составные и чередующиеся динамические диски. Платить за надежность приходится не только дисковым пространством, но и производительностью, поскольку количество контроллеров не безгранично и зеркальные диски обычно цепляются на уже задействованные контроллеры. К тому же поиск секторов на современных винчестерах осуществляется методом «вилки» и занимает различное время, а значит, при одновременном работе с несколькими винчестерами мы вынуждены дожидаться самого последнего из них, то есть паспортное время поиска из «среднего» приближается к «наихудшему».

Чередование с контролем четности (stripped with parity) соответствует массиву RAID уровня 5. Состоит из трех или более дисков (максимум — 32). Данные пишутся на все диски, кроме последнего, где хранятся коды коррекции ошибок, с помощью которых можно восстановить любой другой отказавший диск. Получается, если мы имеем три диска, избыточность составит всего 30%, а в случае пяти дисков — 20%. Естественно, RAID–5 оправдывает себя только на массивах, состоящих из большого количества дисков. Массив не может динамически увеличивать свой размер за счет присоединения новых томов и к тому же поддерживается только серверными версиями Windows.

Программный RAID-массив vs аппаратный

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

Интересно сравнить достоинства и недостатки программных RAID-массивов с таковыми аппаратных.

Достоинства аппаратных RAID-массивов (по сравнению с программными):

  • независимость от конкретной операционной системы (при условии, что она поддерживает этот RAID-контроллер);
  • более высокая производительность и улучшенная система диагностики аварийных и предаварийных состояний;
  • возможность замены диска без остановки системы.

Недостатки аппаратных RAID-массивов:

  • если RAID-контроллер выйдет из строя или откажет материнская плата с интегрированным RAID-контроллером, то нам потребуется отыскать точно такой же контроллер, иначе все данные превратятся в труху;
  • контроллеры и интегрированные чипсеты зачастую содержат множество ошибок, но далеко не всякий контроллер позволяет обновлять свою прошивку (не говоря уже о том, что такая операция сопряжена с большим риском и требует пересоздания массива и восстановления всех данных);
  • низкая мобильность — при переносе массива дисков на другую машину необходимо прихватить контроллер (с драйверами), а в случае динамических дисков достаточно просто воткнуть их в Win2k/Win2k3.

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

Шесть доводов против динамических дисков

  1. Преобразование базового диска в динамический — это практически необратимая операция. Исключение составляют simple-разделы, которые можно превратить в обычные тома путем редактирования диска на секторном уровне (смотри ниже «Высший пилотаж, или делаем из динамического диска обычный»). Но составные, чередующиеся и уж тем более RAID–5 диски преобразовать обратно можно только путем копирования данных на внешний носитель и удаления динамических дисков с последующим созданием обычных разделов.
  2. Преобразовав системный диск в динамический, мы уже не сможем ни обновить, ни переустановить Windows, поскольку динамические диски, увы, инсталлятор не понимает и навряд ли будет понимать в дальнейшем (Server 2008 beta 3 до сих пор не поддерживает такую операцию).
  3. Linux и xBSD штатным образом динамические диски не поддерживают и для работы с ними требуют установки программного обеспечения от сторонних производителей (например, Paragon LDM/NTFS driver – paragon-software.com), но это еще полбеды. Некоторые типы динамических дисков поддерживаются только «продвинутыми» версиями Windows, и потому, обновляя, например, Windows XP Home до Windows Vista Home Base/Premium, мы с удивлением обнаружим пропажу динамических дисков.
  4. При серьезных разрушениях дискового тома восстанавливать данные на динамических дисках намного труднее, чем на обычных, и как минимум на порядок дороже. Хакеры только-только распотрошили формат информации, описывающий структуру динамических дисков, но там еще много белых пятен, и реально действующих утилит для автоматизированного восстановления на сегодняшний день нет.
  5. Динамические диски имеют проблемы со службой кластеров и теневыми копиями, и, чтобы не накосячить, требуется раскурить базу знаний и тщательно продумать каждый шаг.
  6. Серьезные серверы традиционно оснащаются аппаратными RAID-контроллерами, а у несерьезных потребности в динамических дисках, в общем-то, не возникает, и там они несут больше проблем, чем решают.

Создаем и удаляем динамические диски

Создание динамических дисков не представляет никаких проблем. Запускаем Computer Management, входим в Disk Management, щелкаем правой клавишей мыши по базовому диску, который мы хотим преобразовать в динамический, выбираем в контекстном меню пункт Convert to Dynamic Disk и, ответив на ряд унылых запросов, получаем simple-том. Щелкнув по нему, мы сможем либо расширить его размер за счет невыделенного свободного пространства других дисков (Extend Volume), либо зазеркалить том (Add Mirror). Причем последний пункт работает только в серверных версиях и только при наличии места на зеркальном диске (создать зеркало на том же самом физическом диске невозможно, да это и ненужно).
Simple-том не может быть преобразован в RAID–5, и потому для создания такой матрицы нам потребуется по меньшей мере три пустых динамических диска, на которых не создано никаких томов. Щелкаем мышью по любому из них, говорим New Volume, в появившемся диалоговом окне выбираем RAID–5 (работает только на серверных версиях Windows), отвечаем на пару несложных запросов (какие диски добавлять в массив, как его форматировать) — и все!
Утилита командой строки DISKPART позволяет делать то же самое, только без помощи мыши. Просто набираем в консоли diskpart.exe, пишем help и смотрим вывод. В частности, чтобы создать simple-том размером 32 Гб на диске №4, находясь внутри diskpart.exe, необходимо написать:

Для удаленного управления динамическими дисками можно либо воспользоваться терминальной службой, запуская в RDP-сессии diskpart.exe, либо в Computer Management выбрать «Action -> Connect to another computer». При этом в качестве клиента может выступать любая ось из линейки NT, начиная с Win2k.

Высший пилотаж, или делаем из динамического диска обычный

Simple-том, полученный путем обновления базового диска до динамического, можно вернуть обратно, запустив редактор диска и поменяв тип раздела с 42h на 07h. После перезагрузки «Менеджер диска» потеряет динамический диск, отметив его красным крестиком, но это нестрашно, и его можно смело удалить. А вот восстановленный базовый диск рекомендуется почекать утилитой chkdsk. Подробнее об этом можно прочитать в статье «Converting Dynamic Disks Back to Basic Disks» (thelazyadmin.com/blogs/thelazyadmin/archive/2007/01/17/Converting-Dynamic-Disks-Back-to-Basic-Disks.aspx). Однако следует помнить, что во всех остальных случаях (включая расширение simple-диска до spanned/stripped) эта техника уже не работает, приводя к серьезным разрушениям данных, восстановить которые по силам только профессионалам.

Поддержка динамических дисков разными осями

  • Vista Home Base/Premium не поддерживает динамических дисков вообще;
  • Windows 2000 Pro, XP Home/Professional/x86–64, Vista Business/Enterprise/Ultimate поддерживают только простые, составные и чередующиеся динамические диски;
  • Windows 2000 Server, Sever 2003, Server 2008 поддерживают все типы динамических дисков.
    На laptop’ах динамические диски не поддерживаются.

Комментарий редактора

Читая различные обзоры, можно сделать вывод, что динамические диски обладают просто потрясающими возможностями: расширение дискового тома, применение чередования для повышения производительности, использование зеркального отражения, присоединение тома к массиву RAID–5, причем все это — штатными средствами операционной системы (через консоль mmc), без необходимости приобретения аппаратного RAID-контроллера и без перезагрузки! Разве не сказка? На практике оказывается, что нет.

Загрузка с динамического диска невозможна, следовательно, у нас должен быть один базовый диск под системные нужды плюс еще один базовый диск (или внешний носитель/накопитель) для хранения резервных копий (например, для gho-, tib- или bkf-файлов). Высока вероятность того, что динамический диск мы не увидим из другой операционки. На нем нельзя создавать основной (основные) и дополнительный разделы. В продакшн-системах составные и расширенные тома практически бесполезны, так как ни один из этих типов не предусматривает избыточности, соответственно, все данные будут утрачены при отказе любого диска этого тома. Не поддерживаются такие популярные уровни, как RAID–10 и RAID–50. Не получится «на лету» увеличить размер томов RAID–0 и RAID–5, просто добавив диски к существующей матрице (аппаратные RAID’ы это позволяют), — придется обращаться к услугам специального мастера и совершать дополнительные телодвижения. Как минимум одна перезагрузка все же потребуется — при создании или преобразовании первого из базовых дисков в динамический. Кроме того, операции преобразования придется выполнять в часы простоя сервера — поздно ночью или в выходные дни, так как при наличии открытых файлов возможна потеря данных. Остальные минусы использования этой «революционной разработки» красочно расписал мыщъх.

Некоторые сорвиголовы скажут, что динамические диски можно использовать в связке с аппаратным RAID-контроллером, тогда программная реализация обеспечит гибкость при необходимости расширения тома, а железка — требуемую избыточность, однако Microsoft в своих руководствах настоятельно не рекомендует применять этот подход.

Крис Касперски

Известный российский хакер. Легенда ][, ex-редактор ВЗЛОМа. Также известен под псевдонимами мыщъх, nezumi (яп. 鼠, мышь), n2k, elraton, souriz, tikus, muss, farah, jardon, KPNC.

Читайте также:  Что лучше андроид или линукс для телевизора сони
Оцените статью