ASMlib

Существует убеждение, что ASMlib для Linux позволяет ускорить ввод-вывод. Это странно, но однозначного ответа получить нельзя. В презентациях иногда вспоминают это, иногда пропускают. Преподаватели на курсах имеют самые разные идеи насчет этого вопроса :)

За разрешением вопроса о том, что же далает ASMLIB обратимся к книге Oracle Automatic Storage Management. Поскольку один из авторов Rich Long, Director of Development, можно предположить, что это наиболее достоверный источник информации.

В книге утверждается, что ASMLIB обеспечивает следующие 3 основные функции (курсив мой):

  1. Device discovery
    1. Действительно, с помощью команды oracleasm можно создать asm диски, чтобы облегчить немного жизнь ASM. В заголовок диска прописывается специальная строчка, говорящая о том, что следует адресоваться к диску с помощью asmlib. Далее в параметре ASM инстанс необходимо прописать asm_diskstring="ORCL:*" чтобы предотвратить открытие всех дисков для поиска необходимых ASM. Более подробно можно прочитать http://www.oracle.com/technology/tech/linux/asmlib/persistence.html
      Но в принципе, udev делает тоже самое (?)


  2. I/O processing
    1. Cокращается число file handler в системе. Для каждого диска существует всего лишь один, так называемый "portal device", через который ведется весь ввод-вывод. С одной стороны, это полезно чтобы не подкручивать лимиты ОС. С другой стороны, если файлы открываются, то их нужно и закрывать, а это не все процессы делают. Мне говорили, что замена ASM диска без ASMlib может стать проблемой, если дисков очень много.
    2. ASMLIB не использует kernel async IO. Используется собственный механизм вводы-вывода, также асинхронный. надеюсь, что он быстрее чем родной, ведь его не просто так написали ?

  3. Perfomance
    1. Делается меньше переключений контекста, что экономит CPU time. Верю, но почему не воспользовались интерфейсом ODM, который реализовал, например, Veritas ?
    2. За один вызов к asmlib можно выполнить несколько операций I/O. Наверно для full scan можно, а вот для чего еще это работает я понять не могу.

Почему меня так беспокоит весь этот гондурас ?

Если бы видели матрицу поддержки EMC powerpath ASMlib он вас тоже бы беспокоил.
Через версию они (EMC) все ломают. Апофеозом борьбы можно считать Note:469163.1
которая рекомендует игнорировать все происки врагов и использовать лом:
/usr/sbin/asmtool -C -l /dev/oracleasm -n -s /dev/ -a force=yes

Вот только зачем, если у Вас не тысячи пользователей и сотни файлов ?
Из-за экономии 10% CPU при следующем upgrade powerpath можно потерять свои диски...

Резюме:

Посмотрите сначала на поддержку ASMLIB на вашей платформе. Посмотрите на кол-во дисков и пользователей. Взвесьте все "за" и "против" - теперь Вы их знаете. В любом случае вы всегда можете мигрировать raw устройства в asmlib диски без потери данных. Дело в том, что в первых 128 байтах на диске находится название дисковой группы и признак, управляется ли этот диск asmlib. Так что oracleasm cre
atedisk всего лишь проставляет признак, не разрушая название группы.

Update 1.
Для чтение заголовков ASM дисков у нас существует редактор kfed. К сожалению описание самого заголовка internal only. Можете поэкспериментировать сами :)

Комментариев нет:

Отправить комментарий