Tenemos un CentOS 5 por necesidades técnicas y tenemos instalado KVM. Queremos que KVM aloje los discos virtuales en volúmenes LVM en vez de guardarlo en imágenes de disco estándar (típicamente alojadas en el /var) por motivos técnicos y de pasada por temas de performance.
Hemos instalado el Gnome Desktop y una serie de utilidades, entre ellas claro el propio kvm y el virt-manager. La parte de añadir el storage pool al kvm la hago por GUI por pereza pero evidentemente, se puede añadir vía comandos. Es que voy con prisa, como siempre!
Listamos los discos disponibles. En este escenario tenemos dos discos físicos /dev/sda para / y /dev/sdb con 1.6 TB para almacenar discos de máquinas virtuales KVM
# fdisk -l /dev/{s,h}d? 2> /dev/null | grep '^Disk /dev.*' Disk /dev/sda: 107.3 GB, 107363696640 bytes Disk /dev/sdb: 1892.6 GB, 1892667097088 bytes
Preparamos una partición /dev/sdb1 en sistema LVM
Using the whole secondary hard disk for LVM partition: fdisk /dev/sdb1 At the Linux fdisk command prompt, press n to create a new disk partition, press p to create a primary disk partition, press 1 to denote it as 1st disk partition, press ENTER twice to accept the default of 1st and last cylinder – to convert the whole secondary hard disk to a single disk partition, press t (will automatically select the only partition – partition 1) to change the default Linux partition type (0×83) to LVM partition type (0x8e), press L to list all the currently supported partition type, press 8e (as per the L listing) to change partition 1 to 8e, i.e. Linux LVM partition type, press p to display the secondary hard disk partition setup. Please take note that the first partition is denoted as /dev/sdb1 in Linux, press w to write the partition table and exit fdisk upon completion.
Escaneamos en busca de volúmenes físicos en LVM
# pvs
Nothing, ok, vamos bien. Sigamos, vamos a crear ahora un volumen físico LVM
# pvcreate /dev/sdb1 Writing physical volume data to disk "/dev/sdb1" Physical volume "/dev/sdb1" successfully created
Listamos ahora nuestros volumenes físicos y encontramos el que acabamos de crear
# pvs PV VG Fmt Attr PSize PFree /dev/sdb1 lvm2 a-- 1.72T 1.72T
Con pvscan o pvdisplay veremos más datos
# pvscan PV /dev/sdb1 lvm2 [1.72 TB] Total: 1 [1.72 TB] / in use: 0 [0 ] / in no VG: 1 [1.72 TB] # pvdisplay "/dev/sdb1" is a new physical volume of "1.72 TB" --- NEW Physical volume --- PV Name /dev/sdb1 VG Name PV Size 1.72 TB Allocatable NO PE Size (KByte) 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID qhH09b-LpZh-Ijbd-n8UT-qdZt-d8Iv-sHK2ZD
Ahora crearemos un grupo de volumen, que es una colección de uno o más discos físicos y contiene uno o más volumenes lógicos creados en esos discos. Un volumen lógico es simplemente una colección de espacio alojado que pertenece a un grupo de volumen padre y contendrá las particiones para a su vez contener los datos
En este caso, sólo tenemos /dev/sdb1 para alojar grupos de volumenes, por tanto ejectuaremos
# vgcreate -s 16M lvmvol /dev/sdb1 Volume group "lvmvol" successfully created
donde lvmvol es el nombre de nuestro grupo de volumenes
donde -s 16M es el physical exten size, más info aquí
Ahora, de la misma forma que listamos discos físicos listamos los volumenes con vgs
# vgs VG #PV #LV #SN Attr VSize VFree lvmvol 1 0 0 wz--n- 1.72T 1.72T
con vgscan o vgdisplay tendremos más información al respecto
# vgscan Reading all physical volumes. This may take a while... Found volume group "lvmvol" using metadata type lvm2 # vgdisplay --- Volume group --- VG Name lvmvol System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 1.72 TB PE Size 16.00 MB Total PE 112811 Alloc PE / Size 0 / 0 Free PE / Size 112811 / 1.72 TB VG UUID qOf619-1CQy-9D7n-KejA-xCut-1BiL-yQhYOu
En este punto, tenemos un volumen lógico llamado “lvmvol”. Este volumen va a ser el que utilicemos para alojar los discos duros de las máquinas virtuales KVM. Para ello, vamos a conectarnos via GUI de nuestro CentOS 5 y arrancar la interfaz gráfica del virt-manager, llamado Virtual Machine Manager.
Para añadir nuestro volumen, seguimos estos pasos, hay que hacerlo como se dice:
En este punto, tenemos nuestro Storage Pool configurado con un espacio de 1.7TB montado sobre LVM, y será el espacio por defecto donde deberemos alojar los discos virtuales de nuestras máquinas virtuales.
http://vitobotta.com/setting-up-kvm-lvm-virtual-machine-host/
http://www.walkernews.net/2007/07/02/how-to-create-linux-lvm-in-3-minutes/
http://www.walkernews.net/2007/07/02/maximum-size-of-a-logical-volume-in-lvm/
Actualización:
Al parece desde el virt-manager GUI versión 0.6 no es posible alojar el disco duro de la máquina virtual en el storage pool LVM como nos gustaría. Lo haremos a mano:
# lvcreate -L 300G -n vol001 lvmvol Logical volume "vol001" created
Entonces iniciaríamos el virt-manager y configuraríamos nuestro storage para nuestra virtual como /dev/mapper/vol0001. Si seguimos esto, al crear la máquina virtual y hacer fdisk veremos un dispositivo “físico” /dev/sda
Problemas
“Can’t remove open logical volume”
Listamos volúmenes
# vgscan Found volume group "vg0" using metadata type lvm2
Comprobamos su estado
# dmsetup info -c /dev/mapper/vg0-lvol0 Name Maj Min Stat Open Targ Event UUID vg0-lvol0 253 0 L--w 1 1 0 LVM-5WLB1qNCoeeIee6AGTb3mMl5U1Q0BH72qLuuTzL0KykfN0KnNftHPpRbMTtKXLqz
Vemos que en el tag Open marca como 1, es decir, sigue abierto. Por eso no podemos ejecutar aún el vgremove. Tenemos que cerrar esté volumen lógico de la tabla dmsetup para entonces proceder a borrarlo con vgremove.
# dmsetup remove /dev/mapper/vg0-lvol0 device-mapper: remove ioctl failed: Device or resource busy Command failed
Uops! esto si que no lo esperabamos. Vamos a probar algo más. Creamos un script con un bucle para eliminar estas entradas
# cat script while [ $? -eq "5" ]; do lvremove -f /dev/vg0/lvol0 ; done
Damos permiso al script y ejecutamos. Volvemos a probar el comando:
# vgremove vg0 Do you really want to remove volume group "vg0" containing 1 logical volumes? [y/n]: y Do you really want to remove active logical volume lvol0? [y/n]: y Logical volume "lvol0" successfully removed Volume group "vg0" successfully removed
El volumen lógico fue eliminado correctamente.
http://geekinlinux.blogspot.com.es/2011/11/cant-remove-open-logical-volume.html
http://stackoverflow.com/questions/7104762/cant-remove-open-logical-volume
http://tekvi.blogspot.com.es/2012/02/lvremove-cant-remove-open-logical.html
Pingback: CentOS – ethernet modo brigde