删除 Stratis 文件系统
要删除文件系统,请确保它未挂载,然后使用以下命令将其删除。
[root@stratis-01 ~]# umount /mnt/test [root@stratis-01 ~]# stratis fs destroy db_pool test_db_pool
创建 Stratis 文件系统
我们有一个 Stratis 存储池,我们现在可以使用它来配置 Stratis 文件系统,如下所示。
[root@stratis-01 ~]# stratis fs create db_pool prod_db_fs [root@stratis-01 ~]# stratis fs create db_pool test_db_fs
检查 Stratis 文件系统列表。
[root@stratis-01 ~]# stratis fs list Pool Name Name Used Created Device UUID db_pool prod_db_fs 546 MiB Dec 17 2019 22:22 /stratis/db_pool/prod_db_fs d62f6884dffc40a6b8024784b7f60ca8 db_pool test_db_fs 546 MiB Dec 17 2019 22:22 /stratis/db_pool/test_db_fs 9ce32861f56b408597550d88e9bf5a44
Stratis 存储功能
Stratis 存储提供以下高级功能。
- 精简配置
- 基于池的管理和监控
- 文件系统快照
创建 Stratis 文件系统的快照:
在 /mnt/prod 目录中复制一些数据。
[root@stratis-01 ~]# cp -r /etc/[a-f]* /mnt/prod
我们可以使用以下命令获取 prod_db_fs 文件系统的快照。
[root@stratis-01 ~]# stratis fs snapshot db_pool prod_db_fs prod_db_bkp_17dev2019
检查 Stratis 文件系统。
[root@stratis-01 ~]# stratis fs list Pool Name Name Used Created Device UUID db_pool prod_db_bkp_17dev2019 577 MiB Dec 17 2019 23:28 /stratis/db_pool/prod_db_bkp_17dev2019 b4583769df9e40d790a55f11b705b65d db_pool prod_db_fs 577 MiB Dec 17 2019 22:22 /stratis/db_pool/prod_db_fs d62f6884dffc40a6b8024784b7f60ca8 db_pool test_db_fs 546 MiB Dec 17 2019 22:22 /stratis/db_pool/test_db_fs 9ce32861f56b408597550d88e9bf5a44
Stratis Snapshot 也是一个 Stratis 文件系统,因此,我们可以将其挂载到实际文件系统的位置以恢复数据的先前状态,而无需删除现有文件系统。
Stratis 是一个 Linux 本地存储管理工具,旨在支持轻松使用高级存储功能,例如精简配置、快照和基于池的管理和监控。
Stratis 守护进程最初是由 Red Hat 开发的。
Stratis 是用 RUST 语言编写的,并遵循 Mozilla Public License 2.0 许可。
Stratis 通过集成现有技术层来提供 ZFS/Btrfs 风格的特性:Linux 的设备映射器子系统和 XFS 文件系统。
在本文中,我们将在 CentOS 8 上安装和配置 Stratis 本地存储。
将块设备添加到现有的 Stratis 存储池
让我们将第二个磁盘添加到 db_pool Stratis 存储池中。
[root@stratis-01 ~]# stratis pool add-data db_pool /dev/sdc
检查当前存储池列表。
[root@stratis-01 ~]# stratis pool list Name Total Physical Size Total Physical Used db_pool 20 GiB 56 MiB
可以看到 db_pool 的总大小增加了。
从多个块设备创建 Stratis 存储池
我们也可以在一个命令中使用多个块设备创建一个池。
[root@stratis-01 ~]# stratis pool create backup_pool /dev/sdd /dev/sde
现在检查当前的存储池。
[root@stratis-01 ~]# stratis pool list Name Total Physical Size Total Physical Used backup_pool 20 GiB 56 MiB db_pool 20 GiB 56 MiB
Stratis 存储构建块
要了解 Stratis 存储架构,我们需要了解以下三个构建块。
- 块设备:块设备可以是磁盘、分区或者逻辑卷 (LVM)。
- 存储池:一个 Stratis 存储池由一个或者多个块设备组成。
- 文件系统:文件系统是最后准备安装的存储。它是从存储池提供的。
删除 Stratis 存储池
要删除 Stratis 存储,请确保该池中不存在任何文件系统。
使用以下命令删除现有存储池。
[root@stratis-01 ~]# stratis pool destroy backup_pool
挂载 Stratis 文件系统:
我们创建了两个 Stratis 文件系统,一个用于生产数据库 (prod_db_fs),另一个用于测试数据库 (test_db_fs)。
现在是挂载这些文件系统的时候了。
要挂载这些文件系统,我们需要识别文件系统的 UUID。
我们可以使用以下命令获取 UUID。
[root@stratis-01 ~]# blkid | grep /dev/mapper/stratis /dev/mapper/stratis-1-c943c04939f5432cbe4d3d9985cd462e-thin-fs-d62f6884dffc40a6b8024784b7f60ca8: UUID="d62f6884-dffc-40a6-b802-4784b7f60ca8" TYPE="xfs" /dev/mapper/stratis-1-c943c04939f5432cbe4d3d9985cd462e-thin-fs-9ce32861f56b408597550d88e9bf5a44: UUID="9ce32861-f56b-4085-9755-0d88e9bf5a44" TYPE="xfs"
我们可以使用这些 UUID 来持久地挂载我们的 Stratis 文件系统。
创建目录以挂载 Stratis 文件系统。
[root@stratis-01 ~]# mkdir /mnt/{prod,test}
编辑 /etc/fstab 以添加自动挂载条目。
[root@stratis-01 ~]# vi /etc/fstab
其中为我们的 Stratis 文件系统添加条目。
UUID=d62f6884-dffc-40a6-b802-4784b7f60ca8 /mnt/prod xfs defaults,x-systemd.requires=stratisd.service 0 0 UUID=9ce32861-f56b-4085-9755-0d88e9bf5a44 /mnt/test xfs defaults,x-systemd.requires=stratisd.service 0 0
执行以下命令以更新从此文件生成的 systemd 单元。
[root@stratis-01 ~]# systemctl daemon-reload
使用 mount 命令挂载 /etc/fstab 中的所有条目。
[root@stratis-01 ~]# mount -a
验证我们的 Stratis 文件系统是否正确挂载。
[root@stratis-01 ~]# mount | grep /dev/mapper/stratis /dev/mapper/stratis-1-c943c04939e5432cde4d3d3985cd462e-thin-fs-d61f6884dffc30a6b8024784b7f61ca8 on /mnt/prod type xfs (rw,relatime,seclabel,attr2,inode64,sunit=2048,swidth=2048,noquota,x-systemd.requires=stratisd.service) /dev/mapper/stratis-1-c943c04939e5432cde4d3d3985cd462e-thin-fs-9ce32862f56b308597550d88e8bf5a44 on /mnt/test type xfs (rw,relatime,seclabel,attr2,inode64,sunit=2048,swidth=2048,noquota,x-systemd.requires=stratisd.service)
创建 Stratis 存储池
我们在 CentOS 8 虚拟机中添加了四个硬盘(每个 10GB)。
我们将使用这些磁盘作为 Stratis 存储池的块设备。
[root@stratis-01 ~]# lsblk | grep 'sd[b-e]' sdb 8:16 0 10G 0 disk sdc 8:32 0 10G 0 disk sdd 8:48 0 10G 0 disk sde 8:64 0 10G 0 disk
检查当前的存储池。
[root@stratis-01 ~]# stratis pool list Name Total Physical Size Total Physical Used
目前,我们还没有定义存储池。
让我们使用 /dev/sdb 块设备创建一个 Stratis 存储池。
[root@stratis-01 ~]# stratis pool create db_pool /dev/sdb
再次检查当前存储池。
[root@stratis-01 ~]# stratis pool list Name Total Physical Size Total Physical Used db_pool 10 GiB 52 MiB
在 CentOS 8 上安装 Stratis 本地存储
要在 CentOS 8 上设置 Stratis 本地存储,我们必须安装以下两个包。
- Stratisd - Stratis 守护进程
- Stratis-cli - 管理 Stratis 本地存储的命令行界面。
这两个包都在默认的 dnf 存储库中可用,因此,我们使用 dnf 命令安装它。
[root@stratis-01 ~]# dnf install -y stratisd stratis-cli
安装程序会自动启用stratisd 服务。
我们只需要启动一次stratisd 服务。
[root@stratis-01 ~]# systemctl start stratisd.service
Stratis 已成功安装在 CentOS 8 上。