网站搜索

如何在 RHEL 8 上安装 Stratis 来管理分层本地存储


StratisRHEL 8 发行版附带的新功能之一。 Stratis 是一种本地存储管理解决方案,注重简单性和改进的可用性,同时提供对高级存储功能的访问。它使用 XFS 文件系统并允许您访问高级存储功能,例如:

  • 精简配置
  • 文件系统快照
  • 分层
  • 基于池的管理
  • 监控

基本上,Stratis 是一个从一个或多个本地磁盘或磁盘分区创建的存储池。 Stratis 帮助系统管理员设置和管理复杂的存储配置。

在我们进一步讨论之前,让我们看一下您在讨论过程中一定会遇到的一些技术术语:

  • :池由一个或多个块设备组成。池的总大小等于块设备的总大小。
  • blockdev:正如您可能已经猜到的,这指的是块设备,例如磁盘分区。
  • 文件系统:文件系统是一个精简配置层,其总大小并不固定。文件系统的实际大小随着数据的添加而增加。当数据大小接近文件系统的虚拟大小时,Stratis 会自动增加文件系统的大小。

可以与 Stratis 一起使用的块设备包括:

  1. LVM 逻辑卷
  2. 卢克斯
  3. SSD(固态硬盘)
  4. 设备映射器多路径
  5. iSCSI
  6. HDD(硬盘驱动器)
  7. 姆德拉德
  8. 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_1my_pool_2

如上所示,池 my_pool_2 占用的硬盘空间是我们仅从一个内存为 10GB 的块设备创建的第一个池的三倍。

从池创建文件系统

创建文件系统后,您可以使用以下语法从池之一创建文件系统。

stratis fs create <poolname> <filesystemname>

例如,要分别从 my_pool_1my_pool_2 创建 filesystem-1filesystem-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 上的分层本地存储。我们希望您发现它很有用。尝试一下,让我们知道进展如何。