OpenZFS安装和使用

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
实时计算 Flink 版,5000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: 在Ubuntu 22.04.3 LTS上,本文介绍了OpenZFS的容错功能,如RAID-Z(类似RAID 5)、Mirror(类似RAID 1)、RAID-Z2和RAID-Z3,以及Hot Spare和Scrubbing。推荐使用RAID-Z1以平衡容量和预算。主要步骤包括安装zfsutils-linux,创建RAID-Z1存储池和ZFS文件系统,以及管理文件系统。此外,还提到了使用nfs共享ZFS文件系统的命令。

操作环境

其他环境请酌情转换处理

系统环境: Ubuntu 22.04.3 LTS
```bash

lsb_release -a

No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.3 LTS
Release: 22.04
Codename: jammy


> 磁盘情况
```bash
# lsblk -e 7
# -e 排除 loop设备类型

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda           8:0    0   7.3T  0 disk
sdb           8:16   0   7.3T  0 disk
sdc           8:32   0   7.3T  0 disk
sdd           8:48   0   7.3T  0 disk

OpenZFS 中常见的容错功能

OpenZFS 是一个强大的文件系统和逻辑卷管理器,它提供了多种容错功能,可以保护数据免受硬件故障和数据损坏的影响。下面是一些 OpenZFS 中常见的容错功能:

  1. RAID-Z

    • RAID-Z1 是 RAID-Z 的别名。The raidz vdev type is an alias for raidz1
    • RAID-Z 是一种 ZFS 特有的软件 RAID 方案,类似于传统 RAID 5,但提供更强大的功能和更好的性能。
    • RAID-Z 通过在数据块中存储校验信息来提供数据完整性保护。在磁盘故障时,它可以使用校验信息恢复丢失的数据。
  2. Mirror

    • Mirror 是 OpenZFS 中的镜像功能,类似于传统 RAID 1。
    • 在 Mirror 中,数据被复制到至少两个磁盘上,如果一个磁盘失败,数据仍然可以从其他镜像中恢复。
  3. RAID-Z2 和 RAID-Z3

    • 类似于 RAID-Z,但提供了更高级别的容错保护。
    • RAID-Z2 允许在两个磁盘故障的情况下继续运行,而 RAID-Z3 允许在三个磁盘故障的情况下继续运行。
  4. Hot Spare

    • Hot Spare 是一种备用磁盘,当检测到磁盘故障时,它会自动替换故障磁盘。
    • 这可以减少故障对系统的影响,并在故障发生时自动恢复数据。
  5. Scrubbing

    • Scubbing 是一种定期检查和修复数据完整性的过程。
    • 它会定期扫描存储池中的所有数据,并检查它们与校验信息是否匹配,以及是否存在任何损坏的数据。

选择容错的方案

选择RAID-Z1, 如果有N个相等的磁盘 , 则容量为 (N-1)* 磁盘容量,读取、写入性能均为:N-1, 适用追求最大容量、最小预算的情况。

RAIDZ官网介绍: https://openzfs.github.io/openzfs-docs/Basic%20Concepts/RAIDZ.html

主要操作步骤

参考资料: https://openzfs.github.io/openzfs-docs/

  1. 安装 OpenZFS

On Ubuntu, ZFS is included in the default Linux kernel packages. To install the ZFS utilities, first make sure universe is enabled in /etc/apt/sources.list

deb http://archive.ubuntu.com/ubuntu CODENAME main universe

apt update
apt install zfsutils-linux

# zpool version
zfs-2.1.5-1ubuntu6~22.04.4
zfs-kmod-2.2.0-0ubuntu1~23.10.2

# zfs --version
zfs-2.1.5-1ubuntu6~22.04.4
zfs-kmod-2.2.0-0ubuntu1~23.10.2
  1. 创建 ZFS 存储池
    ```bash

    下面两条命令效果相同

    sudo zpool create mdata -m /mdata raidz1 /dev/sda /dev/sdb /dev/sdc /dev/sdd

    sudo zpool create mdata -m /mdata raidz /dev/sda /dev/sdb /dev/sdc /dev/sdd

zpool list

zpool status

pool: mdata
state: ONLINE
config:

    NAME        STATE     READ WRITE CKSUM
    mdata       ONLINE       0     0     0
      raidz1-0  ONLINE       0     0     0
        sda     ONLINE       0     0     0
        sdb     ONLINE       0     0     0
        sdc     ONLINE       0     0     0
        sdd     ONLINE       0     0     0

errors: No known data errors

zpool --help

销毁存储池

sudo zpool destroy mdata


3. 创建 ZFS 文件系统
```bash
# 创建文件系统
sudo zfs create -o mountpoint=/mdata/zfs mdata/zfs

cd /mdata/
chown -R user:user admin-user zfs

zfs list

# 移除文件系统
sudo zfs unmount mdata/zfs
sudo zfs destroy -r mdata/zfs

其他命令

nfs共享

zfs set sharenfs="rw,root=192.168.xxx.xxx,root=172.10.xxx.xxx" /mata/share
目录
相关文章
|
存储 运维 IDE
|
NoSQL Java
简析Cassandra的BATCH操作
cassandra中批量写入的操作称为batch,通过batch操作可以将多个写入请求合并为一个请求。这样有如下作用: 把多次更新操作合并为一次请求,减少客户端和服务端的网络交互。 batch中同一个partition key的操作具有隔离性。
6895 0
|
Kubernetes 容器 Perl
【kubernetes】解决: kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = faile...
【kubernetes】解决: kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = faile...
15044 0
|
缓存 Linux 开发工具
CentOS 7- 配置阿里镜像源
阿里镜像官方地址http://mirrors.aliyun.com/ 1、点击官方提供的相应系统的帮助 :2、查看不同版本的系统操作: 下载源1、安装wget yum install -y wget2、下载CentOS 7的repo文件wget -O /etc/yum.
242673 0
|
10月前
|
存储 关系型数据库 文件存储
Ubuntu22.04LTS基于cephadm快速部署Ceph Reef(18.2.X)集群
这篇文章是关于如何在Ubuntu 22.04LTS上使用cephadm工具快速部署Ceph Reef(18.2.X)存储集群的详细教程,包括ceph的基本概念、集群的搭建步骤、集群管理以及测试集群可用性等内容。
2427 8
Ubuntu22.04LTS基于cephadm快速部署Ceph Reef(18.2.X)集群
|
10月前
|
存储
cephFS高可用分布式文件系统部署指南
关于如何部署高可用的cephFS分布式文件系统,包括集群的搭建、验证高可用性以及实现两主一从架构的详细指南。
514 10
|
11月前
|
运维 Kubernetes Go
"解锁K8s二开新姿势!client-go:你不可不知的Go语言神器,让Kubernetes集群管理如虎添翼,秒变运维大神!"
【8月更文挑战第14天】随着云原生技术的发展,Kubernetes (K8s) 成为容器编排的首选。client-go作为K8s的官方Go语言客户端库,通过封装RESTful API,使开发者能便捷地管理集群资源,如Pods和服务。本文介绍client-go基本概念、使用方法及自定义操作。涵盖ClientSet、DynamicClient等客户端实现,以及lister、informer等组件,通过示例展示如何列出集群中的所有Pods。client-go的强大功能助力高效开发和运维。
795 1
|
Prometheus Kubernetes 监控
K8s 安装 alertmanager 及配置
K8s 安装 alertmanager 及配置
462 1
|
存储 固态存储 Linux
开启全新存储时代:SPDK文件系统项目实战指南
开启全新存储时代:SPDK文件系统项目实战指南
|
NoSQL Linux 编译器
Linux CentOS 内核编译全流程:从安装vmware开始
Linux CentOS 内核编译全流程:从安装vmware开始
778 1
Linux CentOS 内核编译全流程:从安装vmware开始
OSZAR »