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/
И вот тут надо либо использовать strace, либо аналог команды Solaris pfiles. С помощью strace можно что-то понять только если процесс открывает и закрывает файл. А если он держит его открытым - то фиг. С помощью
strace -e trace=open,read,write -p
ничего выяснить мне не удалось. pfiles под Linux нет. Оказалось правда, что Eugene Teo
Комментариев нет:
Отправить комментарий