Mostrando entradas con la etiqueta Discos. Mostrar todas las entradas
Mostrando entradas con la etiqueta Discos. Mostrar todas las entradas

sábado, 1 de septiembre de 2018

Ampliar LVM sobre disco virtual (libvirtd) sin GPARTED

Hola! Esta es mi receta para dar de alta discos sin gparted

Espero que os sea de utilidad!

1) Parar servidor y añadir un disco nuevo. Arrancar servidor de nuevo

2) formatearlo (fdisk), añadir partición nueva y darle el formato de "Linux LVM" (8e). Escribir los
cambios en la tabla (w) y salir

root@Server:~# fdisk /dev/sdb
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2610, default 1): "enter"
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): "enter"
Using default value 2610
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
root@Server:~# 

3) Hacer del nuevo disco un volumen físico (VP)

root@Server:~# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created

4) 'Extender' el volume group (VG) que ya existe (en este caso se llama Mega) añadiéndole el
nuevo disco

root@Server:~# vgextend Mega /dev/sdb1
Volume group "Mega" successfully extended

Para saber cómo se llama el volumen a extender, podéis ejecutar vgdisplay, que muestra todos
los volúmenes definidos
Con pvscan podréis comprobar que el nuevo disco forma parte del volumen al que lo habéis
añadido:

root@Server:~# pvscan
PV /dev/sda5 VG Mega lvm2 [19.76 GiB / 0 free]
PV /dev/sdb1 VG Mega lvm2 [19.99 GiB / 19.99 GiB free]
Total: 2 [39.75 GiB] / in use: 2 [39.75 GiB] / in no VG: 0 [0 ]


5) Vamos ahora a ampliar el espacio del disco propiamente dicho; el disco en realidad es un LV
(volumen lógico)

root@Server:~# lvextend /dev/Mega/root /dev/sdb1
Extending logical volume root to 38.90 GiB
Logical volume root successfully resized

y por último, reformateamos el sistema de archivos para que se adapte al nuevo disco:

root@Server:~# resize2fs /dev/Mega/root
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/Mega/root is mounted on /; on-line resizing required
old desc_blocks = 2, new_desc_blocks = 3
Performing an on-line resize of /dev/Mega/root to 10196992 (4k) blocks.
The filesystem on /dev/Mega/root is now 10196992 blocks long.


viernes, 8 de junio de 2018

Reducción de discos virtuales con LVM con libvirtd y qemu

Antes de nada, este procedimiento es aplicable a servidores virtualizados con libvirt y que utilizan qemu como KVM. Yo lo he ejecutado sobre RHEL6.x, RHEL7.x y Debian8.x. Se trata de un caso concreto, tal y como se hizo.

ANTES DE EMPEZAR, PARA LA MÁQUINA Y HAZ UN BACKUP DE DISCO


Arranca la máquina y para servicios críticos. La información que necesitas tener MUY clara es
  • el directorio que voy a reducir y qué volumen lógico es (LV)
  • a qué grupo de volúmenes pertenece (VG)
  • a qué volumen físico pertenece (PV)
y con toda esta información, puedo ver qué LV/VG/PVs voy a redimensionar. Si no estás familiarizado con el sistema LVM de Linux, por favor, pídele a otra persona que ejecute este proceso.

La estructura del LVM de este servidor es:
    [root@server ~]# pvs
         PV VG Fmt Attr PSize PFree
         /dev/vda3 vgsys lvm2 a-- 29,25g 11,50g
         /dev/vda5 vgdata lvm2 a-- 200,00g 12,00g

    [root@server ~]# vgs
         VG #PV #LV #SN Attr VSize VFree
         vgdata 1 3 0 wz--n- 200,00g 12,00g
         vgsys 1 3 0 wz--n- 29,25g 11,50g

    [root@server ~]# lvs
         LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
         lv_home vgdata -wi-ao-- 4,00g
         lv_ihs vgdata -wi-ao-- 180,00g
         lv_opt vgdata -wi-ao-- 4,00g
         lv_root vgsys -wi-ao-- 11,75g
         lv_tmp vgsys -wi-ao-- 1,00g
         lv_var vgsys -wi-ao-- 5,00g
En este ejemplo, el directorio /ihs se definió muy grande pero ya no se usa tanto espacio, así que tenemos que reducirlo. Los pasos que vamos a dar son los siguientes:
  • detectar qué LV hay que reducir → ya lo hemos hecho, el lv_ihs
  • detectar en qué VG y PV está alojado → son el vgdata y el /dev/vda5
  • hacer un backup de todos los LVs alojados en el VG afectado
  • eliminar los LVs, el VG y el PV
  • redefinir a nivel de disco las particiones
  • recortar el espacio del disco que ya no se va a utilizar y redimensionar el archivo
  • montar de nuevo el PV, el VG y los LVs
  • volcar el backup
Ahora sí, vamos por partes
Haz una copia del disco. Para la máquina y cópiala con otro nombre

Una vez arranques la máquina de nuevo, para servicios que puedan estar trabajando con los directorios que estén sobre los LVs con los que vamos a trabajar.
Para ver si hay algo en uso (librerías, archivos, lo que sea) yo utilizo el comando lsof de esta manera:

> lsof -l | grep “/ihs”
> lsof -l | grep “/opt”
> lsof -l | grep “/home”

Si alguno de estos comandos te devuelve algo, es porque hay algún archivo en uso y es probable que no hayas parado el servicio.
Lanzo los backups; puedo hacer un tgz o un dd; voy a probar con tgz


> tar -czvf /mnt/server/opt.tgz /opt
> tar -czvf /mnt/server/ihs.tgz /ihs
> tar -czvf /mnt/server/home.tgz /home

Después voy a desmontar los LVs y los elimino; aprovecho y comento las unidades en /etc/fstab para que cuando reinicie no tenga problemas

> umount /opt
> umount /ihs
> umount /home
> lvremove /dev/mapper/vgdata-lv_opt
> lvremove /dev/mapper/vgdata-lv_home
> lvremove /dev/mapper/vgdata-lv_ihs
> vi /etc/fstab → y comento las unidades desmontadas

Voy a desactivar el VG y lo elimino

> vgchange -a n vgdata
> vgremove vgdata

Y ahora elimino el disco vda5 del PV, que es el que contiene el VG que acabo de eliminar

> pvremove /dev/vda5

Antes de parar el servidor, doy de baja la partición desde fdisk

> fdisk /dev/vda

Dentro del fdisk con la p veo todas las particiones cómo están definidas. Las tareas que YO tengo que hacer son (es probable que TÚ tengas otras, dependerá de cómo se particionó el disco en su momento)
  • eliminar la partición extendida vda5
  • eliminar la partición primaria vda4
  • añadir una nueva partición vda4 del tamaño que corresponda (1)
  • indicar que el formato de la nueva partición vda4 es LVM
(1) El tamaño va a depender del tamaño que le vaya a dar a los nuevos LV; en mi caso, a /opt le damos 4GB, a /home le damos otros 4GB y a /ihs le damos 20GB, que hacen 28GB. Para no pillarme los dedos, voy a definir una partición de 30GB. El tamaño que le voy a dar a la unidad lo hago cuando la creo, y le asigno el tamaño con un +30G

Una vez he guardado los cambios en del fdisk, paro la máquina y redimensiono los discos. Recuerda que tienes que tener espacio para hacerlo; al menos vas a necesitar el mismo espacio que el que ocupa ahora el archivo del disco, como si lo fueras a duplicar.

> qemu-img convert Server.img -O raw Server.raw

de qcow2 a raw, porque en formato qcow2 no se pueden hacer resizes

> qemu-img resize Server.raw 50G → Cambio el tamaño del disco
> qemu-img convert Server.raw -O qcow2 Server.img → Convierto de raw a qcow2. Cuidado en este paso, si lo ejecutas así borrarás el disco original. Apunta a un fichero con otro nombre o en otro directorio

Arranca la máquina de nuevo (2) y empieza a montar de nuevo la estructura.
Creo el nuevo PV

> pvscan
> pvcreate /dev/vda4

Creo el nuevo VG

> vgcreate vgdata /dev/vda4

Creo los LVs y los formateo (3)

> lvcreate --size 4G -n lv_opt vgdata
> lvcreate --size 4G -n lv_home vgdata
> lvcreate --size 20G -n lv_ihs vgdata
> mkfs.ext4 /dev/vgdata/lv_opt
> mkfs.ext4 /dev/vgdata/lv_home
> mkfs.ext4 /dev/vgdata/lv_ihs

Descomento el /etc/fstab y monto las unidades

> mount -a


Por último restauro el contenido de las carpetas, muevo el contenido de los backups y los vuelco. Después reinicio el servidor y compruebo que los servicios arrancan correctamente

(2) Llegado a este punto, si no has comentado las unidades en el /etc/fstab cuando hemos eliminado los LVs, ahora la máquina no te va a arrancar. No te preocupes, el problema es que no encuentra las unidades para montarlas; podemos solucionarlo, aunque es un poco lento.

Para solucionarlo arranca con un LiveCD (Knoppix, por ejemplo) y vamos a comentar esas unidades en el /etc/fstab. Una vez arranque, hay que activar el soporte de LVM en Knoppix, así que abre una consola y ejecuta:

> sudo su -
> vgscan --mknodes
> vgchange -ay
> lvscan
> mount /dev/vgsys/lv_root /mnt/
> vi /mnt/etc/fstab

y comenta ahora las unidades. Guarda al salir y reinicia, ya deberías poder entrar en el SO.

(3) Si al crear una nueva partición para vgdata no pueda, prueba a arrancar con una distro Gparted y crea la partición sin problemas.

lunes, 28 de septiembre de 2015

Subvolúmenes (bricks) no montan en volúmenes gluster

Para ver el estado de un volumen gluster, hago:

[root@gest ~]# gluster volume status drupriv
Status of volume: drupriv
Gluster process Port Online Pid
------------------------------------------------------------------------------
Brick 172.17.229.77:/mnt/gluster/data 49152 Y 5270
Brick 172.17.230.164:/mnt/gluster/data 49152 Y 28083
Brick 172.17.229.250:/mnt/gluster/data 49152 Y 16775
NFS Server on localhost 2049 Y 5282
Self-heal Daemon on localhost N/A Y 5295
NFS Server on 172.17.229.124 2049 Y 2287
Self-heal Daemon on 172.17.229.124 N/A Y 2292
NFS Server on 172.17.229.113 2049 Y 2327
Self-heal Daemon on 172.17.229.113 N/A Y 2332
NFS Server on 172.17.229.250 2049 Y 16788
Self-heal Daemon on 172.17.229.250 N/A Y 16796
NFS Server on 172.17.230.164 2049 Y 28096
Self-heal Daemon on 172.17.230.164 N/A Y 28104
Task Status of Volume drupriv
------------------------------------------------------------------------------
There are no active volume tasks

y lo que obtengo es:

- por un lado el estado de los bricks que forman el volumen:


Brick 172.17.229.77:/mnt/gluster/data 49152 Y 5270
Brick 172.17.230.164:/mnt/gluster/data 49152 Y 28083
Brick 172.17.229.250:/mnt/gluster/data 49152 Y 16775

- por otro lado, los servidores que están montando ese volumen (por NFS en este caso)


NFS Server on localhost 2049 Y 5282
Self-heal Daemon on localhost N/A Y 5295
NFS Server on 172.17.229.124 2049 Y 2287
Self-heal Daemon on 172.17.229.124 N/A Y 2292
NFS Server on 172.17.229.113 2049 Y 2327
Self-heal Daemon on 172.17.229.113 N/A Y 2332
NFS Server on 172.17.229.250 2049 Y 16788
Self-heal Daemon on 172.17.229.250 N/A Y 16796
NFS Server on 172.17.230.164 2049 Y 28096
Self-heal Daemon on 172.17.230.164 N/A Y 28104

En el caso de que algún subvolumen no esté online (esto es cuando en lugar de una Y
tenemos una N), podemos levantarlo de la siguiente manera (se hacen todos a la vez, no
por partes)


gluster volume start drupriv

y si falla o no los levanta, podemos llegar a forzarlos:


gluster volume start drupriv force

Una vez forzado, comprueba que se han montado todas las unidades, remonta los glusters
y debería verse todo con normalidad

martes, 21 de julio de 2015

Píldora: montar / en un freebsd que no arranca por un problema en (otro) disco

Si un día un servidor FreeBSD no os levanta porque tiene algún problema con un disco, este es el procedimiento para montar el disco / y arreglar lo que sea necesario (como por ejemplo, editar el /etc/fstab y comentar el disco que da problemas)

(una vez entráis en la shell)


fsck -y
mount -u /
mount -a -t ufs
swapon -a


Por descontado, esto no sirve si el disco con problemas es el root ("/")

miércoles, 29 de febrero de 2012

Errores en disco en Solaris

Hoy voy a postear un par detruquillos fáciles de recordar y que vale la pena tenerlo a mano cuando buscas errores en los discos de Solaris (yo lo utilizo bajo ZFS, es posible que bajo otros formatos funcionen algunos de ellos). Ahí van!

format
nos devuelve todos los discos (o LUNs) disponibles en el servidor. Para salir, hay que acceder a alguno de los discos y hacer 'quit' desde ahí.

Server # format
Searching for disks...done


AVAILABLE DISK SELECTIONS:
       0. c0t0d0
          /pci@0,600000/pci@0/pci@0/scsi@0/sd@0,0
       1. c0t1d0
          /pci@0,600000/pci@0/pci@0/scsi@0/sd@1,0
       2. c3t600601606FC01D00DC76C8F975B6DF11d0
          /scsi_vhci/ssd@g600601606fc01d00dc76c8f975b6df11
       3. c3t600601606FC01D00E0B37FE672B6DF11d0
          /scsi_vhci/ssd@g600601606fc01d00e0b37fe672b6df11
       4. c3t600601606FC01D00E4F142FA72B6DF11d0
          /scsi_vhci/ssd@g600601606fc01d00e4f142fa72b6df11
       5. c3t600601606FC01D0098A820F372B6DF11d0
          /scsi_vhci/ssd@g600601606fc01d0098a820f372b6df11
Specify disk (enter its number): 5
selecting c3t600601606FC01D0098A820F372B6DF11d0
[disk formatted]


FORMAT MENU:
        disk       - select a disk
        type       - select (define) a disk type
        partition  - select (define) a partition table
        current    - describe the current disk
        format     - format and analyze the disk
        repair     - repair a defective sector
        label      - write label to the disk
        analyze    - surface analysis
        defect     - defect list management
        backup     - search for backup labels
        verify     - read and display labels
        save       - save new disk/partition definitions
        inquiry    - show vendor, product and revision
        volname    - set 8-character volume name
        !     - execute , then return
        quit
format
> quit
Server #



iostat -En
nos devuelve datos y estadísticas de error de los discos y LUNs del servidor (nombre, tamaño, errores, tipo de errores, etc)


Server # iostat -En
c0t1d0           Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: FUJITSU  Product: MBD2147RC        Revision: 3701 Serial No:
Size: 146.81GB <146810536448 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 0 Predictive Failure Analysis: 0
c0t0d0           Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: FUJITSU  Product: MBD2147RC        Revision: 3702 Serial No:
Size: 146.81GB <146810536448 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 0 Predictive Failure Analysis: 0
c0t4d0           Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: MATSHITA Product: DVD-RAM UJ875AS  Revision: 1.00 Serial No:
Size: 0.00GB <0 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 2 Predictive Failure Analysis: 0
c3t600601606FC01D00E4F142FA72B6DF11d0 Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: DGC      Product: RAID 5           Revision: 0224 Serial No:
Size: 214.75GB <214748364800 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 1 Predictive Failure Analysis: 0
c3t600601606FC01D0098A820F372B6DF11d0 Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: DGC      Product: RAID 5           Revision: 0224 Serial No:
Size: 214.75GB <214748364800 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 1 Predictive Failure Analysis: 0
c3t600601606FC01D00E0B37FE672B6DF11d0 Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: DGC      Product: RAID 5           Revision: 0224 Serial No:
Size: 107.37GB <107374182400 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 1 Predictive Failure Analysis: 0
c3t600601606FC01D00DC76C8F975B6DF11d0 Soft Errors: 0 Hard Errors: 1 Transport Errors: 0
Vendor: DGC      Product: RAID 5           Revision: 0224 Serial No:
Size: 107.37GB <107374182400 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 1 Recoverable: 0
Illegal Request: 1 Predictive Failure Analysis: 0



zpool iostat -v DISCO
donde DISCO es el pool en el que está montado nos devuelve información de cómo está montado ese recurso. Puede ser un mirror o que esté montado sobre una LUN; en cualquier caso te devuelve la información sobre el recurso.


Server # zpool iostat -v root
                 capacity     operations    bandwidth
pool           used  avail   read  write   read  write
------------  -----  -----  -----  -----  -----  -----
root          67,5G  68,5G      1      5   177K   174K
  mirror      67,5G  68,5G      1      5   177K   174K
    c0t0d0s0      -      -      0      3  89,5K   174K
    c0t1d0s0      -      -      0      3  89,6K   174K
------------  -----  -----  -----  -----  -----  -----

Server # zpool iostat -v flashbackpool
                                           capacity     operations    bandwidth
pool                                     used  avail   read  write   read  write
--------------------------------------  -----  -----  -----  -----  -----  -----
flashbackpool                           27,5G   172G      1      3   199K   136K
  c3t600601606FC01D00E4F142FA72B6DF11d0  27,5G   172G      1      3   199K   136K
--------------------------------------  -----  -----  -----  -----  -----  -----

Server # 
Server #