Stratis存储

作者:吴业亮
博客:wuyeliang.blog.csdn.net

Red Hat Enterprise Linux 8中,引入新的存储管理系统Stratis。其功能总结如下:

  • copy-on-write
  • 磁盘空间的精简置备Thin Provision
  • 支持RAID 0、RAID 1、RAID 10
  • 支持全盘加密如LUKS
  • 支持资源池,每池可创建 16,777,216( 2^24)个文件系统或文件夹
  • LZ4压缩
  • 文件的消除重复功能
  • 子卷
  • 快照
  • 数据损坏的自愈功能
  • 热扩容、热减容
  • 为提升性能而进行存储分区:数据区和缓存区(与VMWare VMFS 6相同,与Glusterfs的热区、冷区类似)

Stratis 与 ZFS 和 Btrfs 有哪些不同?

作为新项目,Stratis 可以从已有项目中吸取经验,我们将在第二部分深入介绍 Stratis 采用了 ZFS、Brtfs 和 LVM 的哪些设计。总结一下,Stratis 与其不同之处来自于对功能特性支持的观察,来自于个人使用及计算机自动化运行方式的改变,以及来自于底层硬件的改变。

  • 首先,Stratis 强调易用性和安全性。对个人用户而言,这很重要,毕竟他们与 Stratis 交互的时间间隔可能很长。如果交互不那么友好,尤其是有丢数据的可能性,大部分人宁愿放弃使用新特性,继续使用功能比较基础的文件系统。

  • 第二,当前 API 和 DevOps 式(Devops-style)自动化的重要性远高于早些年。Stratis 提供了支持自动化的一流 API,这样人们可以直接通过自动化工具使用 Stratis。

  • 第三,SSD 的容量和市场份额都已经显著提升。早期的文件系统中很多代码用于优化机械介质访问速度慢的问题,但对于基于闪存的介质,这些优化变得不那么重要。即使当存储池过大而不适合使用 SSD 的情况,仍可以考虑使用 SSD 充当 缓存层(caching tier),可以提供不错的性能提升。考虑到 SSD 的优良性能,Stratis 主要聚焦存储池设计方面的 灵活性(flexibility)和 可靠性(reliability)。

  • 最后,与 ZFS 和 Btrfs 相比,Stratis 具有明显不一样的 实现模型(implementation model)。这意味着对 Stratis 而言,虽然一些功能较难实现,但一些功能较容易实现。这也加快了 Stratis 的开发进度。

安装服务

# dnf install stratisd stratis-cli

启动服务并设置开机启动

# systemctl start stratisd
# systemctl enable stratisd

查看磁盘

# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   28G  0 disk
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0  2.8G  0 part [SWAP]
└─sda3   8:3    0   15G  0 part /
sdb      8:16   0    1T  0 disk
sdc      8:32   0    2T  0 disk
sdd      8:48   0    8G  0 disk
sde      8:64   0    8G  0 disk
sdf      8:80   0    8G  0 disk
sr0     11:0    1 1024M  0 rom

检查磁盘是否有分区,发现sda存在分区

# blkid -p /dev/sda
/dev/sda: PTUUID="b7168b63" PTTYPE="dos"
Not empty, it contains a partition table.

检查磁盘是否有分区,发现sdb无分区

# blkid -p /dev/sdb

检查磁盘是否有分区,发现sdc存在分区

# blkid -p /dev/sdc
/dev/sdc: UUID="770587cc-cfd3-44cb-82e2-756902cf458b" VERSION="1.0" TYPE="ext4" USAGE="filesystem"

清除分区

# wipefs -a /dev/sdc
/dev/sdc: 2 bytes were erased at offset 0x00000438 (ext4): 53 ef
Creating a pool
A pool with one block device.

创建存储池

# stratis pool create storage /dev/sdb

查看存储池

# stratis pool list
Name             Total Physical Size  Total Physical Used
storage                  1 TiB               52 MiB
A pool with 2 block devices (no redundancy).

创建2个磁盘的存储池

# stratis pool create storage_2disk /dev/sdd /dev/sdf

查看存储池

# stratis pool list
Name               Total Physical Size  Total Physical Used
storage                    1 TiB               52 MiB
storage_2disk                 16 GiB               56 MiB
Creating a filesystem from the pool

在存储池上存储一个文件系统

# stratis filesystem create storage wuyeliang

# stratis filesystem list
Pool Name      Name      Used     Created            Device
storage  wuyeliang  546 MiB  Nov 09 2018 11:08  /stratis/storage/wuyeliang

如果创建多个文件系统,重复上面的命令

# stratis filesystem create storage wuyeliang2

# stratis filesystem list
Pool Name      Name         Used     Created            Device
storage  wuyeliang     546 MiB  Nov 09 2018 11:08  /stratis/storage/wuyeliang
storage  wuyeliang2  546 MiB  Nov 09 2018 11:09  /stratis/storage/wuyeliang2

The file system is created on a thinly provisioned 1 TB block device. Stratis will take care of allocating blocks from the pool and re-sizing the XFS file system as needed during its lifetime.

您还可以通过包含池名称来限制文件系统列表输出

# stratis pool create olympic /dev/sdc

# stratis filesystem create olympic backstroke

# stratis filesystem
Pool Name      Name         Used     Created            Device
olympic        backstroke   546 MiB  Nov 09 2018 11:10  /stratis/olympic/backstroke
storage  wuyeliang     546 MiB  Nov 09 2018 11:08  /stratis/storage/wuyeliang
storage  wuyeliang2  546 MiB  Nov 09 2018 11:09  /stratis/storage/wuyeliang2

# stratis filesystem list storage
Pool Name      Name         Used     Created            Device
storage  wuyeliang     546 MiB  Nov 09 2018 11:08  /stratis/storage/wuyeliang
storage  wuyeliang2  546 MiB  Nov 09 2018 11:09  /stratis/storage/wuyeliang2
Mount the file system

挂载文件系统

# mount /stratis/storage/wuyeliang /mnt

查看文件系统的uuid

# blkid -p /stratis/storage/wuyeliang
/stratis/storage/wuyeliang: UUID="a38780e5-04e3-49da-8b95-2575d77e947c" TYPE="xfs" USAGE="filesystem"

设置开机挂载

# echo "UUID=a38780e5-04e3-49da-8b95-2575d77e947c /mnt xfs defaults 0 0" >> /etc/fstab

扩容存储池

# stratis pool add-data storage_2disk /dev/sdc

# stratis pool list
Name               Total Physical Size  Total Physical Used
storage                    1 TiB               52 MiB
storage_2disk               2.02 TiB               60 MiB

重命名存储池

# stratis pool rename storage_2disk 3_amigos

# stratis pool list
Name             Total Physical Size  Total Physical Used
3_amigos                    2.02 TiB               60 MiB
storage                  1 TiB               52 MiB

将ssd加入存储池,并作为缓存盘

# stratis pool init-cache 3_amigos /dev/sde
destroy: Destroy a pool, no file systems can exist in pool

删除存储池

# stratis pool destroy 3_amigos

# stratis pool list
Name             Total Physical Size  Total Physical Used
storage     
             1 TiB               52 MiB
Other useful file system operations
destroy: Remove a Stratis provided filesystem
To remove a Stratis provided filesystem, make sure that it’s not in use, and then destroy it.

此处要先移除文件系统

# stratis filesystem list
Pool Name      Name         Used     Created            Device
olympic        backstroke   546 MiB  Nov 09 2018 11:10  /stratis/olympic/backstroke
storage  wuyeliang     546 MiB  Nov 09 2018 11:08  /stratis/storage/wuyeliang
storage  wuyeliang2  546 MiB  Nov 09 2018 11:09  /stratis/storage/wuyeliang2
# stratis filesystem destroy storage wuyeliang2
# stratis filesystem list
Pool Name      Name        Used     Created            Device
olympic        backstroke  546 MiB  Nov 09 2018 11:10  /stratis/olympic/backstroke
storage  wuyeliang    546 MiB  Nov 09 2018 11:08  /stratis/storage/wuyeliang

rename: Rename a file system

# stratis filesystem rename olympic backstroke some_fs
snapshot: Create a snapshot
To create a snaphot, which is a read/writeable thinly provisioned point in time copy of the source FS.

创建快照

# stratis filesystem snapshot olympic some_fs some_fs_snapshot

# stratis filesystem list olympic
Pool Name  Name              Used     Created            Device
olympic    some_fs           546 MiB  Nov 09 2018 11:10  /stratis/olympic/some_fs
olympic    some_fs_snapshot  546 MiB  Nov 09 2018 11:26  /stratis/olympic/some_fs_snapshot
Misc. operations
Query which block devices belong to a pool or all of Stratis.

# stratis blockdev list olympic
Pool Name  Device Node    Physical Size   State  Tier
olympic    /dev/sdc            2.00 TiB  In-use  Data

# stratis blockdev list
Pool Name      Device Node    Physical Size   State  Tier
olympic        /dev/sdc            2.00 TiB  In-use  Data
storage  /dev/sdb               1 TiB  In-use  Data
Query redundancies that Stratis supports.

查看版本

# stratis daemon redundancy
NONE: 0
Query the Stratis daemon (stratisd) version.

# stratis daemon version
2.0.0

关于性能
4k随机写 50w IOPS的NVME盘组建成pool性能如下
在这里插入图片描述

参考

https://stratis-storage.github.io/howto/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值