Stratis是RHEL8/Centos8中提供的一个新的本地存储管理工具,它将有助于在块设备上创建分层存储。在RHEL8/Centos8中,可以通过安装两个软件包获得Stratis。在RHEL7,我们有了BTRFS文件系统,Red Hat在RHEL 8中删除了BTRFS支持,并提供了Stratis本地存储管理系统。
为了开始使用Stratis,我们需要添加一些磁盘设备,并创建一个单独的池,在一个Stratis池中,可以创建多个文件系统。
安装Stratis
通过下面命令使用yum安装stratis:
- [root@localhost ~]# yum -y install stratis*
安装完成之后,设置开机启用并立即启动:
- [root@localhost ~]# systemctl enable stratisd --now
查看以下是否启动:
列出可用磁盘
在这添加了5个2GB磁盘,使用下面命令列出磁盘:
- [root@localhost ~]# lsblk
列出现有的池和文件系统:
使用下面几条命令列出块设备、stratis池、文件系统:
- [root@localhost ~]# stratis blockdev list
- [root@localhost ~]# stratis pool list
- [root@localhost ~]# stratis filesystem list
创建池和文件系统
首先,我们创建“data01_pool”的池。将/dev/sda,/dev/sdb,/dev/sdc,/dev/sdd添加到该池中:
- [root@localhost ~]# stratis pool create data01_pool /dev/sd{a..d}
- [root@localhost ~]# stratis pool list
- [root@localhost ~]# stratis blockdev list
上面命令创建"data01_pool"池、查看池、查看块设备。
下面从“data01_pool”池中创建两个文件系统:
- [root@localhost ~]# stratis filesystem create data01_pool user_data01
- [root@localhost ~]# stratis filesystem create data01_pool user_data02
下面命令列出创建的文件系统:
- [root@localhost ~]# stratis filesystem list
- 或者
- [root@localhost ~]# stratis fs list
上图中列出的文件系统中,字段Device是stratis设备的位置。
挂载创建好的文件系统
一旦从池中创建了文件系统,请创建一个挂载点并挂载文件系统。默认情况下在创建文件系统时,它将使用XFS文件系统对其进行格式化。
- # 创建挂载点
- [root@localhost ~]# mkdir /user_data01
- [root@localhost ~]# mkdir /user_data02
- # 挂载文件系统
- [root@localhost ~]# mount /stratis/data01_pool/user_data01 /user_data01/
- [root@localhost ~]# mount /stratis/data01_pool/user_data02 /user_data02/
使用df -h查看挂载的情况:
- [root@localhost ~]# df -h /user_data*
- Filesystem Size Used Avail Use% Mounted on
- /dev/mapper/stratis-1-359fd7072d8349d390741a1a71f885fb-thin-fs-0657c26979ed443aa4d3a70c15606e1c 1.0T 7.2G 1017G 1% /user_data01
- /dev/mapper/stratis-1-359fd7072d8349d390741a1a71f885fb-thin-fs-b91b970f23d94eb6b2ed56f347f770d2 1.0T 7.2G 1017G 1% /user_data02
希望你已经观察到我们没有格式化文件系统。Stratis程序为我们解决了这一问题,并创建了XFS类型的文件系统。
同样,由于自动精简配置,默认情况下,它将显示文件系统大小为1 TB,并且该大小仅是虚拟的,而不是实际的。要检查实际大小,您将必须使用Stratis命令
使用df -hT /user*匹配出user_data01和user_data02挂载点的文件系统,可以看到他们的类型都是XFS格式。
在/etc/fstab中添加开机挂载的条目
首先需要获取文件系统的UUID,有两种方式:
第一种方式,是通过使用stratis fs list就可以获取到文件系统的UUID。
- [root@localhost ~]# stratis fs list
第二种方式,使用blkid获取块存储的uuid,过滤出stratis文件系统:
- [root@localhost ~]# blkid|grep stratis
下面就是将挂载信息写入到/etc/fstab中:
- [root@localhost ~]# echo "UUID=0657c26979ed443aa4d3a70c15606e1c /user_data01 xfs defaults,x-systemd.requires=stratis.service 0 0" >> /etc/fstab
- [root@localhost ~]# echo "UUID=b91b970f23d94eb6b2ed56f347f770d2 /user_data02 xfs defaults,x-systemd.requires=stratis.service 0 0" >> /etc/fstab
检查Stratis守护程序版本
如果需要检查Stratis运行的守护进程版本,使用如下命令:
- [root@localhost ~]# stratis daemon version
- 2.1.0
向Stratis池中添加其他磁盘
在Stratis管理下,将新的块设备添加到现有池非常容易。在上一篇文章《在Centos 中创建Stratis本地存储(一)》设置中,“ data01_pool”中有4个磁盘,现在我们需要通过添加新磁盘来扩展池中的空间。使用选项add-data来添加新磁盘,下面向"data01_pool"池中添加"/dev/sde"磁盘。
- [root@localhost ~]# stratis pool list
- Name Total Physical Properties
- data01_pool 8 GiB / 1.11 GiB / 6.89 GiB ~Ca,~Cr
- [root@localhost ~]# stratis pool add-data data01_pool /dev/sde
- [root@localhost ~]# stratis pool list
- Name Total Physical Properties
- data01_pool 10 GiB / 1.12 GiB / 8.88 GiB ~Ca,~Cr
可以看到上图中扩展前是8G,扩展之后变成了10G。再查看一下stratis的块设备:
- [root@localhost ~]# stratis pool list
- Name Total Physical Properties
- data01_pool 8 GiB / 1.11 GiB / 6.89 GiB ~Ca,~Cr
- [root@localhost ~]# stratis pool add-data data01_pool /dev/sde
- [root@localhost ~]# stratis pool list
- Name Total Physical Properties
- data01_pool 10 GiB / 1.12 GiB / 8.88 GiB ~Ca,~Cr
重命名池和文件系统
Stratis具有在运行中重命名池或文件系统的功能,而不会影响任何正在运行的设置。下面让我们将当前池名称“data01_pool”重命名为“data01_pool_old”。
- [root@localhost ~]# stratis pool rename data01_pool date01_pool_old
下面我们来重命名文件系统,重命名文件系统类似于重命名池:
- [root@localhost ~]# stratis fs rename date01_pool_old user_data01 sys_data01
在Stratis中创建快照
Stratis可以对任何文件系统进行快照。让我们对服务器中现有文件系统进行快照。下面先再user_data01中写入一些数据:
- [root@localhost ~]# touch /user_data01/file{1..100}.txt
下面来打快照:
- [root@localhost ~]# stratis fs snapshot date01_pool_old sys_data01 sys_data01_snap
可以看到快照已生成。下面挂载/stratis/data01_pool_old/sys_data01_snap这个快照到/mnt目录,然后查看文件是否存在。
- [root@localhost ~]# mount /stratis/date01_pool_old/sys_data01_snap /mnt/
删除Stratis文件系统
删除Stratis文件系统之前,需要在/etc/fstab中删除stratis相关的那两个文件系统条目。下面我只注释掉,没有删除条目。
卸载文件系统:
- [root@localhost ~]# umount /user_data01
- [root@localhost ~]# umount /user_data02
下面就开始删除文件系统啦:
- [root@localhost ~]# stratis fs destroy date01_pool_old sys_data01
- [root@localhost ~]# stratis fs destroy date01_pool_old user_data02
- [root@localhost ~]# stratis fs destroy date01_pool_old sys_data01_snap
- [root@localhost ~]# stratis fs destroy date01_pool_old user_data02_snap
删除Stratis池
要删除Stratis池,我们应该删除在其下创建的所有文件系统。否则会提示:
- [root@localhost ~]# stratis pool destroy data01_pool_old
- Execution failure caused by:
- BUSY: filesystems remaining on pool
下面来删除池:
- [root@localhost ~]# stratis pool destroy date01_pool_old
- [root@localhost ~]# stratis pool
- Name Total Physical Properties
总结
Stratis是RHEL8/Centos8中提供的一个新的本地存储管理工具,它将有助于在块设备上创建分层存储。在RHEL8/Centos8中,可以通过安装两个软件包获得Stratis。我们已经看到了如何通过添加磁盘并重命名来管理Stratis分层存储。
本文转载自微信公众号「Linux就该这么学」,可以通过以下二维码关注。转载本文请联系Linux就该这么学公众号。