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:
- Samsung 850 EVO de 250 GB
- Cable SATA 3
- Adaptador para la bahía Corsair CSSD-BRKT2. Ya contaba con un SSD Samsung del mismo modelo pero únicamente como disco de sistema. Con este segundo disco he necesitado un adaptador sobre el que montar los dos SSD.
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 😉