9- Extendiendo el tamaño de un disco contenido dentro de un LV

Imagen de Epe

Antes que nada, este procedimiento no es para los débiles de corazón.

Segunda advertencia: antes de hacer este procedimiento no hagas como yo y por el amor de dios saca un respaldo total!

Ahora sí.

Mira, sucede que a veces me piden que extienda un disco de tamaño, los discos de mis clientes yo los monto dentro de LV. Y dentro de este LV pongo sus particiones, dos o tres o las que sean.

El caso último fue precisamente ecualug, ya desde hace unas semanas estaba por extenderle el espacio en disco pues ya estaba al 100% (por eso a veces no respondía).. hasta que por fin hoy ya me molesté pues amaneció down nuevamente ecualug y procedí.

Pondré un ejemplo muy sencillo (no es el caso de ecualug), supondremos que ecualug tiene solamente dos particiones dentro de su LV de la siguiente forma:


Device Boot Start End Blocks Id System
/dev/dsk/ecualug1 1 570 4578493+ 83 Linux
/dev/dsk/ecualug2 571 587 136552+ 82 Linux swap / Solaris

Fíjate, tiene como 4GB en la primera partición. y unos 128MB en la segunda, la segunda es de SWAP.

El LV se llama /dev/dsk/ecualug y es el que debo redimensionar.

Le agregaré 10GB aproximadamente.

Aqui va el paso a paso:

1- Apago la máquina virtual (cos02 se llama en mi caso)

xm shutdown cos02

No trabajes con la máquina encendida o jodes todo!

2- Una vez esté apagada, relájate que cualquier error de aqui en adelante es mortal.

3- procedo a revisar la partición 1 (y en tu caso cualquier partición ext3 que tengas)

kpartx -a /dev/dsk/ecualug
fsck -f /dev/mapper/ecualug1
kpartx -d /dev/dsk/ecualug

Si todo se revisa feliz y correctamente entonces proceder con el siguiente paso:

4- Voy a eliminar la partición numero 2 (que es swap y en mi caso me da igual, quiero eliminarla y después crearla). El objetivo es para después tener espacio para redimensionar la partición 1.


fdisk /dev/dsk/ecualug

Command (m for help): p

Disk /dev/dsk/ecualug: 4831 MB, 4831838208 bytes
255 heads, 63 sectors/track, 587 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/dsk/ecualug1 1 570 4578493+ 83 Linux
/dev/dsk/ecualug2 571 587 136552+ 82 Linux swap / Solaris

Command (m for help): d
Partition number (1-4): 2

Command (m for help): w
The partition table has been altered!

[root@xen2 ~]# partprobe

te resumo: eliminé la partición 2, grabé (con w) y procedí a partprobe para que retomara el cambio.

5- Voy a extender el LV:

lvextend -L+10G /dev/dsk/ecualug

6- Una vez extendido procedo a entrar nuevamente al fdisk para borrar la partición 1 y crearla nuevamente comenzando por el mismo cilindro, pero esta vez más grande!:

[root@xen2 ~]# fdisk /dev/dsk/ecualug

The number of cylinders for this disk is set to 1892.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p

Disk /dev/dsk/ecualug: 15.5 GB, 15569256448 bytes
255 heads, 63 sectors/track, 1892 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/dsk/ecualug1 1 570 4578493+ 83 Linux

Command (m for help): d
Selected partition 1

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1892, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1892, default 1892): 1750

Command (m for help): p

Disk /dev/dsk/ecualug: 15.5 GB, 15569256448 bytes
255 heads, 63 sectors/track, 1892 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/dsk/ecualug1 1 1750 14056843+ 83 Linux

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (1751-1892, default 1751):
Using default value 1751
Last cylinder or +size or +sizeM or +sizeK (1751-1892, default 1892):
Using default value 1892

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 82
Changed system type of partition 2 to 82 (Linux swap / Solaris)

Command (m for help): p

Disk /dev/dsk/ecualug: 15.5 GB, 15569256448 bytes
255 heads, 63 sectors/track, 1892 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/dsk/ecualug1 1 1750 14056843+ 83 Linux
/dev/dsk/ecualug2 1751 1892 1140615 82 Linux swap / Solaris

Command (m for help): w
The partition table has been altered!

Fíjate, antes acababa en el cilindro 570, entonces borré la primera partición, y la creé comenzando en el mismo cilindro que antes (1) pero esta vez le puse más cilindros (1750). Aproveché y creé una segunda partición para swap que cubriera hasta el final de los cilindros.

7- Ahora procederé a hacer un resize2fs a la partición 1, para que ocupe el sistema de archivos su nuevo tamaño pues al momento la partición es más grande que el sistema de archivos:

[root@xen2 ~]# kpartx -a /dev/dsk/ecualug
[root@xen2 ~]# resize2fs /dev/mapper/ecualug1
resize2fs 1.39 (29-May-2006)
Resizing the filesystem on /dev/mapper/ecualug1 to 3514210 (4k) blocks.
The filesystem on /dev/mapper/ecualug1 is now 3514210 blocks long.

[root@xen2 ~]# mkswap /dev/mapper/ecualug2
Setting up swapspace version 1, size = 1167982 kB
[root@xen2 ~]# kpartx -d /dev/dsk/ecualug

Ah sí, de paso creé una swap en la segunda partición.

y listo, ahora sí, arranca la máquina que te debe funcionar si respetastes todos los pasos.

Te resumo:
El redimensionamiento se puede dar en particiones que queden al final del disco. De forma tal que se pueda extender el disco (lvextend) y después borrar esa ultima partición y crearla del nuevo valor pero siempre partiendo del mismo cilindro.No se te ocurra redimensionar una partición partiendo desde un cilindro diferente al que tenía antes!!!! Esto es lo primordial.

En mi caso la partición a redimensionar estaba delante de otra (swap), pero como la swap se puede borrar y crear de nuevo, lo que hice fue precisamente esto, la borré, de forma tal que me quedé con la partición a redimensionar al final (pues quedaba sólo una). Después que la redimensioné procedí a crear la swap nuevamente al final.

Si quieres que te ayude redimensionando particiones, con sumo gu$to...

Comentarios

sí, estaba escaso de disco

Imagen de Epe

sí, estaba escaso de disco desde hacia tiempo y realmente de tanto trabajo no había podido incrementarle el disco.

sí, ecualug está en un domU de un servidor Xen

Saludos
epe

EcuaLinux.com

+(593) 9 9924 6504

Servicios en Software Libre