Clusterware, Linux 5 and raw devices

Хочу вернуться к теме конфигурирования в Oracle EL 5 и RHEL 5 raw устройств.
Конечно, в первую очередь рекомендуется размещать на raw ocr и voting файлы. Для файлов БД у нас есть asmlib.

Почему raw - потому, что обращение к этим файлам не идет через filesystem cache, что надежнее и быстрее (для этого типа файлов).

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

Мне не удалось понять, зачем в 5 версии Linux Red Hat убрал поддержку raw. Но это и не важно. Важно что судя по многочисленным источникам в интернете в clusterware 10gR2 существует баг (см. также Note:401132.1), из-за которого файлы на блочных устройствах не открываются с флагом O_DIRECT.

Предлагаемый workaround такой:

Как пользователь root на всех узлах
mkdir /dev/raw

Для VOTING файла (/dev/sdd1)

добавьте строчки в файл (создайте файл) /etc/udev/rules.d/61-local-raw.rules
ACTION=="add", KERNEL=="sdd1", RUN+="/bin/raw /dev/raw/raw1 %N"
KERNEL=="raw1", OWNER=”oracle”, GROUP="oinstall", MODE="660"


Для OCR файла (/dev/sde1)

добавьте строчки в файл /etc/udev/rules.d/61-local-raw.rules
ACTION=="add", KERNEL=="sde1", RUN+="/bin/raw /dev/raw/raw2 %N" KERNEL=="raw2", GROUP="oinstall", MODE="640"


Конечно, хотелось бы проверить информацию о вышеупомянутом баге. Но я не нашел простого способа :( Решил посмотреть как отрываются raw устройства:

uname -a
Linux rac1.ru.oracle.com 2.6.18-53.el5 #1 SMP


lsof /dev/raw/raw2

COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
evmd.bin 3737 oracle 5r CHR 162,2 7078 /dev/raw/raw2
evmd.bin 3737 oracle 7r CHR 162,2 7078 /dev/raw/raw2
crsd.bin 3875 root 6r CHR 162,2 7078 /dev/raw/raw2
crsd.bin 3875 root 10r CHR 162,2 7078 /dev/raw/raw2
crsd.bin 3875 root 12u CHR 162,2 7078 /dev/raw/raw2
oclsomon. 4112 oracle 4r CHR 162,2 7078 /dev/raw/raw2
ocssd.bin 4229 oracle 4r CHR 162,2 7078 /dev/raw/raw2

Вот дальше оказалось сложнее - процессы мы увидели, теперь хотелось бы посмотреть на флаги, с которым открыты файлы.

Интересную информацию поставляет /proc//fd/ но флагов нет и там.

И вот тут надо либо использовать strace, либо аналог команды Solaris pfiles. С помощью strace можно что-то понять только если процесс открывает и закрывает файл. А если он держит его открытым - то фиг. С помощью

strace -e trace=open,read,write -p

ничего выяснить мне не удалось. pfiles под Linux нет. Оказалось правда, что Eugene Teo написал утилиту pfiles, но на systemtap. Но справиться с ее установкой мне , увы не удалось.



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

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