Объявление: В ближайшее врема, возможность комментировать записи в блогах с учетной записью социальной сети ВКонтакте, будет удалена! В силу неприятия данной социально сети владельцем блога. Комментарии постараюсь сохранить.

Слава Україні! Ла-ла-ла-ла!...

Блог Морозов

Заметки, идеи, мысли...

HP-UX: первые шаги (SAN)

Автор: MadHead
MadHead
DevOps, Системный администратор, работающий как с Windows, так и UNIX системами.
Пользователей в сайте сейчас нет
Создано: Пятница, 16 Август 2013 в HP-UX

В короткие сроки сделать заметку о 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.

0 голоса(ов)
Облака: HP-UX, SAN, Storage, UNIX

Не достаточно прав для добавления комментариев (только зарегистрированные пользователи)

Tekstkontent