Etiqueta: Linux (Página 2 de 2)

Encontrar archivos en Linux

En ocasiones no recordamos o ignoramos el nombre exacto de un archivo o directorio que requerimos, para solucionarnos estos problemas existe el comando find.

Encontrar archivos que terminan con la extensión .log.
[root@localhost ~]# find / -type f -name *.log
Encontrar el directorio www.
[root@localhost ~]# find / -type d -name www
/var/www
Encontrar archivos que pertenecen a un usuario.
[root@localhost ~]# find /var -user apache
/var/lib/httpd
/var/cache/httpd
/var/cache/httpd/proxy
Encontrar archivos que han sido accedidos la ultima hora.
[root@localhost log]# find /etc -type f -amin -60
/etc/cups/subscriptions.conf
/etc/magic
Encontrar archivos que han sido modificados la ultima hora.
[root@localhost log]# find /etc -type f -cmin -60
/etc/cups/subscriptions.conf
/etc/cups/subscriptions.conf.O
Encontrar archivos mayores a un Giga.
[tusysadmin@localhost ~]$ find . -type f -size +1024M
./Descargas/Rocky-8.4-x86_64-minimal.iso
./Descargas/Fedora-Workstation-Live-x86_64-34-1.2.iso
./Descargas/debian-11.0.0-amd64-DVD-1.iso
./S.O/Rocky-8.4-x86_64-minimal.iso
./S.O/W10.iso
Eliminar archivos mayores de un Giga.
[tusysadmin@localhost ~]$ find . -type f -size +1024M -exec rm -f {} \;
Encontrar archivos a los que se accedió en el ultimo día.
[root@localhost ~]# find /var/log/ -type f -atime -1
/var/log/wtmp
/var/log/cron
/var/log/boot.log
/var/log/lastlog
/var/log/dnf.log
Encontrar archivos modificados en el último día.
[root@localhost log]# find /var/log/ -type f -mtime -1
/var/log/dnf.rpm.log
/var/log/sssd/sssd_implicit_files.log
/var/log/sssd/sssd.log
/var/log/sssd/sssd_nss.log
/var/log/sssd/sssd_kcm.log
Archivos modificados el último día mostrando fecha.
[root@localhost log]# find -type f -mtime -1 -exec ls -gGh --full-time '{}' \; | cut -d ' ' -f 4,5,7
2021-10-19 10:49:55.598606102 ./dnf.rpm.log
2021-10-19 08:18:41.502768614 ./sssd/sssd_implicit_files.log
2021-10-19 08:18:41.286767603 ./sssd/sssd.log
2021-10-19 08:18:41.568768923 ./sssd/sssd_nss.log
2021-10-19 08:20:12.651994923 ./sssd/sssd_kcm.log
2021-10-19 09:06:55.884383149 ./hawkey.log
Copiar logs modificados el ultimo día.
[root@localhost ~]# find /var/log/ -type f -mtime -1 -exec cp '{}' backups/  \;
Encontrar binarios.
[tusysadmin@localhost ~]$ whereis -b python
python: /usr/bin/python /usr/bin/python3.9 /usr/lib/python3.9 /usr/lib64/python3.9 /usr/include/python3.9

Montar Pool LVM para KVM

Por default KVM guarda las imágenes de los discos virtuales en /var, si dicho directorio pertenece a la partición raíz esto puede ocasionar que el disco del equipo anfitrión se llene. Para evitar este problema, las imágenes de discos virtuales pueden montarse en un Volumen Group.

Llegados a este punto he montado un disco duro de 1TB, el disco está en /dev/sda, con los siguientes comandos crearemos la tabla de partición y la etiqueta lvm.

sudo parted /dev/sda mklabel msdos
sudo parted /dev/sda mkpart primary 0% 100%
sudo parted /dev/sda set 1 lvm on

Creamos el Volumen Group.

sudo pvcreate /dev/sda1
sudo vgcreate vglab /dev/sda1
[tusysadmin@localhost ~]$ sudo vgs
  VG     #PV #LV #SN Attr   VSize    VFree   
  fedora   1   1   0 wz--n- <110.20g       0 
  vglab    1   1   0 wz--n- <931.51g <831.51g

Abrimos virt-manager y en el menú Editar seleccionamos Detalles de la conexión, en la pestaña de Almacenamiento agregamos un nuevo pool.

Podemos listar los pools disponibles en el equipo anfitrión para corroborar que ha sido exitosamente añadido.

[tusysadmin@localhost ~]$ sudo virsh pool-list
 Nombre      Estado   Inicio automático
-----------------------------------------
 default     activo   si
 s.o         activo   si
 volumenes   activo   si

Ahora, en vez de almacenar los discos virtuales en /var podrán ser guardados en un LVM, solo debemos asegurarnos de seleccionar la opción correcta al momento de crear la maquina virtual.

Administrar para crear el LVM

Image 1 De 5

Validamos la creación del LVM.

[tusysadmin@localhost ~]$ sudo lvdisplay vglab/Maquina1
  --- Logical volume ---
  LV Path                /dev/vglab/Maquina1
  LV Name                Maquina1
  VG Name                vglab
  LV UUID                vnOjXX-981U-tbej-jPQl-C6mG-ft0p-E34Ki9
  LV Write Access        read/write
  LV Creation host, time localhost, 2021-10-03 22:48:27 -0500
  LV Status              available
  # open                 1
  LV Size                30.00 GiB
  Current LE             7680
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2

Instalar KVM en Fedora 34-38

KVM es un hipervisor de código abierto y libre que puede ser utilizado en la mayoría de las distribuciones Linux. Permite la emulación de interfaces de red, procesador, disco, PCI y unidades USB gracias al uso de QEMU. Aunque también puede usar XEN en caso de que se use en paravirtualización.

linux_kvm - Davoud Teimouri - Virtualization and Data Center

Primeramente validamos si nuestro equipo acepta virtualización. En algunos casos está deshabilitado en el BIOS y simplemente hay que configurarlo.

$ cat /proc/cpuinfo | egrep "vmx|svm"

Si la respuesta es positiva, continuamos con la instalación de paquetes.

sudo dnf -y install libvirt virt-install qemu-kvm virt-manager

Iniciamos y habilitamos el servicio libvirtd

sudo systemctl start libvirtd
sudo systemctl enable libvirtd

Para que nuestro usuario tenga acceso al administrador gráfico debe pertenecer al grupo libvirt.

sudo usermod -aG libvirt tusysadmin

Listo, con esto ya es posible comenzar con la instalación y administración de maquinas virtuales con nuestro usuario.

Virtual Machine Manager

Image 1 De 3

Instalar almacenamiento iSCSI en CentOS 7

Como alternativa para reducir los costos por manejar equipos de fibra óptica surgió iSCSI. Un protocolo TCP/IP de la capa de transporte que administra comandos SCSI a través de conexiones de red entre el almacenamiento y el host. No necesita equipos especiales como el caso de fibra y es relativamente fácil de implementar sobre todo en ambientes donde no existen conexiones de fibra.

Es una arquitectura Cliente-Servidor, por un lado, el iniciador puede ser una tarjeta de red estándar con software iniciador iSCSI (opción más económica) o con hardware (HBA), la diferencia radica en el rendimiento pues al hacerlo por software se involucra al CPU en las funciones de empaquetado y desempaquetado de SCSI a paquetes IP, ocasionando que el
procesamiento pueda ser un cuello de botella.

Por su parte el objetivo es el almacenamiento que comparte los recursos en
la red, estos recursos se identifican como Unidades Lógicas Únicas, LUN por sus siglas en inglés. Las LUN’s a su vez, son presentadas a los iniciadores (clientes) por medio de un Nombre Calificado ISCSI, IQN por sus siglas en inglés.

Con está base teórica, comencemos con la configuración en el siguiente ambiente:

iSCSI target:
Hostname: target.local
IP Address: 192.168.122.57

iSCSI iniciador:
Hostname: iniciador.local
IP Address: 192.168.122.222

Comenzamos en el host target.

]$ sudo yum install -y targetd targetcli
]$ sudo systemctl enable target

Habilitamos el servicio en el cortafuegos.

]$ sudo firewall-cmd --add-service=iscsi-target --permanent
]$ sudo firewall-cmd --reload
success

En este punto ya contamos con un lvm sin montar, en este caso /dev/vg1/lv1.

[tusysadmin@target ~]$ lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0              11:0    1 1024M  0 rom  
vda             252:0    0    7G  0 disk 
├─vda1          252:1    0    1G  0 part /boot
└─vda2          252:2    0    6G  0 part 
  ├─centos-root 253:0    0  5.3G  0 lvm  /
  └─centos-swap 253:1    0  716M  0 lvm  [SWAP]
vdb             252:16   0   20G  0 disk 
└─vdb1          252:17   0   20G  0 part 
  └─vg1-lv1     253:2    0   20G  0 lvm  

Lanzamos la utilidad targetcli.

[root@target ~]# targetcli
targetcli shell version 2.1.53
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.

/> ls
o- / ........................................................... [...]
  o- backstores ................................................ [...]
  | o- block .................................... [Storage Objects: 0]
  | o- fileio ....................................[Storage Objects: 0]
  | o- pscsi .................................... [Storage Objects: 0]
  | o- ramdisk .................................. [Storage Objects: 0]
  o- iscsi .............................................. [Targets: 0]
  o- loopback ........................................... [Targets: 0]

Como vamos a crear un dispositivo de bloques lo hacemos dentro de backstores/block.

/> backstores/block create web_store /dev/vg1/lv1 
Created block storage object web_store using /dev/vg1/lv1.

Creamos el iSCSI Qualified Name.

/> cd iscsi
/iscsi> create iqn.2021-09.com.tusysadmin.target1:web
Created target iqn.2021-09.com.tusysadmin.target1:web.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/iscsi>

Creamos la LUN asociada al bloque web_store.

/iscsi> cd iqn.2021-09.com.tusysadmin.target1:web/tpg1/
/iscsi/iqn.20...get1:web/tpg1> luns/ create /backstores/block/web_store 
Created LUN 0.
/iscsi/iqn.20...get1:web/tpg1>

Para crear la ACL con el IQN del iniciador iSCSI.

/iscsi/iqn.20...get1:web/tpg1> acls/ create iqn.2021-09.com.tusysadmin.iniciator:web
Created Node ACL for iqn.2021-09.com.tusysadmin.iniciator:web
Created mapped LUN 0.
/iscsi/iqn.20...get1:web/tpg1> 

Salimos de la utilidad target y verificamos que el puerto 3260 esté abierto.

[root@target ~]# ss -an | grep 3260
tcp    LISTEN     0      256       *:3260                  *:*

Configurando el iniciador iSCSI

En nuestro servidor cliente instalamos el iniciador iSCSI.

tusysadmin@iniciador ~]$ sudo yum install -y iscsi-initiator-utils

Modificamos el archivo /etc/iscsi/initiatorname.iscsi y agregamos el iqn que creamos en la ACL puesto que es nombre que tiene acceso a nuestra LUN. Para finalmente realizar la conexión.

[root@iniciador ~]# iscsiadm --mode node --targetname iqn.2021-09.com.tusysadmin.target1:web --portal target.local --login 
Logging in to [iface: default, target: iqn.2021-09.com.tusysadmin.target1:web, portal: 192.168.122.57,3260] (multiple)
Login to [iface: default, target: iqn.2021-09.com.tusysadmin.target1:web, portal: 192.168.122.57,3260] successful.

Si listamos los dispositivos iSCSI usados aparece el nuevo dispositivo en /dev/sda

[root@iniciador ~]# lsscsi
[0:0:0:0]    cd/dvd  QEMU     QEMU DVD-ROM     2.5+  /dev/sr0 
[6:0:0:0]    disk    LIO-ORG  web_store        4.0   /dev/sda 

En este punto la partición puede ser montada como sistema de archivos o como lvm, eso ya dependerá del uso deseado.

Extender Volumen

En una entrada anterior se configuraron tres discos para crear un VG (Volumen Group) y sobre él dos volúmenes con diferentes sistemas de archivos, en esta entrada agregaremos un nuevo disco que permita incrementar el tamaño del VG y a su vez el de los volúmenes.

Hasta el momento esta es la configuración de los discos en donde están montadas las particiones, el volumen lv1 tiene un sistema de archivos ext4 y el volumen lv2 xfs.

[tusysadmin@lvm ~]$ sudo lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0              11:0    1 1024M  0 rom  
vda             252:0    0    7G  0 disk 
├─vda1          252:1    0    1G  0 part /boot
└─vda2          252:2    0    6G  0 part 
  ├─centos-root 253:0    0  5.3G  0 lvm  /
  └─centos-swap 253:1    0  716M  0 lvm  [SWAP]
vdb             252:16   0   10G  0 disk 
└─vdb1          252:17   0   10G  0 part 
  └─vg1-lv1     253:2    0   12G  0 lvm  /lv1
vdc             252:32   0   10G  0 disk 
└─vdc1          252:33   0   10G  0 part 
  ├─vg1-lv1     253:2    0   12G  0 lvm  /lv1
  └─vg1-lv2     253:3    0   12G  0 lvm  /lv2
vdd             252:48   0   10G  0 disk 
└─vdd1          252:49   0   10G  0 part 
  └─vg1-lv2     253:3    0   12G  0 lvm  /lv2

[tusysadmin@lvm ~]$ sudo blkid | grep lv
/dev/mapper/vg1-lv1: UUID="53912dab-4d9d-4449-b366-aee3766c42c6" TYPE="ext4" 
/dev/mapper/vg1-lv2: UUID="14928bc2-7382-43e5-9f55-579e4115eaf1" TYPE="xfs"

El Volumen Group vg1 aun cuenta con espacio suficiente como para extender los volúmenes lógicos pero en esta entrada anexaremos la parte de agregar más discos para crecer el VG.

[tusysadmin@lvm ~]$ sudo vgs vg1
  VG  #PV #LV #SN Attr   VSize   VFree 
  vg1   3   2   0 wz--n- <29.99g <5.99g
[tusysadmin@lvm ~]$ 

Al esquema anterior se le ha agregado un disco de 5GB que está en el dispositivo vde. Como siempre, se crea la tabla de particiones y la etiqueta de lvm.

sudo parted /dev/vdb mklabel msdos
sudo parted /dev/vdb mkpart primary 0% 100%
sudo parted /dev/vdb set 1 lvm on

Para después agregar esta nueva partición al VG.

sudo vgextend vg1 /dev/vde1
[tusysadmin@lvm ~]$ sudo vgs vg1
  VG  #PV #LV #SN Attr   VSize  VFree 
  vg1   4   2   0 wz--n- 34.98g 10.98g

Como puede verse, el tamaño del VG aumentó y ya se cuenta con 10.98G para extender los volúmenes, en este momento son de 12G cada uno.

sudo lvs vg1
  LV   VG  Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1  vg1 -wi-ao---- 12.00g                                                    
  lv2  vg1 -wi-ao---- 12.00g  

Para conservar equidad, a cada volumen se le asignan 5G.

sudo lvextend -L+5G /dev/vg1/lv1
sudo lvextend -L+5G /dev/vg1/lv2

Finalmente, se incrementan los sistemas de archivos, primero ext4.

sudo resize2fs /dev/vg1/lv1 
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg1/lv1 is mounted on /lv1; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/vg1/lv1 is now 4456448 blocks long.

Después incrementamos xfs.

sudo xfs_growfs /dev/vg1/lv2
meta-data=/dev/mapper/vg1-lv2    isize=512    agcount=4, agsize=786432 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=3145728, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 3145728 to 4456448

Al revisar el espacio usado encontramos ambos volúmenes con su respectivo tamaño.

[tusysadmin@lvm ~]$ df -h
S.ficheros              Tamaño Usados  Disp Uso% Montado en
devtmpfs                  485M      0  485M   0% /dev
tmpfs                     496M      0  496M   0% /dev/shm
tmpfs                     496M   6.9M  489M   2% /run
tmpfs                     496M      0  496M   0% /sys/fs/cgroup
/dev/mapper/centos-root   5.1G   1.5G  3.4G  32% /
/dev/vda1                 976M   168M  742M  19% /boot
/dev/mapper/vg1-lv1        17G    44M   16G   1% /lv1
/dev/mapper/vg1-lv2        17G    33M   17G   1% /lv2
tmpfs                     100M      0  100M   0% /run/user/1000

LVM

Otra forma de configurar unidades de almacenamiento y que trabajen de manera conjunta, flexible y dinámica es a través de volúmenes lógicos. El Administrador de Volúmenes Lógicos (LVM) crea un nivel de abstracción sobre las unidades de disco; que en realidad son particiones concentradas en un pool que posteriormente se presentan en volumen lógico o partición.

Como se puede ver en la imagen anterior los discos son agregados a un grupo para posteriormente presentarse en uno o más volúmenes lógicos, esto es más flexible que presentar una partición por disco. A un servidor se le han presentado 3 discos duros de 10 GB para crear un grupo y gestionar el almacenamiento.

[tusysadmin@lvm ~]$ sudo lsblk
 NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
 sr0              11:0    1 1024M  0 rom  
 vda             252:0    0    7G  0 disk 
 ├─vda1          252:1    0    1G  0 part /boot
 └─vda2          252:2    0    6G  0 part 
   ├─centos-root 253:0    0  5.3G  0 lvm  /
   └─centos-swap 253:1    0  716M  0 lvm  [SWAP]
 vdb             252:16   0   10G  0 disk 
 vdc             252:32   0   10G  0 disk 
 vdd             252:48   0   10G  0 disk 

A estos discos se les crea una tabla de particiones, la partición y la etiqueta de lvm.

sudo parted /dev/vdb mklabel msdos
sudo parted /dev/vdb mkpart primary 0% 100%
sudo parted /dev/vdb set 1 lvm on
sudo parted /dev/vdc mklabel msdos
sudo parted /dev/vdc mkpart primary 0% 100%
sudo parted /dev/vdc set 1 lvm on
sudo parted /dev/vdd mklabel msdos
sudo parted /dev/vdd mkpart primary 0% 100%
sudo parted /dev/vdd set 1 lvm on

Las particiones /dev/vdb1, /dev/vdc1 y /dev/vdd1 son agregadas como pvs, para ser agregadas al VG vg1.

sudo pvcreate /dev/vdb1 /dev/vdc1 /dev/vdd1
sudo vgcreate vg1 /dev/vdb1 /dev/vdc1 /dev/vdd1
[tusysadmin@lvm ~]$ sudo vgs
  VG     #PV #LV #SN Attr   VSize   VFree  
  centos   1   2   0 wz--n-  <6.00g   4.00m
  vg1      3   0   0 wz--n- <29.99g <29.99g

Este VG dispone de la suma de las tres particiones, se creara un LVM de 12GB que sera montado en la ruta /lv1.

sudo lvcreate -n lv1 -L 12G vg1
sudo mkdir /lv1
sudo mkfs.ext4 /dev/vg1/lv1
sudo mount /dev/vg1/lv1 /lv1

Para montar esta partición al iniciar el servidor se modifica el archivo /etc/fstab, como root escribimos.

echo "/dev/vg1/lv1   /lv1   ext4   defaults 1 2" >> /etc/fstab

LVM Con XFS

Hasta este momento se cuenta con una partición que no utiliza todo el espacio de los discos montados, por lo que el volumen VG1 contará con espacio suficiente, para revisar el espacio con disponible usamos vgs.

[tusysadmin@lvm ~]$ sudo vgs
  VG     #PV #LV #SN Attr   VSize   VFree  
  centos   1   2   0 wz--n-  <6.00g   4.00m
  vg1      3   1   0 wz--n- <29.99g <17.99g

Con los 17.99GB disponibles se creara un nuevo LVM, pero esta vez con un sistema de archivos xfs.

sudo lvcreate -n lv2 -L 12G vg1
sudo mkdir /lv2
sudo mkfs.xfs /dev/vg1/lv2
sudo mount /dev/vg1/lv2

Al igual que en la otra partición, se modifica el archivo /etc/fstab para que sea montada al momento de arrancar el servidor. Como root escribimos.

echo "/dev/vg1/lv2   /lv2   xfs   defaults 1 2" >> /etc/fstab

Y con esto, tenemos dos particiones con diferentes sistemas de archivos, el VG cuenta con espacio libre para incrementar alguno de los volúmenes en caso de requerirse.

tusysadmin@lvm ~]$ sudo vgdisplay vg1
  --- Volume group ---
  VG Name               vg1
  System ID             
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               <29.99 GiB
  PE Size               4.00 MiB
  Total PE              7677
  Alloc PE / Size       6144 / 24.00 GiB
  Free  PE / Size       1533 / <5.99 GiB
  VG UUID               eyvICn-sJmi-x5aQ-J20q-szo2-1ynY-FjSaL5

En entradas posteriores se mostrara como incrementar estas particiones así como la adición de un nuevo disco.

Reemplazar disco de arreglo

En un Post anterior se hizo la instalación de un raid 1, ahora se mostrará como reemplazar uno de los discos cuando este falla, para este ejemplo se ha removido por completo uno de los discos que componían el arreglo y anexado su reemplazo

[tusysadmin@raid1 ~]$ sudo lsblk
 NAME            MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
 sr0              11:0    1 1024M  0 rom   
 vda             252:0    0    7G  0 disk  
 ├─vda1          252:1    0    1G  0 part  /boot
 └─vda2          252:2    0    6G  0 part  
   ├─centos-root 253:0    0  5.3G  0 lvm   /
   └─centos-swap 253:1    0  716M  0 lvm   [SWAP]
 vdb             252:16   0   20G  0 disk  
 vdc             252:32   0   20G  0 disk  
 └─vdc1          252:33   0   20G  0 part  
   └─md0           9:0    0   20G  0 raid1 /raid

Al monitorear el estado del arreglo se detecta que uno de los disco ha sido removido, pero la lectura y escritura de los archivos que se tienen montados en el sevidor siguen estando accesibles.

[tusysadmin@raid1 ~]$ sudo mdadm --detail /dev/md0
 /dev/md0:
            Version : 1.2
      Creation Time : Tue Jul  6 10:28:38 2021
         Raid Level : raid1
         Array Size : 20953088 (19.98 GiB 21.46 GB)
      Used Dev Size : 20953088 (19.98 GiB 21.46 GB)
       Raid Devices : 2
      Total Devices : 1
        Persistence : Superblock is persistent

        Update Time : Tue Jul  6 12:00:15 2021
              State : clean, degraded 
     Active Devices : 1
    Working Devices : 1
     Failed Devices : 0
      Spare Devices : 0

 Consistency Policy : resync

               Name : raid1:0  (local to host raid1)
               UUID : a0d3f752:fd91f8ac:e887109c:a39a9810
             Events : 147

     Number   Major   Minor   RaidDevice State
        -       0        0        0      removed
        1     252       33        1      active sync   /dev/vdc1

Mientras agrego el nuevo disco estaré enviando con un tail la salida del archivo audit.log a un archivo llamado logs, esto para similar la escritura en la carpeta en donde está construido el arreglo.

[tusysadmin@raid1 files]$ pwd
 /raid/files
 [tusysadmin@raid1 files]$ ls 
 CentOS-8.3.2011-x86_64-boot.iso  logs
 [tusysadmin@raid1 files]$ sudo tail -f /var/log/audit/audit.log >> logs

Mientras eso sucede en otra terminal, agregamos el nuevo disco.

sudo parted /dev/vdb mklabel msdos
sudo parted /dev/vdb mkpart primary ext4 0% 100%
sudo parted /dev/vdb set 1 raid on
sudo mdadm --manage /dev/md0 --add /dev/vdb1

Una vez agregado comenzará la recuperación del arreglo

[tusysadmin@raid1 ~]$ cat /proc/mdstat 
 Personalities : [raid1] 
 md0 : active raid1 vdb1[2] vdc1[1]
       20953088 blocks super 1.2 [2/1] [_U]
       [======>…………..]  recovery = 34.6% (7254144/20953088) finish=5.8min speed=39115K/sec

La recuperación tardará dependiendo del tamaño del arreglo, una vez terminado puede validarse con los comandos.

cat /proc/mdstat
sudo mdadm --detail /dev/md0

Crear RAID 1

El tener un RAID 1 es útil para conservar información replicada, de esta forma se evita perderla en caso de falla física de uno de los discos. Para este ejemplo se usaran dos discos de 20 G en la creación del arreglo, mismos que ya son detectados por la maquina virtual.

[tusysadmin@raid1 ~]$ sudo lsblk
 NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
 sr0              11:0    1 1024M  0 rom  
 vda             252:0    0    7G  0 disk 
 ├─vda1          252:1    0    1G  0 part /boot
 └─vda2          252:2    0    6G  0 part 
   ├─centos-root 253:0    0  5.3G  0 lvm  /
   └─centos-swap 253:1    0  716M  0 lvm  [SWAP]
 vdb             252:16   0   20G  0 disk 
 vdc             252:32   0   20G  0 disk 

Para usar estos dispositivos es necesario crear una tabla de particiones:

sudo parted /dev/vdb mklabel msdos
sudo parted /dev/vdc mklabel msdos 

Se crean las particiones y se marcan para usarse con la etiqueta de raid.

sudo parted /dev/vdb mkpart primary ext4 0% 100%
sudo parted /dev/vdb set 1 raid on
sudo parted /dev/vdc mkpart primary ext4 0% 100%
sudo parted /dev/vdc set 1 raid on 

Con esto, ambos discos están listos para crear el arreglo.

[tusysadmin@raid1 ~]$ sudo parted /dev/vdb print
 Model: Virtio Block Device (virtblk)
 Disk /dev/vdb: 21.5GB
 Sector size (logical/physical): 512B/512B
 Partition Table: msdos
 Disk Flags: 
 Numero  Inicio  Fin     Tamaño  Typo     Sistema de ficheros  Banderas
  1      1049kB  21.5GB  21.5GB  primary                       raid
 [tusysadmin@raid1 ~]$ sudo parted /dev/vdc print
 Model: Virtio Block Device (virtblk)
 Disk /dev/vdc: 21.5GB
 Sector size (logical/physical): 512B/512B
 Partition Table: msdos
 Disk Flags: 
 Numero  Inicio  Fin     Tamaño  Typo     Sistema de ficheros  Banderas
  1      1049kB  21.5GB  21.5GB  primary                       raid

Para crear el arreglo es necesario instalar el paquete mdadm, como se esta trabajando con CentOS usamos Yum.

sudo yum install mdadm -y

Para posteriormente crear la partición del arreglo.

sudo mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=2 /dev/vdb1 /dev/vdc1

Y montar la partición creada.

sudo mkfs.ext4 /dev/md0
sudo mkdir /raid
sudo mount /dev/md0 /raid

Finalmente se modifica el archivo /etc/fstab para montar la partición al encender la maquina, como root escribimos.

echo "/dev/md0   /raid   ext4   defaults 1 2" >> /etc/fstab

Para validar los detalles y el estado del arreglo recién creado usamos mdadm –detail /dev/md0.

[tusysadmin@raid1 ~]$ sudo mdadm --detail /dev/md0
 /dev/md0:
            Version : 1.2
      Creation Time : Tue Jul  6 10:28:38 2021
         Raid Level : raid1
         Array Size : 20953088 (19.98 GiB 21.46 GB)
      Used Dev Size : 20953088 (19.98 GiB 21.46 GB)
       Raid Devices : 2
      Total Devices : 2
        Persistence : Superblock is persistent

        Update Time : Tue Jul  6 10:43:14 2021
              State : clean 
     Active Devices : 2
    Working Devices : 2
     Failed Devices : 0
      Spare Devices : 0
  
 Consistency Policy : resync

               Name : raid1:0  (local to host raid1) 
               UUID : a0d3f752:fd91f8ac:e887109c:a39a9810        
             Events : 145 

     Number   Major   Minor   RaidDevice State  
        0     252       17        0      active sync   /dev/vdb1
        1     252       33        1      active sync   /dev/vdc1 

Al listar la lista de dispositivos de bloques, pueden observarse que aparece md0 dentro de las particiones iniciales.

[tusysadmin@raid1 ~]$ sudo lsblk
 NAME            MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
 sr0              11:0    1 1024M  0 rom   
 vda             252:0    0    7G  0 disk  
 ├─vda1          252:1    0    1G  0 part  /boot
 └─vda2          252:2    0    6G  0 part  
   ├─centos-root 253:0    0  5.3G  0 lvm   /
   └─centos-swap 253:1    0  716M  0 lvm   [SWAP]
 vdb             252:16   0   20G  0 disk  
 └─vdb1          252:17   0   20G  0 part  
   └─md0           9:0    0   20G  0 raid1 /raid
 vdc             252:32   0   20G  0 disk  
 └─vdc1          252:33   0   20G  0 part  
   └─md0           9:0    0   20G  0 raid1 /raid

En el siguiente Post se mostrará como reemplazar uno de los discos cuándo presentan una falla.

Entradas siguientes »

© 2025

Tema por Anders NorenArriba ↑