HP-UX soporta 3 formas de gestionar discos:
- Disco entero
- LVM
- VxVM
La descripción de VxVM están fuera de alcance y merece una entrada aparte en el blog.
Con LVM podemos:
- Agrupar 1 o mas discos y usar ese espacio para generar un LV que exceda el tamaño de un disco
- Ampliar/Reducir el espacio que ocupa un LV, puede que luego necesitemos redimensionar el FS
- Facilita la administración cuando se tienen muchos discos
- Permite hacer mirror por software mediante el producto MirrorUX
- La creación de snapshots para point in time recovery
Volume Group (VG)
Es la estructura que agrupa uno o mas discos (PVs). El espacio disponible se usa para crear los logical volumes
Physical Volume (PV)
Es un disco o LUN inicializado con una cabecera de LVM
Logical Volume (LV)
Se conforman con el espacio disponible de los VGs, luego los LVs contendrán FSs o serán usados como RAW devices.
De forma sencilla el concepto es el siguiente, se agrupan los discos en un VG, el espacio utilizable del VG es
la suma del espacio de cada uno de los discos, de esta forma se elimina la limitante del disco físico. Luego a
partir del espacio libre del VG se generan los LVs
Inicializacion de un PV
Para poder controlar una disco mediante LVM primero se le deben crear una cabecera con estructuras de control mediante el comando pvcreate <caracter device special file>
#pvcreate /dev/rdisk/disk5
Physical volume "/dev/rdisk/disk5" has been successfully created.
Si el disco ya estuvo bajo control de LVM y tiene una cabecera LVM, el comando fallara, para poder reescribir la cabecera para poder reutilizar el disco se debe utilizar el flag -f
Creación de un VG
Cuando creamos un VG, el LVM divide a los discos que lo integran en porciones de igual tamaño llamadas physical extents, estas porciones conforman la mínima unidad de asignación de espacio en disco. Por default el tamaño de los PE es de 4MB. Ahora procedemos con la creación del VG, en este caso vamos a armar un vg con Layout 1.0, para ver como se realiza con layout 2.x hacer click aqui de todas formas aconsejo primero leer los conceptos de esta nota primero.
#mkdir /dev/vg01
#mknod /dev/vg01/group c 64 0x010000
#vgcreate /dev/vg01 /dev/disk/disk5
Volume group "/dev/vg01" has been successfully created.
Volume Group configuration for /dev/vg01 has been saved in /etc/lvmconf/vg01.conf
De esta forma tenemos creado nuestro nuevo vg. Antes de verificar
Para ver el estado del VG y sus características usamos el comando vgdisplay
#vgdisplay vg01
--- Volume groups ---
VG Name /dev/vg01
VG Write Access read/write
VG Status available
Max LV 255
Cur LV 0
Open LV 0
Max PV 16
Cur PV 1
Act PV 1
Max PE per PV 1016
VGDA 2
PE Size (Mbytes) 4
Total PE 499
Alloc PE 0
Free PE 499
Total PVG 0
Total Spare PVs 0
Total Spare PVs in use 0
VG Version 1.0
VG Max Size 65024m
VG Max Extents 16256
Parámetros de un VG
PE Size, es el tamaño del PE, por default de 4MB, se puede especificar con la opción -s del vgcreate.
Max PE per PV, que define la cantidad máxima de PE por disco, si en este caso solo puedo direccionar 4GBs por disco,si quisiera colocar un disco de mayor tamaño debería recrear el VG y especificar un tamaño adecuado de Max PE per PV se especifica con la opción -e del vgcreate.
Max LV, la cantidad máxima de LVs que puede alojar el VG, se especifica con la opción -l del vgcreate.
Max PV, la cantidad máxima de discos que puedo agregar al VG, se especifica con la opción -p del vgcreate.
Para ver el espacio libre que tengo en el VG multiplico el Tamaño del PE por la cantidad de PE libres, en este caso
4*499=1996MB
Creación de un LV
Así como los PV están compuestos de PE, los LV están compuestos de Logical extents (LE). Los LE están asociados a los PE, si el disco no tiene mirror un LE esta asociado a un PE, si tenemos mirroreado el LV un LE esta asociado a 2 PE uno de cada disco.
Para crear un LV corremos el comando lvcreate
#lvcreate -L 100 -n mylv vg01
Logical volume "/dev/vg01/mylv" has been successfully created with
character device "/dev/vg01/rmylv".
Logical volume "/dev/vg01/mylv" has been successfully extended.
Volume Group configuration for /dev/vg01 has been saved in /etc/lvmconf/vg01.conf
Donde -L es el tamaño en MB -n es el nombre del LV, si no se especifica se le asigna automaticamente un nombre y por ultimo se indica cual es el vg en donde se creara el LV
En este caso el tamaño de mi PE es de 16MB y quiero crear un LV de 100MB
#lvcreate -L 100 -n mylv vg01
Warning: rounding up logical volume size to extent boundary at size "112" MB.
Logical volume "/dev/vg01/mylv" has been successfully created with
character device "/dev/vg00/rmylv".
Logical volume "/dev/vg01/mylv" has been successfully extended.
Volume Group configuration for /dev/vg00 has been saved in /etc/lvmconf/vg01.conf
Como 100 no es multiplo de 16, el sistema redondea hacia arriba el tamaño especificado al multiplo de 16 mas cercano
Tambien se puede especificar el tamaño del lv en extents con la opción -l
Para ver el estado del LV y su configuración corremos el comando lvdisplay
#lvdisplay /dev/vg01/mylv
--- Logical volumes ---
LV Name /dev/vg01/mylv
VG Name /dev/vg01
LV Permission read/write
LV Status available/syncd
Mirror copies 0
Consistency Recovery MWC
Schedule parallel
LV Size (Mbytes) 100
Current LE 25
Allocated PE 25
Stripes 0
Stripe Size (Kbytes) 0
Bad block on
Allocation strict
IO Timeout (Seconds) default
Creacion de un FS
#newfs -F vxfs -b 8192 /dev/vg01/rmylv
version 7 layout
102400 sectors, 12800 blocks of size 8192, log size 128 blocks
largefiles supported
Una vez que se le dio formato al logical volume se puede montar el FS.
#mkdir /fs1
#mount /dev/vg01/mylv /fs1
Para verificar puedo correr el comando bdf
#bdf
Filesystem kbytes used avail %used Mounted on
/dev/vg00/lvol3 671744 396864 272848 59% /
/dev/vg00/lvol1 1081344 347656 728032 32% /stand
/dev/vg00/lvol8 4042752 1740360 2288608 43% /var
/dev/vg00/lvol5 4927488 2107168 2798360 43% /usr
/dev/vg00/lvol4 131072 30592 99824 23% /tmp
/dev/vg00/lvol7 5484544 3427176 2041376 63% /opt
/dev/vg00/lvol6 102400 5464 96184 5% /home
/dev/vg01/mylv 102400 2288 99344 2% /fs1
Para hacer persistente este cambio debo editar el archivo /etc/fstab
/dev/vg01/mylv /fs1 vxfs delaylog 0 2
donde el indico el LV que contiene el FS, el tipo de FS, opciones de montaje, campo reservado y el nro de secuencia en el que se hacer el chequeo de consistencia al inicio del equipo.
Con la incorporacion de OnlineJFS se puede redimensionar un FS en linea
Ampliación de un FS
Si es que hay espacio disponible en VG extendemos el tamaño del LV,
Verifico que haya espacio en el VG
#vgdisplay vg01 |egrep -e "PE Size" -e "Free PE"
PE Size (Mbytes) 4
Free PE 474
Vemos que tenemos 1896MB disponibles en el VG. Ahora voy a extender mi LV de 100MBs a 250MBs
#lvextend -L 256 /dev/vg01/mylv
Logical volume "/dev/vg01/mylv" has been successfully extended.
Volume Group configuration for /dev/vg01 has been saved in /etc/lvmconf/vg01.conf
#lvdisplay /dev/vg01/mylv
--- Logical volumes ---
LV Name /dev/vg01/mylv
VG Name /dev/vg01
LV Permission read/write
LV Status available/syncd
Mirror copies 0
Consistency Recovery MWC
Schedule parallel
LV Size (Mbytes) 256
Current LE 64
Allocated PE 64
Stripes 0
Stripe Size (Kbytes) 0
Bad block on
Allocation strict
IO Timeout (Seconds) default
La salida del lvdisplay nos muestra reflejado el cambio en el LV, que pasa si corro un bdf ahora
#bdf /fs1
Filesystem kbytes used avail %used Mounted on
/dev/vg01/mylv 102400 2288 99344 2% /fs1
Vemos que el tamaño del FS no se incremento, para ello debo correr un fsadm
#fsadm -F vxfs -b 262144 /fs1
UX:vxfs fsadm: INFO: V-3-25942: /dev/vg01/rmylv size increased from 102400 sectors to 262144 sectors
El parámetro -F indica el tipo de FS, -b indica en bloques de 1K el nuevo tamaño al cual quiero extender el FS. Para verificar corro nuevamente bdf
#bdf /fs1
Filesystem kbytes used avail %used Mounted on
/dev/vg01/mylv 262144 2288 257840 1% /fs1
Reducir el tamaño de un FS en linea
El procedimiento es similar pero de manera inversa, primero se achica el FS y luego se reduce el LV. Siempre se recomienda tener un backup de los datos del FS antes de reducirlo.
Como ejemplo vamos a reducir el /fs1 a 128MBs
#fsadm -F vxfs -b 131072 /fs1
UX:vxfs fsadm: INFO: V-3-23586: /dev/vg01/rmylv is currently 262144 sectors - size will be reduced
Verificamos el FS con un bdf
#bdf /fs1
Filesystem kbytes used avail %used Mounted on
/dev/vg01/mylv 131072 2288 127792 2% /fs1
Reducimos el LV para recuperar el espacio al VG
#lvreduce -L 128 /dev/vg01/mylv
When a logical volume is reduced useful data might get lost;
do you really want the command to proceed (y/n) : y
Logical volume "/dev/vg01/mylv" has been successfully reduced.
Volume Group configuration for /dev/vg01 has been saved in /etc/lvmconf/vg01.conf
Se puede verificar el estado del lv como se hizo cuando se extendió con un lvdisplay
#lvdisplay /dev/vg01/mylv
--- Logical volumes ---
LV Name /dev/vg01/mylv
VG Name /dev/vg01
LV Permission read/write
LV Status available/syncd
Mirror copies 0
Consistency Recovery MWC
Schedule parallel
LV Size (Mbytes) 128
Current LE 32
Allocated PE 32
Stripes 0
Stripe Size (Kbytes) 0
Bad block on
Allocation strict
IO Timeout (Seconds) default
Ampliacion sin OnlineJFS
Si no se posee OnlineJFS se puede extender un FS pero para ello necesitamos desmontarlo. En principio se extiende el LV como vimos antes, luego desmontamos el FS y por ultimo ejecutamos extendfs.
Ejemplo, extenderemos el /fs1 a 512MB
#lvextend -L 512 /dev/vg01/mylv
Logical volume "/dev/vg01/mylv" has been successfully extended.
Volume Group configuration for /dev/vg01 has been saved in /etc/lvmconf/vg01.conf
#umount /fs1
#extendfs /dev/vg01/rmylv
#mount /fs1
#bdf /fs1
Filesystem kbytes used avail %used Mounted on
/dev/vg01/mylv 524288 2304 517920 0% /fs1
Borrado de un LV
Si no necesitamos mas un LV y queremos recuperar su espacio, podemos removerlo. Primero es una buena norma tomarun backup de los datos que contiene, desmontarlo y luego removerlo.
#mount /fs1
#lvremove /dev/vg01/mylv
The logical volume "/dev/vg01/mylv" is not empty;
do you really want to delete the logical volume (y/n) : y
Logical volume "/dev/vg01/mylv" has been successfully removed.
Volume Group configuration for /dev/vg01 has been saved in /etc/lvmconf/vg01.conf
Borrado de un VG
Cuando no necesitemos mas un VG podemos borrarlo, existen dos maneras:
- vgremove
- vgexport
Con vgexport no es necesario borrar ningún LV del VG y corremos con la ventaja que si nos equivocamos y necesitamos recuperar el VG, solo debemos importarlo nuevamente. Específicamente cuando exportamos un VG preservamos la estructura de LVM de los discos este procedimiento quita la vinculacion de OS con el VG.
Para borrar el VG
Una vez borrados los LV corremos el vgremove
#vgremove vg01
Volume group "vg01" has been successfully removed.
Para exportar el VG
#vgchange -a n vg01
Volume group "vg01" has been successfully changed.
#vgexport vg01
vgexport: Volume group "vg01" has been successfully removed.
Si necesito volver a importar el vg corro lo siguiente
#vgimport vg01 /dev/disk/disk5
vgimport: Volume group "/dev/vg01" has been successfully created.
Warning: A backup of this volume group may not exist on this machine.
Please remember to take a backup using the vgcfgbackup command after activating the volume group.
#vgchange -a y vg01
Activated volume group.
Volume group "vg01" has been successfully changed.
Si el VG tuviera FSs ya se podrían montar y usar.
Extender un VG
Cuando nos estamos quedando sin espacio en un VG podemos extenderlo agregándole otro PV, el comando a utilizar se llama vgextend, los pasos son identificar el nuevo disco, inicializarlo y agregarlo al VG
ioscan -fnNC disk
Class I H/W Path Driver S/W State H/W Type Description
===================================================================
disk 2 64000/0xfa00/0x0 esdisk CLAIMED DEVICE HP Virtual NullDVD
/dev/disk/disk2 /dev/rdisk/disk2
disk 3 64000/0xfa00/0x1 esdisk CLAIMED DEVICE HP Virtual LvDisk
/dev/disk/disk3 /dev/disk/disk3_p2 /dev/rdisk/disk3 /dev/rdisk/disk3_p2
/dev/disk/disk3_p1 /dev/disk/disk3_p3 /dev/rdisk/disk3_p1 /dev/rdisk/disk3_p3
disk 5 64000/0xfa00/0x5 esdisk CLAIMED DEVICE HP Virtual LvDisk
/dev/disk/disk5 /dev/rdisk/disk5
disk 7 64000/0xfa00/0x6 esdisk CLAIMED DEVICE HP Virtual LvDisk
/dev/disk/disk7 /dev/rdisk/disk7
En este caso el disco nuevo es el disk7
#pvcreate /dev/rdisk/disk7
Physical volume "/dev/rdisk/disk7" has been successfully created.
#vgextend vg01 /dev/disk/disk7
Volume group "vg01" has been successfully extended.
Volume Group configuration for /dev/vg01 has been saved in /etc/lvmconf/vg01.conf
Para verificar y chequear el estado del VG corremos un vgdisplay
<root@test2:/dev>vgdisplay vg01
--- Volume groups ---
VG Name /dev/vg01
VG Write Access read/write
VG Status available
Max LV 255
Cur LV 0
Open LV 0
Max PV 16
Cur PV 2
Act PV 2
Max PE per PV 1016
VGDA 4
PE Size (Mbytes) 4
Total PE 998
Alloc PE 0
Free PE 998
Total PVG 0
Total Spare PVs 0
Total Spare PVs in use 0
VG Version 1.0
VG Max Size 65024m
VG Max Extents 16256
Aqui vemos que la tanto la cantidad de discos como el espacio libre ha aumentado.
Algunas cajas de disco pueden extender el tamaño de la LUN, HP-UX 11v3 tiene la capacidad de notar ese cambio y reflejarlo en las estructuras de LVM.
Extension dinamica de una LUN (Dynamic LUN Expansion DLE)
Para esto primero necesitamos que nos agranden la LUN que estamos usando. Luego que nos hayan extendido la LUN corremos un vgmodify de la siguiente forma
vgmodify -a -E /dev/vg01
Buenisisisissisimo, muchas gracias
ResponderEliminarDiego Vargas
Tu articulo me parece muy bueno y explicativo.
ResponderEliminarMe ha sido de gran utilidad, muchas gracias.
Luis Calvo
Excelente aporte, muchas gracias.
ResponderEliminarMuchas Gracias, esta muy util tu articulo
ResponderEliminarQuiero agradecer el trabajo que te diste en confeccionar estos instructivos, para mi son de gran ayuda en mi trabajo, puesto que no estoy tan familiarizado con HP-UX.
ResponderEliminar