HP-UX: первые шаги (SAN)
- Просмотров: 3524
- Комментариев: 0
- Подписаться на обновления
- Печатать
- Поделиться
В короткие сроки сделать заметку о HP-UX у меня не получилось... Но зато она будет более зрелой. Затрону работу с дисковой подсистемой, а также простейшую конфигурацию отказоустойчивой сети. (совсем уж короткое вступление получилось...)
Небольшое лирическое отступление: на практике работал с тремя версиями HP-UX (11.11 - 11i, 11.23 - 11i v2, 11.31 - 11i v3), различия при работе этих версия я и буду указывать.
Дисковая подсистема (работа с SAN)
Даже при установке системы на локальный диск, используется менеджер логических томов (LVM) поэтому все основные операции с дисками производятся через эту прослойку. Очень хорошую статью с примерами на эту тему можно почитать на xgu.ru. Далее я тоже приведу примеры использования и проблемы, что при этом возникают, но пока давайте спустимся на уровень ниже менеджера томов...
С локальными дисками все относительно просто - они постоянно подключены, и зависят только от физического подключения. А вот с SAN все несколько сложнее... (Ввиду того, что я работаю только на стороне ОС, то и дальше HBA адаптера я ничего описать не могу)
Итак, первое что надо сделать, перед тем как получить диски из SAN, нужно проверить наличие возможности с ними работать - наличие портов Fiber Channel
#ioscan -kfnC fc
Class I H/W Path Driver S/W State H/W Type Description
===================================================================
fc 0 0/4/0/0/0/0 fcd CLAIMED INTERFACE HP 403619-B21 4Gb Dual Port PCIe Fibre Channel Mezzanine (FC Port 1)
/dev/fcd0
fc 1 0/4/0/0/0/1 fcd CLAIMED INTERFACE HP 403619-B21 4Gb Dual Port PCIe Fibre Channel Mezzanine (FC Port 2)
/dev/fcd1
Как видно из вывода команды, у нас в наличии 2 порта Fiber Channel. Чтобы нам презентовали диски нам нужно сообщить World Wide Name (WWN) наших портов. Сделать это можно следующей командой:
# fcmsutil /dev/fcd0
Vendor ID is = 0x001077
Device ID is = 0x002422
PCI Sub-system Vendor ID is = 0x00103c
PCI Sub-system ID is = 0x0012d6
PCI Mode = PCI-X 133 MHz
ISP Code version = 4.2.2
ISP Chip version = 3
Topology = PTTOPT_FABRIC
Link Speed = 4Gb
Local N_Port_id is = 0x29a380
Previous N_Port_id is = 0x28a380
N_Port Node World Wide Name = 0x5111442008a13da1
N_Port Port World Wide Name = 0x5111442008a13da0
Switch Port World Wide Name = 0x2e2b111533e22201
Switch Node World Wide Name = 0x1000111533e22201
Driver state = ONLINE
Hardware Path is = 0/3/1/0
Maximum Frame Size = 2048
Driver-Firmware Dump Available = NO
Driver-Firmware Dump Timestamp = N/A
Driver Version = @(#) libfcd.a HP Fibre Channel ISP 23xx & 24xx Driver B.11.11.16 /ux/kern/kisu/FCD/src/common/wsio/fcd_init.c:Jun 11 2008,13:35:21
В версии 11.31 вывод будет более обширен, но для нашей задачи это не принципиально. Нас интересует строка
N_Port Port World Wide Name = 0x5111442008a13da0
При наличии нескольких портов, диски презентуются по нескольким путям - для отказоустойчивости. Следовательно нам нужно сообщить WWN всех портов. Сделать это проще вот так:
# for f in `ls /dev/fc*`; do echo $f; fcmsutil $f | egrep "N_Port Port|state"; done
/dev/fcd0
N_Port Port World Wide Name = 0x5111442008a13da0
Driver state = ONLINE
/dev/fcd1
N_Port Port World Wide Name = 0x5111442008a13da1
Driver state = ONLINE
После того, как мы сообщили WWN и нам презентовали диски, мы диски не увидим... нужно заставить систему просканировать их наличие.
Для 11.31
# ioscan -fnNC disk
Class I H/W Path Driver S/W State H/W Type Description
===================================================================
disk 1 64000/0xfa00/0x0 esdisk CLAIMED DEVICE HP IR Volume
/dev/disk/disk1 /dev/disk/disk1_p2 /dev/rdisk/disk1 /dev/rdisk/disk1_p2
/dev/disk/disk1_p1 /dev/disk/disk1_p3 /dev/rdisk/disk1_p1 /dev/rdisk/disk1_p3
disk 70 64000/0xfa00/0x85 esdisk CLAIMED DEVICE HITACHI OPEN-V
/dev/disk/disk70 /dev/rdisk/disk70
disk 71 64000/0xfa00/0x86 esdisk CLAIMED DEVICE HITACHI OPEN-V
/dev/disk/disk71 /dev/rdisk/disk71
Для 11.23 и 11.11
# ioscan -fnC disk
Class I H/W Path Driver S/W State H/W Type Description
==========================================================================
disk 1 0/0/0/2/0.6.0 sdisk CLAIMED DEVICE HP 73.4GMAX3073NC
/dev/dsk/c0t6d0 /dev/dsk/c0t6d0s2 /dev/rdsk/c0t6d0 /dev/rdsk/c0t6d0s2
/dev/dsk/c0t6d0s1 /dev/dsk/c0t6d0s3 /dev/rdsk/c0t6d0s1 /dev/rdsk/c0t6d0s3
disk 128 0/0/4/1/0.40.138.128.0.0.1 sdisk CLAIMED DEVICE HP HSV210
/dev/dsk/c85t0d1 /dev/rdsk/c85t0d1
disk 132 0/0/4/1/0.40.138.128.0.0.2 sdisk CLAIMED DEVICE HP HSV210
/dev/dsk/c85t0d2 /dev/rdsk/c85t0d2
Итак... команда ioscan служит для того, чтобы заставить систему просканировать (опросить) систему ввода/вывода на предмет подключенных устройств. Кратко о ключах команды:
-f показать полный листинг (все параметры)
-n показывать имена устройств
-N показывать устройства в "живом представлении" (agile view)
-C показывать устройства определенного класса (в данном случае класса disk)
-k используется для того, чтобы посмотреть о каких устройствах уже известно ядру. Сканирование подключенных устройств не производиться. (ioscan -kfnNC disk)
В обоих примерах присутствует локальный диск (disk 1) и два диска презентованных из хранилища.
Если сравнить команду и вывод 11.31 и более ранних, то отличие будет в "живом представлении". Результат имеет более читабельных формат (если это disk 1, то символьное и блочное устройство будут /dev/rdisk/disk1 и /dev/disk/disk1 соответственно, а не /dev/rdsk/c85t0d1 и /dev/dsk/c85t0d1). Но есть и более существенно отличие - 11.31 диск, презентованный по нескольким путям, показывает как одно устройство, а не по одному устройству на каждый путь, как это было в предыдущих версиях. Для большей наглядности приведу пример (во втором примере disk60 и disk63 это один и тот же диск, презентованный по 2 путям):
11.31:
# ioscan -kfnNC disk
Class I H/W Path Driver S/W State H/W Type Description
===================================================================
disk 70 64000/0xfa00/0x85 esdisk CLAIMED DEVICE HITACHI OPEN-V
/dev/disk/disk70 /dev/rdisk/disk70
# ioscan -kfnNC lunpath | grep disk70
lunpath 77 0/4/0/0/0/0.0x50060e8016543847.0x4000000000000000 eslpt CLAIMED LUN_PATH LUN path for disk70
lunpath 81 0/4/0/0/0/1.0x50060e8016543877.0x4000000000000000 eslpt CLAIMED LUN_PATH LUN path for disk70
11.11:
# ioscan -kfnC disk
Class I H/W Path Driver S/W State H/W Type Description
===========================================================================
disk 60 0/3/1/0.41.223.0.0.0.2 sdisk CLAIMED DEVICE HITACHI OPEN-V
/dev/dsk/c52t0d2 /dev/rdsk/c52t0d2
disk 63 0/4/1/0.40.222.0.0.0.2 sdisk CLAIMED DEVICE HITACHI OPEN-V
/dev/dsk/c54t0d2 /dev/rdsk/c54t0d2
Есть еще одна особенность HP-UX версий ниже чем 11.31... Они не создают файлы устройств после сканирования автоматически, и скорее всего мы увидим вот такой вывод:
# ioscan -kfnC disk
Class I H/W Path Driver S/W State H/W Type Description
===========================================================================
disk 60 0/3/1/0.41.223.0.0.0.2 sdisk CLAIMED DEVICE HITACHI OPEN-V
disk 63 0/4/1/0.40.222.0.0.0.2 sdisk CLAIMED DEVICE HITACHI OPEN-V
Тоесть диски есть, но файлов устройств нет, следовательно работать с этим нельзя. Исправляется это очень легко:
# insf
Команда создает специальные файлы устройств для оборудования, о котором знает ядро.
Также бывает обратная ситуация, когда нужно убрать диск из системы (оторвать). Для этого нужно освободить его (размонтировать файловые систему, убрать из групп томов), а затем сообщить его World Wide ID (WWID). И снова отличия в версии системы... 11.31 - все просто! Используем команду:
# scsimgr get_attr -D /dev/rdisk/disk70 -a wwid
SCSI ATTRIBUTES FOR LUN : /dev/rdisk/disk70
name = wwid
current = 0x60060e80165438000001543800000728
default =
saved =
Вуааля, WWID = 0x60060e80165438000001543800000728. А вот в более ранних версиях выяснить этот параметр фактически невозможно. Во всяком случае с моими знаниями. И есть 2 выхода (о которых я знаю): отрывать диски по размеру (если размер диска не совпадает и другими дисками), выяснить размер можно командой diskinfo; оторвать диск по одному пути на хранилище (если презентован по нескольким) и удостовериться в правильности выбора на стороне ОС (активных путей к нашему диску должно стать на 1 меньше).
Справедливости ради, нужно заметить, что выяснить WWID нельзя штатными средствами системы. Но существуют средства для работы с конкретными хранилищами, такие как EVA Info (для EVA4x00/6x00/8x00, EVA3000/5000), P9000info (для XP24000, XP20000, SVS200, XP12000, XP10000, XP128, XP1024, XP48, P9500). Эти утилиты позволяют получить нужную информацию в случае использования дисков из совместимых хранилищ.
Итак, после того, как выяснили какие точно диски нужно отключить и отключили их на хранилище, нужно зачистить их следы в системе. Выяснить что нужно зачищать можно следующим образом:
# ioscan -fnC disk | grep NO_HW
disk 60 0/3/1/0.41.223.0.0.0.2 sdisk NO_HW DEVICE HITACHI OPEN-V
disk 63 0/4/1/0.40.222.0.0.0.2 sdisk NO_HW DEVICE HITACHI OPEN-V
Как видно 2 диска у нас отключены... Чтобы удалить все отключенные диски (а не по одному) воспользуемся следующей командой:
#ioscan -kfnC disk | awk '/NO_HW/ { print $3; }' | xargs -t -i rmsf {}
Все... мы избавились от отсутствующих устройств в системе.
Я собирался затронуть еще LVM и простейший Port Aggregation, но информации для одной заметки будет слишком много... Значит это будут темы для следующих двух заметок. Надеюсь кому-то это будет полезно...
P.S. - также хочу выразить благодарность Андрею П., за конструктивную критику и советы... Ну и конечно за поддержку в изучении HP-UX.