Давным давно проходил курсы по администрированию 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
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