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
Mi pasión por la tecnología me lleva constantemente a explorar las últimas tendencias y aplicaciones, buscando siempre formas de implementar soluciones innovadoras que mejoren la eficiencia. En puerto53.com comparto contenido valioso para ayudar a otros profesionales y entusiastas de la informática a navegar y dominar el complejo mundo de la tecnología. Mi especialidad en Linux RedHat.
Más sobre mí en el este enlace,