SSD Samsung 850 EVO para virtualización (particionado + LVM)

por | marzo 5, 2018

Llegó el momento de montar un disco duro dedicado exclusivamente a máquinas virtuales. Para movilidad ya tenía anteriormente un SSD Transcend ESD400K, del que no tengo hasta ahora ninguna pega. Sin embargo, hay máquinas virtuales que no necesito estar moviendo de un lado para otro, así que me decidí a montar un disco duro fijo SSD para ellas.

Para los que os interese, los componentes que he comprado son:

Habrá otras muchas maneras de organizar el almacenamiento, pero os comento a continuación paso a paso cómo realizar un particionado y gestión con LVM.

Detectando el nuevo disco

Una vez tenemos los nuevos componentes montados en nuestro ordenador, el primer paso es detectar el nuevo disco. Podemos verlo fácilmente con lsblk:

En mi caso, el nuevo disco es el sdc. La organización del almacenamiento es bastante sencilla:

  • sda es el disco de que utilizo exclusivamente para sistema operativo, sin LVM y con dos particiones en /boot y /
  • sdb es mi segundo disco para datos, 1 TB de Western Digital de serie azul. En este disco tengo una partición (sdb1) que administro mediante LVM. En dicha partición hay dos volúmenes lógicos: uno para /home y otro para swap.

Con mi último disco, sdc, tengo pensado dedicarlo exclusivamente a temas de virtualización y administrarlo con LVM.

Particionado con fdisk

Podríamos directamente crear un volúmen físico sobre el disco, ya que lo voy a administrar enteramente con LVM. Sin embargo prefiero particionar el disco aunque sólo vaya a crear una única partición, por cuestión de organización.

Utilizamos la herramienta fdisk:

[root@jota-pc /]# fdisk /dev/sdc

Welcome to fdisk (util-linux 2.29.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): m

Help:

  DOS (MBR)
   a   toggle a bootable flag
   b   edit nested BSD disklabel
   c   toggle the dos compatibility flag

  Generic
   d   delete a partition
   F   list free unpartitioned space
   l   list known partition types
   n   add a new partition
   p   print the partition table
   t   change a partition type
   v   verify the partition table
   i   print information about a partition

  Misc
   m   print this menu
   u   change display/entry units
   x   extra functionality (experts only)

  Script
   I   load disk layout from sfdisk script file
   O   dump disk layout to sfdisk script file

  Save & Exit
   w   write table to disk and exit
   q   quit without saving changes

  Create a new label
   g   create a new empty GPT partition table
   G   create a new empty SGI (IRIX) partition table
   o   create a new empty DOS partition table
   s   create a new empty Sun partition table

Creamos la nueva partición para todo el disco:

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-488397167, default 2048): 
Last sector, +sectors or +size{K,M,G,T,P} (2048-488397167, default 488397167): 

Created a new partition 1 of type 'Linux' and of size 232.9 GiB.

Guardamos:

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

Comprobamos con lsblk que ya tenemos nuestra nueva partición sdc1:

[root@jota-pc /]# lsblk 
NAME              MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                 8:0    0 232.9G  0 disk 
├─sda1              8:1    0   476M  0 part /boot
└─sda2              8:2    0 232.4G  0 part /
sdb                 8:16   0 931.5G  0 disk 
└─sdb1              8:17   0 931.5G  0 part 
  ├─vgmain-lvswap 254:0    0    22G  0 lvm  [SWAP]
  └─vgmain-lvhome 254:1    0 585.7G  0 lvm  /home
sdc                 8:32   0 232.9G  0 disk 
└─sdc1              8:33   0 232.9G  0 part 

Gestión con LVM

Primero creamos un Volúmen Físico (PV, Phisical Volume), después un Grupo de Volúmen (VG, Volume Group) y más tarde un Volúmen Lógico (LV, Logical Volume) dentro de este grupo anterior:

  • Volúmen Físico sobre toda la partición /dev/sdc1
    [root@jota-pc /]# pvcreate /dev/sdc1
      Physical volume "/dev/sdc1" successfully created.
    
  • Grupo de Volúmen sobre dicha partición
    [root@jota-pc /]# vgcreate vgvirt /dev/sdc1
      Volume group "vgvirt" successfully created
    
  • Creamos el Volumen Lógico. Para empezar no necesito todo el almacenamiento, con 100GB me es más que suficiente:
    [root@jota-pc /]# lvcreate -n lvvirt --size 100G vgvirt 
      Logical volume "lvvirt" created.
    

Posteriormente le damos formato. He elegido sistema de ficheros ext4:

[root@jota-pc /]# mkfs.ext4 /dev/vgvirt/lvvirt 
mke2fs 1.43.4 (31-Jan-2017)
Discarding device blocks: done                            
Creating filesystem with 26214400 4k blocks and 6553600 inodes
Filesystem UUID: 6dd98619-3dcc-4778-ad57-3e3346144bd2
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624, 11239424, 20480000, 23887872

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (131072 blocks): done
Writing superblocks and filesystem accounting information: done   

Creación del punto de montaje y montado del volúmen lógico /dev/vgvirt/lvvirt en /virt

[root@jota-pc ~]# cd /
[root@jota-pc /]# mkdir virt
[root@jota-pc /]# mount /dev/vgvirt/lvvirt /virt

Ahora con df -h vemos el volúmen lógico lvvirt montado en /virt

[root@jota-pc /]# df -h
Filesystem                 Size  Used Avail Use% Mounted on
udev                       7.8G     0  7.8G   0% /dev
tmpfs                      1.6G  9.6M  1.6G   1% /run
/dev/sda2                  229G   61G  157G  29% /
tmpfs                      7.8G   54M  7.8G   1% /dev/shm
tmpfs                      5.0M  4.0K  5.0M   1% /run/lock
tmpfs                      7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/sda1                  453M   89M  337M  21% /boot
/dev/mapper/vgmain-lvhome  577G  478G   72G  88% /home
tmpfs                      1.6G   16K  1.6G   1% /run/user/116
tmpfs                      1.6G   40K  1.6G   1% /run/user/1000
/dev/mapper/vgvirt-lvvirt   98G   61M   93G   1% /virt

En /etc/fstab ya tenía las entradas correspondientes a mis dos volúmenes lógicos

/dev/mapper/vgmain-lvhome /home           ext4    noatime         0       2
/dev/mapper/vgmain-lvswap none            swap    sw              0       0

Añado a /etc/fstab una tercer línea con el nuevo volúmen lógico, para que se monte en el inicio de la máquina:

/dev/mapper/vgvirt-lvvirt /virt           ext4    noatime         0       2

Terminando con esto, para listar nuestros volúmenes lógicos podemos utilizar lvscan:

[root@jota-pc ~]# lvscan 
  ACTIVE            '/dev/vgmain/lvswap' [22.00 GiB] inherit
  ACTIVE            '/dev/vgmain/lvhome' [585.66 GiB] inherit
  ACTIVE            '/dev/vgvirt/lvvirt' [100.00 GiB] inherit

También podemos revisar de forma gráfica nuestro entorno LVM con Logical Volume Manager:

Existen más herramientas: Disks de Gnome, Parted, lvdisplay para ver detalladamente un volúmen lógico, etc… pero todo ello da para otro artículo 😉