miércoles, 8 de mayo de 2013

Trabajando con disco (III)

Vamos a ver como trabajar con LVM (Logical Volume Manager).

Un documento fundamental para entender su funcionamiento y de consulta habitual es el siguiente HOWTO. Hace tiempo que no se actualiza pero los ejemplos prácticos son los mismos. El documento desaconsejan LVM para la partición de root, pero hoy en día prácticamente cualquier sistema usa LVM para root. El principal problema que existía antes era la recuperación de un sistema con root encapsulado, hoy cualquier disco de rescate, puede importar y montar este tipo de volúmenes, recuperándose el sistema sin problemas.

El funcionamiento es el siguiente; los disco o particiones física se agregan a grupos de volúmenes, en estos grupos de volúmenes, se crean volúmenes donde ya se pueden crear particiones lógica y se pueden formatear y montar como filesystems.

En este esquema se ve más claro.

Las principales ventajas que se observan comparándolo con el modelo clásico es que con unos cuantos comandos puedes retirar un disco físico del grupo de discos y sustituirlo por otro. Otra gran ventaja es la ampliación de FS en caliente. También existe la posibilidad de clonar Volumenes o hacer Snapshots de los mismos.

Para el uso de LVM no es necesario instalar nuevos módulos desde hace tiempo esta soportado por el kernel básico de Linux.

Vamos ha hacer un par de ejemplos.  Primero de todo crearemos una partición en /dev/sda de 200M y del tipo LVM (8e), lo haremos con nuestro amigo fdisk.

[root@gamma ~]# fdisk /dev/sda

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): p

Disk /dev/sda: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x08e3a6bd

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          50      401593+  82  Linux swap / Solaris

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (51-130, default 51):
Using default value 51
Last cylinder, +cylinders or +size{K,M,G} (51-130, default 130): +200M

Command (m for help): p

Disk /dev/sda: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x08e3a6bd

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          50      401593+  82  Linux swap / Solaris
/dev/sda2              51          76      208845   83  Linux

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): L

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris       
 1  FAT12           39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      41  PPC PReP Boot   85  Linux extended  c7  Syrinx        
 5  Extended        42  SFS             86  NTFS volume set da  Non-FS data   
 6  FAT16           4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS       4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility  
 8  AIX             4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt        
 9  AIX bootable    50  OnTrack DM      93  Amoeba          e1  DOS access    
 a  OS/2 Boot Manag 51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O       
 b  W95 FAT32       52  CP/M            9f  BSD/OS          e4  SpeedStor     
 c  W95 FAT32 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs       
 e  W95 FAT16 (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  GPT           
 f  W95 Ext'd (LBA) 55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor     
12  Compaq diagnost 61  SpeedStor       a9  NetBSD          f4  SpeedStor     
14  Hidden FAT16 <3 63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary 
16  Hidden FAT16    64  Novell Netware  af  HFS / HFS+      fb  VMware VMFS   
17  Hidden HPFS/NTF 65  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE
18  AST SmartSleep  70  DiskSecure Mult b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 75  PC/IX           bb  Boot Wizard hid fe  LANstep       
1c  Hidden W95 FAT3 80  Old Minix       be  Solaris boot    ff  BBT           
1e  Hidden W95 FAT1
Hex code (type L to list codes): 8e
Changed system type of partition 2 to 8e (Linux LVM)

Command (m for help): p

Disk /dev/sda: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x08e3a6bd

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          50      401593+  82  Linux swap / Solaris
/dev/sda2              51          76      208845   8e  Linux LVM

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

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
Se queja de que no ha podido actualizar la tabla de particiones, pues lo hacemos con partx.

[root@gamma ~]# partx /dev/sda

Ahora tenemos que hacer que /dev/sda sea un volumen físico, tan fácil como:

[root@gamma ~]# pvcreate /dev/sda2Writing physical volume data to disk "/dev/sda2"
Physical volume "/dev/sda2" successfully created

Crearemos el grupo de volumenes (vg1) y añadires /dev/sda2 como volumen fisico:

[root@gamma ~]# vgcreate vg1 /dev/sda2
  Volume group "vg1" successfully created
Crearemos un volumen de 200M:

[root@gamma ~]# lvcreate -L 200MB -n lv1 vg1
Logical volume "lv1" created

Lo formateamos:

[root@gamma ~]# mkfs.ext4 /dev/mapper/vg1-lv1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
51200 inodes, 204800 blocks
10240 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
25 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
        8193, 24577, 40961, 57345, 73729

Writing inode tables: done                           
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 34 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

Y lo montamos:

[root@gamma ~]# mkdir /dir1
[root@gamma ~]# mount /dev/mapper/vg1-lv1 /dir1
Para que se monte el fs por defecto en el arranque, añadiremos la respectiva entrada en /etc/fstab. Está vez en vez de poner el device y el punto de montaje lo haremos por UUID. El UUID es el identificador universal para los discos y se mantiene, incluso cambiandolo de sistema.

Identificamos el UUID de nuestro volumen.
[root@gamma ~]# blkid |grep lv1
/dev/mapper/vg1-lv1: UUID="87f364f0-b77d-49b8-9620-a13c20f729d0" TYPE="ext4"
 Añadimos la siguiente linea al /etc/fstab:
UUID=87f364f0-b77d-49b8-9620-a13c20f729d0 /dir1                   ext4    defaults        1 2


...(Continuará)






No hay comentarios:

Publicar un comentario