ZFS了解

存储数据的管理通常涉及两个方面:对一个或多个块存储设备(如硬盘驱动器和SD卡)进行物理卷管理,并将它们组织成操作系统所看到的逻辑块设备(通常涉及卷管理器、RAID控制器、阵列管理器或合适的设备驱动程序),以及对存储在这些逻辑块设备(文件系统或其他数据存储)上的数据和文件进行管理。

与其他文件系统不同的是zfs充当着卷管理和文件系统的角色,这意味着ZFS可以创建一个跨越池和硬盘的文件系统,可以通过添加硬盘来增大池的存储容量

在这里插入图片描述

zpool是支撑zfs的最高层结构,由vdev组成

存储vdev

  • single:最简单的vdev类型,就是给定数量的硬盘

  • mirror:对于每一个写入的vdev都有一个副本

  • raidz1:1磁盘奇偶校验,类似于raid-5

  • raidz2:2磁盘奇偶校验,类似于raid-6

  • raidz3:3磁盘奇偶校验

支持vdev

  • log:作为防止崩溃的日志。在写入时会先写入log,然后到主存

  • cache:用于拓展zfs的内存缓存

  • special:允许存储系统元数据与主存分开,采用非常快的ssd,对于延迟敏感的操作(如小的数据库操作)更好

    但这也意味着如果special坏了,那就全坏。此类型在zfs0.8之后支持

  • spare:备用空间。用于驱动器发生故障时进行更换,但不能替换缓存、日志vdev

读写效率与保障

效率

zfs采用以下策略自动在pool中所有vdev分配存储数据

  • 尽可能写入相对较少数据的vdev,从而保证当池被更多地使用时,不会出现某些vdev被填满的情况。
  • 读取时从尽可能多的磁盘读取数据的不同部分,从而提供更高的读取性能

写时拷贝

在重写时将会将新数据写到不同块,在写完成之后,更新文件系统元数据使之指向新数据块。那么即使在写的时候系统崩溃,那么原数据也会被保存下来

快照

追踪文件系统的更改

数据完整性

数据完整性是通过在整个文件系统树中使用基于fletcher的校验和或SHA-256哈希来实现的。

  1. 对每个数据块进行校验和,然后将校验和值保存在指向该块的指针中,而不是保存在实际块本身中。
  2. 对块指针进行校验和,并将值保存在其指针处。
  3. 这个校验和继续沿着文件系统的数据层次结构一直到根节点,根节点也被校验和,从而创建了一个Merkle树。

大多数文件系统无法检测到运行中的数据损坏或幻读/写(数据写/读的校验和是正确的,但实际上是错误的),因为它们将校验和与数据一起存储。ZFS将每个块的校验和存储在它的父块指针中,这样整个池就可以自我验证了

在写入数据时会创建校验和,若读取时不匹配就会尝试通过冗余的数据自动修复错误

当然这种冗余带来的后果就是实际可用储存容量将会大幅下降

RAID-Z

RAID-Z是RAID-5变种,属于ZFS的RAID实现。允许更好地分配奇偶性,并消除了raid-5的”write hole“问题

wire hole问题指的是由于写过程的非原子性,系统崩溃或写操作的其他中断可能导致奇偶校验与数据不一致的状态,这样在磁盘故障的情况下,奇偶校验不能用于恢复。

RAID- z与RAID-5类似,是一种数据/校验分布方案,但使用了动态条带宽度。每个块都是自己的RAID条带,而不管块大小,因此每次RAID- z写操作都是全条带写。当与ZFS的写时复制事务语义结合使用时,可以消除write hole错误。RAID- z也比传统的RAID 5快,因为它不需要执行通常的读-修改-写序列

形形色色的不同大小,raid - z重建必须遍历文件系统元数据来确定实际的raid - z几何。如果文件系统和RAID阵列是两个独立的产品,这是不可能的,但如果数据的逻辑和物理结构有一个完整的视图,这是可行的。通过元数据意味着ZFS可以验证每个块的256位校验和,而传统的RAID产品通常不能这样做

除了处理全磁盘故障,RAID-Z还可以检测和纠正无声的数据损坏,提供“自修复数据”:当读取RAID-Z块时,ZFS将其与其校验和进行比较,如果数据磁盘没有返回正确的答案,ZFS读取校验,然后计算出哪个磁盘返回了坏数据。然后对受损数据进行修复,并将完好数据返回给请求者

RAID- z有五种不同的模式:striping(类似于RAID 0,没有冗余),RAID- z1(类似于RAID 5,允许一个硬盘故障),RAID- z2(类似于RAID 6,允许两个硬盘故障),RAID- z3 (RAID 7[a]配置,允许三个硬盘故障),镜像(类似于RAID 1,允许一个硬盘故障)

恢复

zfs没有fsck(标准unix文件系统数据检查和修复工具),而是存在一个内置的scrub用于周期性检查并修复。与fsck主要区别在于

  • fsck必须运行在脱机文件系统,这就意味着文件系统不能被挂载。而scrub则用于已经挂载的、活动的文件系统

  • FSCK通常只检查元数据(如日志日志),但从不检查数据本身。这意味着,在执行fsck之后,数据可能仍然与存储的原始数据不匹配。

    Scrub检查所有内容,包括元数据和数据

大储存

设计为128bit文件系统,这意味着每个zpool可以提供 3 ∗ 1 0 24 3*10^{24} 31024TB

Ref

  1. https://en.wikipedia.org/wiki/ZFS
  2. https://itsfoss.com/what-is-zfs/
  3. https://en.wikipedia.org/wiki/RAID
  4. https://zfs.m-jay.cn/understand-zfs
  5. https://www.reddit.com/r/zfs/comments/fn5ugg/zfs_topology_faq_whats_a_zpool_whats_a_vdev/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/73389.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot 统一功能处理

目录 一、用户登录权限验证 1.1 SpringAOP可以进行处理吗? 1.2 创建自定义拦截器 1.3 将自定义拦截器配置到系统配置项中 1.4 拦截器的实现原理 1.4.1 实现原理源码分析 1.5 统一访问前缀添加 二、统一异常处理 2.1 为什么需要使用统一异常处理?…

基于antd+vue2来实现一个简单的绘画流程图功能

简单流程图的实现&#xff08;基于antdvue2的&#xff09;代码很多哦~ 实现页面如下 1.简单操作如下 2.弹框中使用组件&#xff1a; <vfdref"vfd"style"background-color: white;":needShow"true":fieldNames"fieldNames"openUse…

day-04 基于UDP的服务器端/客户端

一.理解UDP &#xff08;一&#xff09;UDP套接字的特点 UDP套接字具有以下特点&#xff1a; 无连接性&#xff1a;UDP是一种无连接的协议&#xff0c;这意味着在发送数据之前&#xff0c;不需要在发送方和接收方之间建立连接。每个UDP数据包都是独立的&#xff0c;它们可以独…

FOXBORO FBM232 P0926GW 自动化控制模块

Foxboro FBM232 P0926GW 是 Foxboro&#xff08;福克斯博罗&#xff09;自动化控制系统的一部分&#xff0c;通常用于监测和控制工业过程。以下是关于这种类型的自动化控制模块可能具有的一些常见功能&#xff1a; 数字输入通道&#xff1a; FBM232 P0926GW 控制模块通常具有多…

【漏洞库】Fastjson_1.2.24_rce

文章目录 漏洞描述漏洞编号漏洞评级影响版本漏洞复现- 利用工具- 漏洞环境- 漏洞扫描- 漏洞验证- 深度利用- GetShell- EXP 编写 漏洞挖掘- 指纹信息 修复建议- 漏洞修复 漏洞原理 漏洞描述 Fastjson 存在反序列化远程代码执行漏洞&#xff0c;当应用或系统使用 Fastjson 对由…

十一、做高并发内存池项目过程中遇到的bug以及调试bug的方法和心得

十一、做高并发内存池项目过程中遇到的bug以及调试bug的方法和心得 第一个bug是内存问题&#xff0c;程序直接崩溃&#xff0c;问题出现在&#xff1a;GetOneSpan函数中的切分span的时候结尾的span1的next没有置空。 第二个bug是还小内存块给span的时候找不到小内存所属的spa…

使用Android原生制作毛玻璃效果图片

毛玻璃效果&#xff0c;也被称为模糊效果&#xff0c;是许多现代应用中流行的一种视觉效果。在 Android 中&#xff0c;我们可以通过多种方式实现该效果。本文将探讨如何使用 Android 原生的 Bitmap 类和 RenderScript 来实现毛玻璃效果。 1. 准备工作 首先&#xff0c;你需要…

BLE Mesh蓝牙mesh网多跳大数据量高带宽传输数据方法

1、BLE Mesh数据传输现状 BLE Mesh网络技术是低功耗蓝牙的一个进阶版&#xff0c;Mesh扩大了蓝牙在应用中的规模和范围&#xff0c;因为它同时支持超过三万个网络节点&#xff0c;可以跨越大型建筑物&#xff0c;不仅可以使得医疗健康应用更加方便快捷&#xff0c;还能监测像学…

IDea寻找冲突的依赖包

场景&#xff1a;boot项目运行时&#xff0c;提示log4j2依赖包冲突。 SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/D:/maven/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar!/org/slf4j/impl/Stati…

HTML5Plus

之前写过在 vue 中使用 mui 框架的方法&#xff0c;因为用 vue 开发后打包 5App 会有一些问题&#xff0c;所以当时用到了&#xff0c;最近又一次开发移动端&#xff0c;不同的是这次使用的是 vue3 开发的&#xff0c;导致之前使用的 vue-awesome-mui 依赖不能使用了&#xff0…

快速完成工信部APP备案流程_以阿里云APP备案为例

阿里云APP备案流程分为6步&#xff0c;APP备案成功后应用可以上架&#xff0c;登录阿里云账号填写APP信息&#xff0c;等待阿里云初审&#xff0c;初审通过后进行工信部短信核验&#xff0c;管局审核通过后APP即可备案成功&#xff0c;最后移动APP应用可以分发平台上架&#xf…

网络层重点协议-IP协议(结构分析)

IP协议数据报格式 一.4位版本号 用来表示IP协议的版本&#xff0c;现有的IP协议只有两个版本IPv4和IPv6 二.4位首部长度 IP协议数据报报头的长度 三.8位服务类型 3位优先权字段&#xff08;已经弃用&#xff09;&#xff0c;4位TOS字段&#xff0c;和1位保留 字段&#xff08;必…

企业的固定资产管理怎么操作

企业是一家拥有多台大型设备的工厂&#xff0c;这些设备需要定期进行保养和维护&#xff0c;以确保其正常运转。而企业内部员工由于专业知识和技能的不同&#xff0c;需要分工协作才能更好地完成各项工作任务。因此&#xff0c;在设备资产管理方面&#xff0c;如何实现高效、便…

SpringBoot常用注解

SpringBoot常用注解 SpringBoot摒弃了xml配置方式&#xff0c;改为了全注解驱动。 准备 创建SpringBoot模块 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"ht…

使用JS实现一个简单的观察者模式(Observer)

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 手撸Observer⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领…

Unity之3D物理导航系统

一 介绍 Unity自带寻路(导航)系统是unity官方自带的一种寻路系统。我们可以通过它来制作简单的寻路&#xff0c;比如可以制作点击某个位置&#xff0c;让角色自动的绕开障碍走到目标点的效果&#xff0c;比如可以制作敌人AI&#xff0c;让它可以通过NavMesh绕开障碍追击我方单…

深入理解 JVM 之——字节码指令与执行引擎

更好的阅读体验 \huge{\color{red}{更好的阅读体验}} 更好的阅读体验 类文件结构 Write Once&#xff0c;Run Anywhere 对于 C 语言从程序到运行需要经过编译的过程&#xff0c;只有经历了编译后&#xff0c;我们所编写的代码才能够翻译为机器可以直接运行的二进制代码&#x…

【web开发】4、JavaScript与jQuery

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、JavaScript与jQuery二、JavaScript常用的基本功能1.插入位置2.注释3.变量4.数组5.滚动字符 三、jQuery常用的基本功能1.引入jQuery2.寻找标签3.val、text、appe…

笔记 | 排序算法实现(Python)

排序算法 一、选择排序二、合并/归并排序三、快速排序四、计数排序 排序类型时间复杂度选择排序(Selection Sort) O ( n 2 ) O(n^{2} ) O(n2)合并/归并排序&#xff08;Merge Sort&#xff09; O ( n log ⁡ n ) O(n\log n ) O(nlogn)快速排序(Quick Sort)平均情况 O ( n log ⁡…

帧动画实现

背景&#xff1a; pag实现痛点 文档&#xff1a;libpag参考文档 1.打包依赖的类型缺失问题 2.pagview初始化文件过大,影响小程序打包 3.兼容性较差关键帧动画实现痛点: 当关键帧变化过多的时候&#xff0c;无法准确分辨出需要写出多少个关键帧&#xff0c;以及各个关键帧的具…