понедельник, 23 марта 2009 г.

Смещение логического тома дискового массива EMC CLARiiON в среде Microsoft Windows 2000/2003


Операционные системы Microsoft Windows Server 2000/2003 не определяют корректно геометрию дисков в логических томах, находящихся на дисковых массивах (например, EMC Symmetrix или CLARiiON). ОС резервирует 63 сектора (31.5 КБ) в начале тома для служебных данных (наследие старой геометрии дисков архитектуы Intel - Master Boot Record) и начинает записывать полезные данные с 64 сектора. В результате этого немодифицированные тома записывают данные неоптимально и производительность дискового массива снижается. Возникающий эффект называется "disk crossing".

Из-за ошибочного определения геометрии дисков происходит разбиение одного записываемого блока на два. Это встречается со следующей частотой:
  • Any I/O of 32 KB or larger will always cause a boundary crossing.
  • Any random I/O of 16 KB will cause a boundary crossing 50 percent of the time.
  • Any random I/O of 8 KB will cause a boundary crossing 25 percent of the time.
  • Any random I/O of 4 KB will cause a boundary crossing 12.5 percent of the time.

Для исправления ситуации необходимо изменить размер зарезервированной области до оптимального. В случае массива EMC CLARiiON этот размер равен 128 блокам (64 КБ), что одинаково корректно для записи блоков Windows в 4 КБ (стандартный размер блока для форматирования разделов NTFS), так и для записи элементов массива CLARiiON в 64 КБ. В результате этого данные будут записываться во второй дисковый элемент первого страйпа массива.

Оптимизировать тома можно как средствами дискового массива, так и инструментами ОС. Последний вариант является более предпочтительным, т.к. при изменении настроек LUN в дисковом массиве это отразится на работе встроенных приложений, таких как SnapView, SanCopy, т.д.

Для оптимизации в среде Windows доступно 2 программы - diskpar (позволяет оптимизировать тома на всех версиях Windows NT, 2000 и 2003, находится в Windows 2000 Resource Kit) и diskpart (позволяет оптимизировать тома в Windows 2003 SP1 и выше). Применение этих утилит необходимо запланировать до разметки диска, т.к. они удаляют все данные, если они находились на томе.

Улучшение производительности после выравнивания томов может достигать 20 процентов и более.

C:\ diskpart
Microsoft DiskPart version 5.2.3790.1830
Copyright (C) 1999-2001 Microsoft Corporation.
On computer: W3K-LAB
DISKPART> select disk 1
Disk 1 is now the selected disk.
DISKPART> create partition primary align=64
DiskPart succeeded in creating the specified partition.
DISKPART> exit
Leaving DiskPart...


C:\> diskpar -s 1
Set partition can only be done on a raw drive.
You can use Disk Manager to delete all existing partitions
Are you sure drive 1 is a raw device without any partition? (Y/N) y
---- Drive 1 Geometry Information ----
Cylinders = 1174
TracksPerCylinder = 255
SectorsPerTrack = 63
BytesPerSector = 512
DiskSize = 9656478720 (Bytes) = 9209 (MB)
We are going to set the new disk partition.
All data on this drive will be lost. continue (Y/N)? y
Please specify starting offset (in sectors): 128
Please specify partition length (in MB) (Max = 69044): 4000
Done setting partition.
---- New Partition information ----
StatringOffset = 65536
PartitionLength = 4194304000
HiddenSectors = 128
PartitionNumber = 1
PartitionType = 7
You should now use Disk Manager to format this partition

В Windows 2008 разделы имеют отступ в 1 МБ по умолчанию. Это обеспечивает хорошую совместимость для систем хранения данных:
http://www.itcommunity.ru/blogs/mamyshev/archive/2008/11/14/36335.aspx.


8 комментариев:

Unknown комментирует...

Интересно, вывод утилиты diskpar взят с живой системы или из какого-то мануала?

А то сочетание строчек тревожит мой разум.
BytesPerSector = 512
//в секторе 512 байт - договорились
...
Please specify starting offset (in sectors): 64
//задаём отступ в 64 СЕКТОРА! а ведь хотели на самом деле в 64 Кбайта? А почему? А потому, что у CLARiiON-а (да и у многих других систем сейчас) длина полосы RAID по умолчанию такая. А у Symmetrix из-за трэка, да.
...
Please specify partition length (in MB) (Max = 69044): 4000
//Задали длину партиции в 4000 МегаБайт.
...
StatringOffset = 65536
//получаем отступ в 128x512 байт т.е. 128 секторов, а ведь выше задали 64 сектора. Странно!
...
PartitionLength = 8388608
А длина партиции получилась 8х1024х1024 байт т.е. 8 Мегабайт, а не 4000 Мегабайт, как мы задали ранее. Странно!
...
HiddenSectors = 64
//А отступ в секторах тем не менее 64!

Просто мистика! А так выравнивание - полезное дело, stripe crossings уменьшает.

Unknown комментирует...

Спасибо за замечание, ошибка исправлена. Источником некорректной выдачи послужил мануал с ошибочно измененными величинами :-)

Анонимный комментирует...

Всё разложено по полкам….спасибо…очень интересно

Анонимный комментирует...

Очень познавательно. Спасибо.

Анонимный комментирует...

Очень хороший пост! Спасибо за проделанную работу!

Анонимный комментирует...

я бы кое-что добавила, но по сути сказано все

Анонимный комментирует...

Интересно даже для бухгалтера :)))))

Анонимный комментирует...

Bravo, your idea is useful