Almacenamiento con Stratis en Linux

Stratis es una nueva opción de almacenamiento en Linux RedHat 8 basada en pools. Un pool puede estar formado por uno o varios discos que podemos utilizar para crear filesystems y snapshots de los filesystems.

Si lo necesitamos, podemos aumentar el espacio disponible en el pool añadiendo un nuevo disco sin interrupción del servicio.

Instalación de Stratis en Linux RedHat 8 o en CentOS 8

Instalaremos los paquetes de Stratis con el siguiente comando:

[root@server1 ~]# dnf install -y stratisd stratis-cli

[root@server1 ~]# rpm -qa |grep -i stratis
stratisd-2.3.0-2.el8.x86_64
stratis-cli-2.3.0-3.el8.noarch
[root@server1 ~]#

Una vez instalado, procederemos a arrancar el servicio:



[root@server1 ~]# systemctl enable stratisd
[root@server1 ~]# systemctl start stratisd
[root@server1 ~]# systemctl status stratisd
● stratisd.service - Stratis daemon
   Loaded: loaded (/usr/lib/systemd/system/stratisd.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2021-08-06 07:53:19 CEST; 2min 34s ago
     Docs: man:stratisd(8)
 Main PID: 988 (stratisd)
    Tasks: 1 (limit: 14088)
   Memory: 916.0K
   CGroup: /system.slice/stratisd.service
           └─988 /usr/libexec/stratisd --log-level debug

Aug 06 07:53:18 server1 systemd[1]: Starting Stratis daemon...
Aug 06 07:53:18 server1 stratisd[988]: [2021-08-06T05:53:18Z INFO  libstratis::stratis::run] stratis daemon version 2.3.0 started
Aug 06 07:53:18 server1 stratisd[988]: [2021-08-06T05:53:18Z INFO  libstratis::stratis::run] Using StratEngine
Aug 06 07:53:18 server1 stratisd[988]: [2021-08-06T05:53:18Z INFO  libstratis::engine::strat_engine::liminal::identify] Beginning initial search for Stratis block devices
Aug 06 07:53:18 server1 stratisd[988]: [2021-08-06T05:53:18Z INFO  libstratis::stratis::dbus_support] D-Bus API is available
Aug 06 07:53:19 server1 systemd[1]: Started Stratis daemon.
[root@server1 ~]# 

Creación de una estructura de almacenamiento con Stratis

Para este ejemplo, vamos a utilizar los dos discos que podemos ver a continuación:

Disk /dev/sdb: 1 GiB, 1073741824 bytes, 2097152 sectors
Disk /dev/sdc: 5 GiB, 5368709120 bytes, 10485760 sectors

Creación de un pool con Stratis

Lo primero que vamos a hacer va a ser crear el pool, que es la estructura básica de alamcenamiento sobre la que, posteriormente, crearemos tantos filesystems como queramos:

[root@server1 ~]# stratis pool create pooltest /dev/sdc
[root@server1 ~]# 

Añadir un nuevo disco al pool de Stratis

En este caso, solamente hemos añadido un disco. Si quisiéramos ampliar el pool con un nuevo disco, lo haríamos de la siguiente manera:

[root@server1 ~]# stratis pool add-data pooltest /dev/sdb
[root@server1 ~]# 

Ahora comprobamos el estado del pool:

[root@server1 ~]# stratis blockdev list 
Pool Name   Device Node   Physical Size   Tier
pooltest    /dev/sdb              1 GiB   Data
pooltest    /dev/sdc              5 GiB   Data
[root@server1 ~]# 

[root@server1 ~]# stratis pool list 
Name                     Total Physical   Properties
pooltest   6 GiB / 41.63 MiB / 5.96 GiB      ~Ca,~Cr
[root@server1 ~]# 

Si quisiéramos añadir un nuevo disco para utilizarlo como caché dentro de Stratis, el comando sería el siguiente:

stratis pool add-cache pooltest /dev/sdXXX

Creación de un filesystem XFS en Stratis

Ahora que tenemos el pool creado, podemos crear un filesystem para que podamos almacenar nuestros datos:

[root@server1 ~]# stratis filesystem create pooltest fstest
[root@server1 ~]# stratis filesystem list
Pool Name   Name     Used      Created             Device                         UUID                            
pooltest    fstest   546 MiB   Aug 06 2021 08:17   /dev/stratis/pooltest/fstest   66c99d677a8c42b0b31a5715fe253add
[root@server1 ~]# 

Configuramos fstab para montar nuestro filesystem de Stratis con el arranque del sistema y lo montamos:

[root@server1 ~]# tail -1 /etc/fstab 
/dev/stratis/pooltest/fstest /stratistest xfs	defaults,x-systemd.requires=stratisd.service 0 0
[root@server1 ~]# mount /stratistest/
[root@server1 ~]# df -hP /stratistest/
Filesystem                                                                                       Size  Used Avail Use% Mounted on
/dev/mapper/stratis-1-40bd108b659a4c9ebffe7f2abde8519d-thin-fs-66c99d677a8c42b0b31a5715fe253add  1.0T  7.2G 1017G   1% /stratistest
[root@server1 ~]# 

Comprobamos que podemos escribir correctamente en el filesystem:

[root@server1 ~]# cd /stratistest/
[root@server1 stratistest]# echo test > test.txt
[root@server1 stratistest]# ls -la
total 8
drwxr-xr-x   2 root root   22 Aug  6 08:24 .
dr-xr-xr-x. 22 root root 4096 Aug  6 08:18 ..
-rw-r--r--   1 root root    5 Aug  6 08:24 test.txt
[root@server1 stratistest]# 

Renombrar pools y filesystems de Stratis

Renombrar un pool de Stratis

[root@server1 ~]# stratis pool rename pooltest pooltest2
[root@server1 ~]# stratis pool list
Name                      Total Physical   Properties
pooltest2   6 GiB / 41.63 MiB / 5.96 GiB      ~Ca,~Cr
[root@server1 ~]# 

Renombrar un filesystems de Stratis

Tenemos que especificar el nombre del pool al que pertenece el filesystem, tal y como podemos observar a continuación:

[root@server1 ~]# stratis filesystem rename pooltest fstest fstest2
[root@server1 ~]# stratis filesystem list
Pool Name   Name      Used      Created             Device                          UUID                            
pooltest    fstest2   546 MiB   Aug 06 2021 08:17   /dev/stratis/pooltest/fstest2   66c99d677a8c42b0b31a5715fe253add
[root@server1 ~]# 

Eliminar el pool y el filesystem de Stratis

[root@server1 ~]# stratis filesystem destroy pooltest  fstest2
[root@server1 ~]# stratis pool destroy pooltest 
[root@server1 ~]# 

Mover datos de un disco de Stratis a otro

Stratis es un nuevo sistema almacenamiento de datos en Linux pero todavía no está lo suficientemente maduro para utilizarlo en entornos profesonales para realizar según que tareas.

Por ejemplo, si queremos mover datos de un disco a otro nuevo no es posible hacerlo todavía (en una migración de cabina, por ejemplo). En Stratis, todavía no existe el comando equivalente en LVM «pvmove».

Eliminar discos de un pool de Stratis

Esta función tampoco se ha implementado todavía en Stratis, lo que supone un problema, por ejemplo, en caso de avería hardware de un disco o si queremos eliminar uno por temas de costes.

Así se indica en la propia documentación oficial de RedHat: https://access.redhat.com/solutions/5041771

Until now as of RHEL8.0 and 8.1 there is no option to remove a block device from the stratis pool. There are commands to create Stratis Pool and destroy to delete the pool. However, removing a block device such as a disk or multipath LUN from the pool is not possible. This feature is not available as of now in RHEL 8

RedHat

To get this functionality a user will have to use either hardware RAID, software RAID, or LVM below Stratis.

RedHat

Seguro que RedHat no tardará en implementar estas mejoras.

Te podría interesar

VDO – Un sistema de almacenamiento con deduplicación y compresión de datos

COMPÁRTEME

Deja un comentario