如何在 RHEL 8 上安装 Stratis 来管理分层本地存储
Stratis 是 RHEL 8 发行版附带的新功能之一。 Stratis 是一种本地存储管理解决方案,注重简单性和改进的可用性,同时提供对高级存储功能的访问。它使用 XFS 文件系统并允许您访问高级存储功能,例如:
- 精简配置
- 文件系统快照
- 分层
- 基于池的管理
- 监控
基本上,Stratis 是一个从一个或多个本地磁盘或磁盘分区创建的存储池。 Stratis 帮助系统管理员设置和管理复杂的存储配置。
在我们进一步讨论之前,让我们看一下您在讨论过程中一定会遇到的一些技术术语:
- 池:池由一个或多个块设备组成。池的总大小等于块设备的总大小。
- blockdev:正如您可能已经猜到的,这指的是块设备,例如磁盘分区。
- 文件系统:文件系统是一个精简配置层,其总大小并不固定。文件系统的实际大小随着数据的添加而增加。当数据大小接近文件系统的虚拟大小时,Stratis 会自动增加文件系统的大小。
可以与 Stratis 一起使用的块设备包括:
- LVM 逻辑卷
- 卢克斯
- SSD(固态硬盘)
- 设备映射器多路径
- iSCSI
- HDD(硬盘驱动器)
- 姆德拉德
- NVMe存储设备
Stratis 的软件组件
Stratis 提供 2 个软件实用程序:
- Stratis-cli:这是 Stratis 附带的命令行工具。
- Stratisd 守护进程:这是一个创建和管理块设备的守护进程,并在提供 DBUS API 中发挥作用。
如何在 RHEL 8 上安装 Stratis
了解了 Stratis 是什么并定义了一些术语。现在让我们在 RHEL 8 发行版上安装和配置 Stratis(也适用于 CentOS 8)。
在 RHEL 8 上安装 Stratis
让我们看看如何在 RHEL 8 系统上安装 Stratis,以 root 用户身份登录并运行命令。
dnf install stratisd stratis-cli
要查找有关已安装软件包的更多信息,请运行命令。
rpm -qi stratisd stratis-cli
成功安装Stratis后,通过运行命令启动服务。
systemctl enable --now stratisd
要检查 Stratis 的状态,请运行命令。
systemctl status stratisd
创建 Stratis 池
要创建 Stratis 池,您需要未使用或未安装的块设备。此外,还假设 Stratisd 服务已启动并正在运行。此外,您要使用的块设备的大小至少需要1 GB。
在我们的 RHEL 8 系统上,我们有四个额外的块设备:/dev/xvdb
、/dev/xvdc
、/dev/ xvdd,
/dev/xvde
。要显示块设备,请运行 lsblk 命令。
lsblk
这些块设备都不应该有分区表。您可以使用该命令确认这一点。
blkid -p /dev/xvdb
如果没有得到输出,则意味着您的块设备上没有任何分区表。但是,如果分区表存在,您可以使用以下命令擦除它:
wipefs -a /<device-path>
从一个块设备创建 Stratis 池
您可以使用以下语法从单个块设备创建 Stratis 池。
stratis pool create <pool-name> <block-device>
例如,要从 /dev/xvdb
创建池,请运行以下命令。
stratis pool create my_pool_1 /dev/xvdb
确认创建的池运行。
stratis pool list
从多个块设备创建 Stratis 池
要从多个设备创建池,请使用以下语法在一行上列出所有设备。
stratis pool create <pool_name> device-1 device-2 device-n
要从 /dev/xvdc
、/dev/xvdd
和 /dev/xvde
创建池,请运行以下命令。
stratis pool create my_pool_2 /dev/xvdc /dev/xvdd/ /dev/xvde
再次使用该命令列出可用的池。
stratis pool list
此时,您应该有 2 个池:my_pool_1 和 my_pool_2。
如上所示,池 my_pool_2 占用的硬盘空间是我们仅从一个内存为 10GB 的块设备创建的第一个池的三倍。
从池创建文件系统
创建文件系统后,您可以使用以下语法从池之一创建文件系统。
stratis fs create <poolname> <filesystemname>
例如,要分别从 my_pool_1 和 my_pool_2 创建 filesystem-1 和 filesystem-2 ,请运行命令:
stratis fs create my_pool_1 filesystem-1
stratis fs create my_pool_2 filesystem-2
要查看新创建的文件系统,请运行命令。
stratis fs list
要将文件系统的结果缩小到一个池,请运行以下命令:
stratis fs list <poolname>
例如,要检查 my_pool_2 中的文件系统,请运行以下命令。
stratis fs list my_pool_2
现在,如果运行 lsblk 命令,输出应该与下面的示例输出有些相似。
lsblk
安装 Stratis 文件系统
我们现在要挂载现有的文件系统以便访问它们。首先,创建安装点。
对于第一个池中的文件系统,运行命令:
mkdir /data
mount /stratis/my_pool_1/filesystem-1 /data
对于第二个池中的第二个文件系统,运行命令。
mkdir /block
mount /stratis/my_pool_2/filesystem-2 /block
要验证当前安装点是否存在,请运行 df 命令:
df -Th | grep stratis
完美的!我们可以清楚地看到我们的挂载点存在。
持久挂载 Stratis 文件系统
我们刚刚创建的安装点无法在重新启动后继续存在。为了使它们持久化,首先获取每个文件系统的UUID:
blkid -p /stratis/my_pool_1/filesystem-1
blkid -p /stratis/my_pool_2/filesystem-2
现在继续并将 UUID 和安装点选项复制到 /etc/fstab,如图所示。
echo "UUID=c632dcf5-3e23-46c8-82b6-b06a4cc9d6a7 /data xfs defaults 0 0" | sudo tee -a /etc/fstab
echo "UUID=b485ce80-be18-4a06-8631-925132bbfd78 /block xfs defaults 0 0" | sudo tee -a /etc/fstab
要让系统注册新配置,请运行以下命令:
systemctl daemon-reload
要验证配置是否按预期工作,请挂载文件系统。
mount /data
mount /block
删除 Stratis 文件系统
要删除文件系统,您首先需要卸载文件系统,如图所示。
umount /mount-point
在这种情况下,我们应该有。
umount /data
要销毁文件系统,请使用以下语法:
stratis filesystem destroy <poolname> <filesystem-name>
所以,我们将有:
stratis filesystem destroy my_pool_1 filesystem-1
要确认删除文件系统,请发出命令。
stratis filesystem list my_pool_1
从输出中,我们可以清楚地看到与 my_pool_1 关联的文件系统已被删除。
将磁盘添加到现有 Stratis 池
您可以使用以下命令将磁盘添加到现有池:
stratis pool add-data <poolname> /<devicepath>
例如,要将额外的磁盘 /dev/xvdf
添加到 my_pool_1,请运行以下命令:
stratis pool add-data my_pool_1 /dev/xvdf
请注意,添加额外卷后,my_pool_1 的大小增加了一倍。
创建 Stratis 快照
快照是在给定时间点的精简配置的读取和写入文件系统的副本。
要创建快照,请运行以下命令:
stratis fs snapshot <poolname> <fsname> <snapshotname>
在这种情况下,命令将是:
stratis fs snapshot my_pool_2 filesystem-2 mysnapshot
您可以将数据属性 -$ (date +%Y-%m-%d)
附加到快照添加日期标签,如下面的屏幕截图所示。
要验证快照的创建,请运行以下命令:
stratis filesystem list <poolname>
在这种情况下,命令将是:
stratis filesystem list my_pool_2
使用文件系统恢复到以前的快照
要将 Stratis 文件系统恢复为之前创建的快照,首先,卸载并销毁原始文件系统。
umount /stratis/<poolname>/filesystem
在我们的场景中,将会是这样。
umount /stratis/my_pool_2/filesystem-2
然后使用原始文件系统创建快照的副本:
stratis filesystem snapshot <poolname> filesystem-snapshot filesystem
该命令将是:
stratis filesystem snapshot my_pool_2 mysnapshot-2019-10-24 block
最后,挂载快照。
mount /stratis/my-pool/my-fs mount-point
删除 Stratis 快照
要删除快照,请首先卸载快照。
unmount /stratis/my_pool_2/mysnapshot-2019-10-24
接下来,继续并销毁快照:
stratis filesystem destroy my_pool_2 mysnapshot-2019-10-24
删除 Stratis 池
要删除 Stratis 池,请按照以下简单步骤操作。
1. 列出池中存在的文件系统。
stratis filesystem list <poolname>
2. 接下来,卸载池中的所有文件系统。
umount /stratis//filesystem-1
umount /stratis//filesystem-2
umount /stratis//filesystem-3
3. 销毁文件系统。
stratis filesystem destroy <poolname> fs-1 fs-2
4.然后,扔掉水池。
stratis pool destroy poolname
在这种情况下,语法将是。
stratis pool destroy my_pool_2
您可以再次验证池列表。
stratis pool list
最后,删除文件系统的 /etc/fstab 中的条目。
我们已经读完指南了。在本教程中,我们将介绍如何安装和使用 Stratis 来管理 RHEL 上的分层本地存储。我们希望您发现它很有用。尝试一下,让我们知道进展如何。