пятница, 20 ноября 2015 г.

Памятка по работе с LVM в HP-UX

Давным давно проходил курсы по администрированию HP-UX, на которых лектором был Георгий Прилипко. Он и снабдил нас слушателей данной памяткой, за которую огромное ему спасибо, выручала не один раз.

LVM (Logical Volume Manager)

Предоставляет возможность управления размером/размещением логических томов (lvol) (аналог fdisk, но гораздо более мощный), может расширять lvol на ходу, не ограничивает их размерами конкретных дисков, обеспечивает strip и зеркала (при наличии Mirror/UX). Volume Group (VG) состоит из Physical Volume (PV), на которых создаются Logical Volume (LV). Место под LV выделяется логическими экстентами (LE), на диске под LE отдаются РЕ (physical extent), размер которого всегда равен размеру LE. Для каждого LV создается два устройства (/dev/vg../lvol и rlvol). LV считается непрерывным разделом.

Создание Volume Group (VG) (диски отдаются в VG целиком)

# ioscan -funC disk        - какие диски есть
# strings /etc/lvmtab*     - посмотреть, а какие используются
# vxdisk list              - а как с VxVM (11i) , если он есть
# diskinfo /dev/rdsk/с...  - информация о диске, -b только размер
# pvdisplay -l /dev/rdisk/disk*   - что на дисках 11iv2
# diskowner /dev/rdisk/disk...    - чей диск с 11iv3, для всех дисков
  # for d in /dev/rdisk/disk*; do diskowner $d; done
# pvcreate -f /dev/rdsk/с...    (-B для boot) не создает, если в /etc/lvmtab*

# Is -l /dev/*/group        - какие номера заняты
# mkdir /dev/vg01
# mknod /dev/vg01/group с 64 0x010000 (01 - номер группы) - контрольный файл
# vgcreate vg01 /dev/dsk/с... (в имени VG /dev/ можно не указывать)
  [ -s размер LE ] 1/2/4/8/...256Мb, степень 2 (по умолчанию 4Мb)
  [ -l max lvol ] [ -р max pv ] [ -е max РЕ на один PV ]
!!! maxpxs задается по vgcreate -е ... Потом через vgmodify у неактивной VG
  Если -е не указан, то устанавливается по размеру указанных дисков (>=1016).
С 11.31 появились последовательно LVM 2.0 с 0803/2.1 с 0809 /2.2 с 1003
# lvmadm -l /-t        -список групп и дисков / поддерживаемые типы и мах
Лучше создать самому каталог и контрольный файл, хотя vgcreate их может и сам
# mknod /dev/vg01/group с 128 0x001000    (001 - номер группы, нумерация своя)
# vgcreate -V версия, -s размер LE, -S макс размер vg01 PV ...
Группы LVMv1 живут в файле /etc/lvmtab, а с LVMv2 в /etc/lvmtab_p
# vgcreate -V версия, -Е -s размер LE    - какой максимальный размер при LE
# vgcreate -V версия, -Е -S макс размер  - (м.б. t/g/p) какой нужен LE
# vgdisplay [ -v ] [ vg00 ]    - информация о всех [ группе ]
  # vgdisplay -v | fgrep 'LV Name'    - список всех LV
# pvdisplay -v /dev/dsk/с...    - как легли LE на PE / ex. какие LV и сколько PE
  # pvdisplay -v /dev/dsk/с... | awk '/current/ { print $3 }' | uniq -c
# lvcreate [ -L 12 / -l 3 ] vg01      - создать 12Мб /dev/vg01/lvol1 (-l в LE)
  Если размер не указан, то создается LV 0 размера. В LVMv1 -l до 65535
  [ -n name ] в /dev/vg01 создается два файла: name и rname с минором 0x010001
  В качестве РЕ берутся первые свободные по порядку дисков в VG
# lvdisplay /dev/vg01/lvol1    - информация о LV (с -v как лежит)
Если нужно брать с конкретных дисков, создать с 0 длиной lvextend указать PV
!!! -L/-l всегда новый размер
# lvextend -L/-l <новый размер> [ PV - где брать ] - увеличивает, д.б. больше
# lvreduce -L/-l <новый размер> - уменьшает, новый размер д.б.  меньше

Служебные структуры (LVM 1.0)

Bootable-disk:    LIF-header(8 blocks)                           Обычный диск:
                  Physical Volume Reserved Area     (PVRA)       PVRA
                  Boot Data Reserved Area           (BDRA)
                  LIF volume
                  Volume Group Reserved Area        (VGRA)       VGRA
                  User Data Area                    (UDA)        UDA
                  Bad Block Relocation Pool         (BBRP)       BBRP

BDRA:

timestamp, checksum, root volume groop (RVG) ID, кол.дисков в RVG,
список адресов дисков RVG, индексы в этом списке для boot, swap, dump, информация для выбора логических томов. Команды: # lvlnboot, lvrmboot

PVRA:

LVM identification field – LVM есть и корректна. Unigue PV ID – проверяется при создании PV.

Номер по порядку в VG Last physical sector number для определения доступного места.

Длина физического экстента (РЕ) в DEV_BSIZE блоках (экспонента).

Кол-во пространства, захваченного каждым РЕ.

Адреса и длины структур: BDRA, VGRA, VG Descriptor Area (VGDA),
VG Status Area (VGSA), Mirror consistency records (MCR), UDA, в BBRP блоки no DEV_BSIZE = 1024 байта (/usr/include/sys/param.h)

VGRA: = VGDA + VGSA + MCR

VGDA:

timestamp, VGID, 3 конф.параметра: maxlvs (max число LV в VG), maxpxs (max число PE на одном диске), maxpvs (max число PV в VG).

Список LV entires: max число LE в LV, статус и свойства LV, mirroring shedule policy & max число mirror copies.

Список LVM дисков: заголовок с глобальной информацией о диске (PV ID, количество РЕ, статус), карта LE –> РЕ

VG trailer, отмечающий время последнего изменения. Сравнивается с             timestamp в заголовке для проверки корректности.

VGSA:

корректность и доступность VG, состояние РЕ (stale/current), дублирует часть информации VGDA (ex. quorum, maxpvs, maxpxs).

MCR:

время, когда MCR последний раз записывалось.

Миноры LV involved.

Число и длина logical track    group для каждого LV.

# vgcfgbackup VG    - сохранить информацию в /etc/lvmconf/VG.conf (предыдущее ->
в /etc/lvmconf/VG.conf.old)
  !!! копируйте    в архив /etc/lvmtab и /etc/lvmconf, а лучше весь /etc.
# vgcfgrestore      - восстанавливает PVRA и VGRA, м.б. использована для    записи
                    (-R) LVM-информации на замененный диск.
  ex.Ошибок (под root): newfs на /dev/dsk под LVM, dd затерло начало диска.
  Восстановление: /usr/sbin/vgcvgrestore -n VG /dev/rdsk/c0t4d0
vgscan       - восстанавливает /etc/lvmtab по областям VGRA с дисков на компьютере.
# vgscan -pv - посмотреть, но не пересоздавать.
# vgscan -v  - пересоздать (может измениться порядок primary/alternative path).

vgexport/vgimport

Если с -р, то просто создается карта, группа не удаляется и vgchange не нужен.

# vgchange -a n vg02; vgexport -m /tmp/mapfile vg02 (-s в карте будет VG ID)
# mkdir /dev/vg02; mknod /dev/vg02/group с 64 0x020000
# vgimport -v -m /tmp/mapfile /dev/vg02 /dev/dsk/c3t4d0 /dev/dsk/c4t5d0
  (если в карте есть VG ID, то можно указать -s и не указывать PV)
  -N для новых DSF, если забыли можно воспользоваться командой vgdsf.
# vgchange -а у vg02; vgcfgbackup vg02
# vgimport –pv ...    - предпросмотр (preview).
Можно удалить группу, переносить VG с одного компьютера на другой либо на
другие SCSI-адреса, менять номер VG и т.п. Например, принесли диски:
# ioscan -fnC disk
# mkdir /dev/vg02; mknod /dev/vg02/group с 64 0x020000
# vgimport vg02 PV1 [PV2]     - порядок не важен, если карты нет, все будут lvol...
                              потом можно переименовать, но и lvol и rlvol.
# vgchange -а    у vg02       - lvol см. в /dev/vg02
# vgcfgbackup     vg02        - сохранить копию структур в /etc/lvmconf/vg02.conf
!!! vgexport нужен для того, чтобы удалить информацию о VG из /etc/lvmtab
Все на дисках и так уже есть. Можно регулярно делать карты с -р (preview).
# vgexport -s -р -m /etc/lvmconf/vg02.map /dev/vg02     с VG ID
# vgchange -a n VG; vgexport VG (аналог rm -r для VG, поскольку vgremove VG работает
                    как rmdir, требует, чтобы в VG был один пустой PV.
# vgextend VG PV1    - добавить еще диск к VG.
  Если у Вас два пути диска (ex. RAID), то LVM отследит PV ID и установит alternative
  path (он будет использоваться только в том случае, если    откажет основной), можно
  переставить с помощью vgreduce/vgextend.
# pvchange -S    y/n PV    - возвращаться к primary path после его восстановления
                           (в pvdisplay будет: Autoswitch on/off).
# pvchange -p    y/n PV    - включить proactive poling,    живы ли другие линки.
# pvchange -s    PV        - перебросить временно на другой path.
# vgreduce VG PV           - удаляет диск из VG, если на нем нет LV.
  !!! Если перестаете использовать диск, то удалите его из VG (vgreduce)

Политика размещения LV.

# lvcreate/lvchange      -С у/n   - РЕ в LV идут последовательно.
                         -r y/n   - bad-блоки не перемещаются в BBRP.
Т.о. -Су -r n действительно непрерывен (нужен еще и -s у он по умолчанию):
!!! необходимы для boot/root/primary swap/dump lvol, иначе lvlnboot не пройдет.

# lvcreate -I  <число дисков> -i <размер куска strip: 4k/.../32M) VG.
# lvextend -L  20 LV PV   - позволяет явно указать диски, с которых брать РЕ.
  Если есть результат lvdisplay -v LV, то с помощью нескольких lvextend и
  промежуточного lvol можно, вообще говоря, разместить LV на то же место.

# pvchange -х n PV        - запретить брать РЕ с PV.
# lvcreate -s g -D y/n    - Distributed, т.е PE подряд идущих LE размещаются на
                            разных дисках в PVG-группе.

В группе могут быть определены PVG (PV группы) либо с помощью файла /etc/lvmpvg(есть man lvmpvg), либо ключом -g PVG у команд vgcreate/vgextend.
Итак, LVM обеспечивает программно RAID 0 (strip/distributed) и RAID 1 (Mirror/UX). В паре с зеркалами из Distributed получается RAID 0+1 (в VG как минимум 4 диска) с размером куска, равным РЕ. Обычный strip с зеркалом совместим с HPUX 11iV3.

Зеркала (нужен продукт Mirror/UX).

!!! Зеркалируются LV, а не диски. М.б. до 2 зеркал, т.е. на один LE приходится до 3 РЕ (обычно, одно для надежности, одно для    online    backup    через lvsplit).

# lvcreate [ -m 0|1|2 ] - количество зеркал (0 - нет).
-s y/n/g - политика размещения копий strict/non-strict/pvg-strict.

При политике strict проверяется, что все копии на других дисках, чем оригиналы. PVG-strict – в разных группах PV. Если надо сдвинуть РЕ на ходу, то можно воспользоваться командой pvmove.
-d p/s – запись/чтение в РЕ параллельно/последовательно (в порядке PV в VG), при -dp чтение с PV с меньшей длиной очереди.
-М y | -М n -с у | -М n – с n    – политика восстановления синхронизации зеркал.

При работе с зеркалами по умолчанию используется механизм MWC (-М у) Mirror Write Cache (в памяти)/Mirror Record Consistency (на диске в VGRA) 32 позиции, с помощью которого отслеживаются LTG (logical track group по 256k), содержащие информацию, что еще не до копировано.  MWC приоритетно сбрасывается на один из дисков в область MCR (без признака clean/dirty, т.е. при появлении новой LTG, если места в MWC нет, то ожидает). Можно отменить:  -М n -с у/n (восстанавливать/нет после гроха) Mirror Recovery Consistent (на основе того, кто current/ кто stale копирует целиком РЕ). При активизации VG для синхронизации автоматически запускаются демоны /usr/sbin/nomwcsyncd, по одному на каждый LV с атрибутами -М n -с у.

# vgchange -а у -Р <кол демонов nomwcsyncd> (от 0 до 4) VG.
# lvsync LV    - синхронизация зеркал.
# vgsync VG    - синхронизация всех зеркал в VG.
# lvchange     - может изменять политики -s/-M/-c/-p.
# lvextend/lvreduce -m <количество зеркал>    (0 - зеркал нет).
                    - увеличить/уменьшить число зеркал.
# lvsplit [ -s суффикс ] LV - отрезать зеркало, создается LV с суффиксом (если он не указан, то b)
                              Дальше можно сделать online backup, ex.
                   # lvsplit /dev/vg01/lvol1; fsck -F hfs /dev/vg01/rlvolb
                   # mkdir /b; mount /dev/vg01/rlvollb /b; скопировать; umount /b
# lvmerge lvolb lvol    - приклеить к lvol PE из lvolb.
  !!! Остается последний, но проверяется, что lvolb сейчас не используется.
# pvchange -z y/n PV  - использовать диск в LVMv1 как spare (куда ползут зеркала).

Разделяемые VG (MC/ServiceGuard)

# vgchange -а r VG       - только на чтение
# vgchange -с у VG       - для НА кластеров
# vgchange -c y -S y VG  - share VG
# vgchange -a e/s VG     - доступ exclusive/share

Изменение атрибутов у VG, размер LUN, конвертация.

# vgmodify -v -t варианты для LVMv1    с [ -n ] если еще и PEO + перенумерация.
# vgmodify [ -r ] review [ -р #PV ] [ -1 #LV ] [ -e #maxpvs ]
  или -о -v прооптимизировать [ -a ] если без деактивации VG.
В 11iv2 обязательно vgchange -а n перед vgmodify.
Создается в /etc/lvmconf VG.conf.old и каталог VG_restore. Если изменения не
завиксировались, то можно откатиться
# vgmodify -R /etc/lvmconf/VG.conf - если неактивна и VG.conf.old если активна.
# vgmodify -a -S размер   - изменить размер у активной VG, возможно нужно сделать
# pvmove -е #РЕ PV        для того, чтобы в конце освободить место под метаданные.
# vgmodify -а -Е VG       - Поймать    увеличение размера LUN.
# vgmodify -а -С размер VG PV    - Уменьшить PV на LUN, предварительно pvmove -е
vgchange -a n VG; конвертация/обратно; vgchange -а у VG; vgcfgbackup VG.
# vgversion -v -V версия VG      - конвертировать (-r review).
# /etc/lvmconf/vgversion_VG/vgversion_VG_restore    - восстанови.

Замена локального диска в 11i v3 с LVM OLR

# pvchange -a N /dev/disk/disk1    При замене внутреннего из-за WWID.
# scsimgr replace_wwid -D /dev/rdisk/disk1
# ioscan -m lun
Class I Lun H/W Path Driver S/W State H/W Type Health Description
=================================================================
disk 1 64000/0xfa00/0x1 esdisk    NO_HW DEVICE    offline HP
                        /dev/disk/disk1 /dev/rdisk/disk1
disk 9 64000/0xfa00/0x9 esdisk    CLAIMED DEVICE    online HP
       1/1/1/1.0x1.0x1
                        /dev/disk/disk9 /dev/rdisk/disk9
# io_redirect_dsf -d /dev/disk/disk1 -n /dev/disk/disk9
# ioscan -m lun
Class I Lun H/W Path Driver S/W State H/W Type Health Description
=================================================================
disk  1 64000/Oxfa00/0x9 esdisk CLAIMED DEVICE online HP
        1/1/1/1.0x1.0x1
                         /dev/disk/disk1 /dev/rdisk/disk1
# vgcfgrestore -n VG /dev/rdisk/disk1
# pvchange -a y /dev/disk/disk1

pvmove/lvmove/vgmove

# pvmove [ -n LV ] PV [ PV1 ] - сдвинуть все/данный LV на другие PV в VG/PV1.
         [ -p ] preview [ -e число ] сдвинуть последние PE с диска.
         [ -а ] распределить равномерно тома по VG LVMv2 с 10.31.0909
# pvmove PV:номер/диапазон PV1:номер - сдвинуть на PV1 с номера, PV1 м. = PV.
# lvmove -f F LV    - в файле F список дисков, вызывает pvmove.
# pvcreate -f PV3; pvcreate -f PV4    - создать PV.
# vi F                                - создать файл F
PVl PV3                                 с указанием откуда - куда.
PV2 PV4
# vgmove -f F VG    - перенести со старых дисков на новые (с 10.31.0909).

Snapshot LV с LVMv2.2 HPUX 11.31.1003

# vgcreate -U 512    - размер unshared unit в кб 512 ум./1024/2048/4096
# lvcreate -S s LV   - создать полный снап с LV-snap (Fully Allocated)
  [ -t у ] включить в имя время [ -р w ] - разрешить запись [-ml] с зеркалом
  [ -L размер ] - выделить место под Space Efficient при нехватке см. syslog.log
                  можно расширить lvextend, тип в lvdisplay в LV Status
# lvdisplay LV-snap    - Current pre-allocated LE д.б.больше 0
# lvdisplay LV         - Associated snapshots имена snap
# lvremove -f LV-snap  - удалить размонтированный snap
# lvremove -f -F LV-snap3 - удалить вместе с предшественниками (predecessor)

Dynamic Root Disk (DRD)                       man drd/drd-режим

# drd clone -t /dev/disk/diskb [-x overwrite=true] создать клон [перезаписать]
         [ -x mirror_disk=/dev/disk/diskc ]    с зеркалом
!!! Можно скопировать на FC LUN и он будет виден при загрузке
# drd режим -p/-v/-?/-x ?/-qqq/-qq/-q/-v/-v/-vvv
# drd sync -p  - что поменялось без -р докопируй, кроме /tmp /var/tmp
                /var/opt/drd/sync/file s_to_be_copied_by_drd_sync  список
# drd status  - кто основной/активный
# drd runcmd swinstall/swremove/slist/swmodify/swverife/swjob/kctune/view/
             update-ux выполнить команду на клоне
# drd runcmd swinstall -s server:/mydepot Update-UX
# drd runcmd update-ux -s server:/mydepot Update-UX
# drd runcmd view /var/adm/sw/update-ux.log
Есть список патчей, не совместимых с DRD /etc/opt/drd/drd_unsafe_patch_list
     Можно обновить с ftp://ftp.itrc.hop.com/export/DRD/drd_unsafe_patch_list
# drd runcmd kctune параметр=значение
# drd runcmd view /var/adm/kc.log   - вместо команды kclog
# drd mount/umount   - монтируются/размонтируются все ФС в
                     /var/opt/drd/mnts/sysimage_001/ (создайте на него ln -s ... /drd)
# drd activate [ -x reboot=true ]    и перезагрузись
# drd deactivate    - убрать деактивацию

Зеркалирование Root Disk (РА-RISC)

# pvcreate -fB /dev/rdsk/c0t3d0            - зеркало
# vgextend vgOO /dev/dsk/c0t3d0
# mkboot /dev/rdsk/c0t3d0                  - создание BOOT области
# mkboot -a "hpux -lq" /dev/rdsk/c0t3d0    - установка AUTO-файла
# mkboot -a "hpux -lq" /dev/rdsk/c0t6d0    - основной (поднять даже без кворума)
# lifcp /dev/rdsk/c0t3d0:AUTO -            - можно проверить содержимое AUTO
# for i in 1 2 3 4 5 6 7 8; do lvextend -m 1 /dev/vg00/lvol$i; done
Если дисков больше двух, то укажите в lvextend ... /dev/rdsk/c0t3d0
Полезно на всякий случай проделать:
# lvlnboot -R /dev/vg00                    - на всякий случай обновить ссылки
Установить альтернативный PATH:
# setboot                                  - посмотреть стабильную память
# setboot -a <HW адрес диска>              - установить (HW см. ioscan -fnC disk)
Полезно для SD-UX в /stand/bootconf добавить строчку с диском (l - буква):
 l /dev/dsk/c0t3d0
# shutdown -ry 0                           - перезагрузка

Зеркалирование Root Disk (Itanium)    diska/diskb    основной/зеркало

# vi gpt.txt                            - создать файл с размерами разделов
3
EFI 500МВ HPUX 100%
HPSP 400MB
# idisk -wf gpt.txt /dev/rdisk/diskb    - создать GPT
# idisk /dev/rdisk/disk22               - проверить
# diskinfo /dev/rdisk/diskb_p1          - узнать размер раздела
# insf -eC disk                         - пересоздать файлы устройств
# pvcreate -fB /dev/rdisk/diska_p2      - забыли _p2 см. след.упражнение
# vgextend vg00 /dev/disk/diska
# mkboot -e -l /dev/rdisk/diska         - создание в_p1 загрузки
# mkboot -a "boot vmunix -lq" /dev/rdisk/diskb   - установка AUTO-файла
# mkboot -a "boot vmunix -lq" /dev/rdisk/diska    (поднять даже без кворума)
# efi_cp -р /dev/rdisk/diskb_p1 -u /efi/hpux/auto /dev/tty   - проверь
# for i in 1 2 3 4 5 6 7 8; do lvextend -m 1 /dev/vg00/lvol$i; done
С ключем -s в фоне, потом нужен vgsync -Т vg00 или lvsync -Т /dev/vgOO/lvol*

# lvlnboot -R /dev/vg00                 - обновить ссылки
# setboot                               - посмотреть NVRAM (стабильную память)
# setboot -h /dev/disk/diskb            - установить haa адрес
Для SD-UX в /stand/bootconf добавить строчку с диском (l - буква):
l /dev/disk/diskb_p2
# shutdown -ry 0                        - перезагрузка

Затерт системный раздел р1 на Itanium

  После pvcreate /dev/rdisk/diskb        - затерто начало, но не было перезагрузки
# idisk -r /dev/rdisk/diskb (ответ yes)  - восстановить из копии GPT в конце
# mkboot -е -l rdisk/diskb               - создать системный раздел
# lvlnboot -b /dev/vg00/lvoll            - установить ссылку на /stand

Восстановление запорченного зеркала

  (ех, после dd if=/dev/zero of=/dev/rdsk/c0t3d0 bs=1024k count=2)
ISL> hpux -lq -is или HPUX> boot vmunix -lq -is
# vgcfgrestore -n vg00 /dev/rdsk/c0t3d0    - конфигурация LVM
# vgchange -ay /dev/vg00                   - сделать группу активной
# vgsync vg00                              - синхронизировать зеркала
# mkboot /dev/dsk/c0t3d0                   - создать LIF-область
# mkboot -a "hpux -lq" /dev/dsk/c0t3d0     - установить AUTO
# lvlnboot -b /dev/vg00/lvoll              - восстановить указатель на /stand
# lvlnboot -r /dev/vg00/lvol3              - восстановить указатель на /
# lvlnboot -s /dev/vg00/lvol2              - на primary swap
# lvlnboot -d /dev/vg00/lvol2              - на primary dump

Бизнес копия

  После получения копии диска
# vgchgid /dev/rdsk/...                    - изменить VGID
# mkdir/mknod/vgimport VG /dev/rdsk/...    - активировать/скопировать
Для получения точной копии VG с 11iv3
# vgchange -Q rw/w [ -t время ] VG         - приостановить [ на время ] или
# vgchange -R VG                           - продолжить

Принесли системный диск

  (другой адрес диска)    ISL> hpux -lm
# vgexport -s -m /tmp/vgOO.map vg00
# mkdir /dev/vg00; mknod /dev/vg00/group с 64 0
# vgimport -s -m /tmp/vgOO.map vg00; vgchange -a у vg00; mountall
# lvlnboot -r/-b/-s/-d /dev/vg00/...    - установить указатели
# vi /etc/rc.config.d/netconf           - поменять сеть/hostname
# reboot
Если сделать копию dd if=/dev/rdsk/c0tld0 of=/dev/rdsk/c0t2d0 bs=1024k, то
дальше можно его будет вставлять по тому же адресу, но лучше сделать честного близнеца.
Если адрес другой, то не забудьте сделать перед vgimport, vgchgid и не надо ключей -s -m (карта не нужна в vg00 все lvol), а нужен адрес диска.

Чей диск

  Есть куча серверов вокруг RAID-массива
# pvcreate /dev/rdsk/...   - Чья-то группа. Чья?
# mkdir /dev/vg09; mknod /dev/vg09/group с 64 0x090000
# vgimport vg09 /dev/rdsk/...
# vgexport -s -m /tmp/vg09.map vg09    - Получили VGID
  На всех серверах для каждой VG
# vgexport -p -s -m /etc/lvmconf/VG.map VG    - Сравнить, чья

Изменение размера /stand

# vgchange -ay vg00
# lvrmboot -s /dev/vg00; lvrmboot -d lvol2 /dev/vg00;
# lvremove -f /dev/vg00/lvol2       - удалить lvol2
# lvextend -L <размер+добавок> /dev/vg00/lvoll
# lvcreate -L <размер-добавок> -С у -r n -n lvol2 vg00  - Хотя бы 1 LE
# lvlnboot -r/-b/-s/-d /dev/vg00/...                  - установить указатели
# reboot
# umount /stand                                       - после перезагрузки
# extendfs -F hfs /dev/vg00/rlvol1

Изменение MWC политики для swap

Secondary swap можно менять в однопользовательском режиме ISL> hpux -is
Primary swap можно изменить только в maintenance    ISL> hpux -lm
# vgchange -ay vg00          - активизировать группу, если она еще не активна
# lvchange -М -n -с n /dev/vg00/lvol2    - primary swap
Зеркалирование будет, а восстановление синхронности нам не нужно
# lvlnboot -R    - обнови ссылки
# reboot

Создание близнеца ROOT-диска

# pvcreate -В -f /dev/rdsk/c0t3d0
# mkdir /dev/vg04; mknod /dev/vg04/group с 64 0x040000
# vgcreate vg04 /dev/dsk/c0t3d0
# lvcreate -L <размер /dev/vg00/lvol1 или больше> -r n -C y /dev/vg04
# lvcreate -L <размер /dev/vg00/lvol2 можно другой> -r n -C y /dev/vg04
# lvcreate -L <размер /dev/vg00/lvol3 или больше> -r n -C y /dev/vg04
# dd if=/dev/vg00/гlvol1 of=/dev/vg04/rlvol1 bs=1024k
# dd if=/dev/vg00/rlvol3 of=/dev/vg04/rlvol3 bs=1024k
# fsck -F hfs /dev/vg04/rlvol1        - починить fs (stand !!! hfs)
# fsck -F vxfs /dev/vg04/rlvol3       - в зависимости от типа
# mkboot /dev/rdsk/c0t3d0             - создание BOOT области
# mkboot -a "hpux" /dev/rdsk/c0t3d0   - установка AUTO-файла
# lvlnboot -b/-r/-s/-d /dev/vg04/...  - установить указатели
# mkdir /newroot
# mount /dev/vg04/lvol3 /newroot
# vi /newroot/etc/fstab               - поменять номер группы vg00 на vg04
# reboot                              - загрузиться с близнеца
ISL> hpux -is                         - для полного !!! скопировать все LV

HP-UX disk и адресация SAN

1/0/0/2/0        Адрес HBA
1/0/0/2/0.2.0    legacy (унаследованный) SCSI аппаратный адрес
1/0/2/1/0.6.1.0.0.0.1    FC
SAN domain/area/port:                                6.1.0
7-bit номер контроллера, 4-bit target, 3-bit LUN:    0.0.1
Legacy DSF минор содержит 15 бит для идентификации DSF (32,768 путей к LUN)

Agile View (с HP-UX v3)

1/0/2/1/0.0x2.0x0             Agile view SCSI аппаратный адрес (?признак 0x)
1/0/2/1/0.0x64bits.0x64bits   FC Lunpath Hardware Addresses
  64-bit WW Port Name         Адрес порта на дисковом массиве
  target LUNs LUN ID          два бита - способ адресации
                              14 битов - номер LUN ID установленный адм массива
                              48 бит зарезервированы (сейчас 0)
# scsimgr get_attr -a lunid -Н 1/0/2/1/0.0x50001fе15003112с.0x4001000000000000
name = lunid
current =0x4001000000000000 (LUN # 1, Flat Space Addressing)
default =
saved =
   
virtual root node/virtual bus/virtual LUN ID LUN Hardware Path Addresses

        64000/0xfa00/0x4    виртуальный адрес
        1/0/2/1/0.0x50001fel5003112c.0x4001000000000000
        1/0/2/1/0.0x50001fel50031128.0x4001000000000000
Поддерживается карта соответствия WWID и Virtual LUN ID (в /etc/ext_ioconfig),
Instance в классе у ioscan остается неизменным при переконфигурации SAN
Persistent DSFs (PDFS) обеспевают независимый от пути, основанный на WWID DSF 16,777,216 disks, LUNs, лент и DVDs.

# ioscan -kfnN                   N - по новому
Class I H/W Path    Driver    S/W    State   H/W     Type Description
=====================================================================
disk 30 64000/Oxfa00/0x4 esdisk CLAIMED DEVICE HP HSV101
    /dev/disk/disk30 /dev/rdisk/disk30
# ioscan -kfnN /dev/disk/disk30
# ioscan -kfnNH 64000/0xfa00/0x4
# ioscan -kfnNC disk
S/W state - результат привязки software
  CLAIMED      привязано
  UNCLAIMED    нет драйвера
  UNUSABLE     больше неиспользуется из-за непоправимых ошибок
  SUSPENDED    приторможенных из-за OLRAD
  DIFF_HW      изменилось оборудование
  NO_HW        нет оборудования
  ERROR        ошибка
  SCAN         сканируется
# ioscan -m dsf       Посмотреть соответствие новых и обычных адресов
# ioscan -kfNC fc     Посмотреть FC
tgtpath 4 1/0/2/1/0.0x50001fe150031128                      estp
                                   CLAIMED TGT_PATH fibre_channel target
lunpath 4 1/0/2/1/0.0x50001fe150031128.0x0                  eslpt
                                   CLAIMED LUN_PATH LUN path for ctl8
lunpath 8 l/0/2/l/0.0x50001fe150031128.0x4001000000000000   eslpt
                                   CLAIMED LUN_PATH LUN path for disk30
lunpath 9 1/0/2/1/0.0x50001fe150031128.0x4002000000000000   eslpt
                                   CLAIMED LUN_PATH LUN path for disk31

# ioscan -kfnNH HBAaddress                    Что связано с HBA
# ioscan -m hwpath -H 1/0/2/1/0.0x50001fe15003112c.0x4001000000000000
# ioscan -m hwpath -H 1/0/2/1/0.6.1.0.0.0.1
# ioscan -m hwpath -H 64000/0xfa00/0x4
Lun H/W Path       Lunpath H/W Path                Legacy H/W Path
64000/0xfa00/0x4
   1/0/2/1/0.0x50001fel5003112c.0x4001000000000000    1/0/2/1/0.6.1.0.0.0.1
   1/0/2/1/0.0x50001fel50031128.0x4001000000000000    1/0/2/1/0.6.2.0.0.0.1
# scsimgr get_attr -a wwid -H 64000/0xfa00/0x4
name = wwid
current = 0x600508b400012fd20000a00000250000
default =
saved =
# scsimgr get_attr -a lunid -H 1/0/2/1/0.0x50001fel5003112c.0x4001000000000000
name = lunid
current =0x4001000000000000 (LUN # 1, Flat Space Addressing)
default =
saved =
# scsimgr lun_map -D /dev/rdisk/disk30
LUN PATH INFORMATION FOR LUN : /dev/rdisk/disk30
Total number of LUN paths = 4
World Wide Identifier(WWID) = 0x600508b400012fd20000a000002a0000
LUN path : lunpath6
Class = lunpath
Instance = 6
Hardware path =
1/0/2/1/0.0x50001fe15003112c.0x4002000000000000
SCSI transport protocol = fibre_channel
State = UNOPEN
Last Open or Close state = ACTIVE
...

Выбор политики балансировки I/O

round_robin            равномерно по всем активным lunpaths (по ум.)
least_cmd_load         выбор пути с минимальным количество запросов на IO
cl_round_robin         учет nPar, ячеек
closest_path           по кратчайшему пути (тот же core, socket, Front Side Bus (FSB), same cell, cells).
pref erred_jpath       предпочтительный, если он доступен

# scsimgr get_attr -D /dev/rdisk/disk30       Посмотреть
          Установить
# scsimgr set_attr -D /dev/rdisk/disk30 -a load_bal_policy=cl_round_robin
          Установить и сохранить
# scsimgr save_attr -D /dev/rdisk/disk30 -a load_bal_jpolicy=cl_round_robin
          Установить и сохранить по ум.
# scsimgr save_attr default -D /dev/rdisk/disk30 -a load_bal_jpolicy
# sar -L 2 5       Показать статистику no lunpath
# scsimgr get_stat -H 0/2/1/0.0x500508b3009097f9.0x4014000000000000
# ioscan -P health [/dev/disk/disk30]    Состояние здоровья
Отключить путь (-f принудительно) / включить
# scsimgr -f disable -H 1/0/2/1/0.0x50001fe15003112c.0x4001000000000000
# scsimgr enable -H 1/0/2/1/0.0x50001fe15003112c.0x4001000000000000

В довесок предлагаю скачать три замечательных гайда, первый по работе с LVM в HP-UX, второй по диагностике и замене диска в LVM и третий по диагностике и работе со SCSI устройствами.

1. HP-UX System Administrator’s Guide: Logical Volume Management

2. When Good Disks Go Bad: Dealing with Disk Failures Under LVM

3. SCSI Management and Diagnostics utility on HP-UX 11i v3