一、简介

  1、什么是zfs文件系统

    ZFS文件系统的英文名称为Zettabyte File System,也叫动态文件系统(Dynamic File System),是第一个128位文件系统。最初是由Sun公司为Solaris 10操作系统开发的文件系统。作为OpenSolaris开源计划的一部分,ZFS于2005年11月发布,被Sun称为是终极文件系统,经历了 10 年的活跃开发。而最新的开发将全面开放,并重新命名为 OpenZFS。

  2、ZFS具有三个主要涉及目标

    数据完整性:所有数据都包括数据的校验和。写入数据时,将计算并写入校验和。以后再读回该数据时,将再次计算校验和。如果校验和不匹配,则检测到数据错误。 当数据冗余可用时,ZFS将尝试自动更正错误。

    池存储:将物理存储设备添加到池中,并从该共享池中分配存储空间。所有文件系统都可以使用空间,可以通过向池中添加新的存储设备来增加空间。

    性能:多种缓存机制可提高性能。 ARC是基于内存的高级读取缓存。可以在L2ARC中添加基于磁盘的第二级读取缓存 ,并在ZIL中提供基于磁盘的同步写入缓存 。

  3、ZFS与其他文件系统有什么不同那?

    ZFS与以前的任何文件系统都有显着不同,因为ZFS不仅仅是文件系统。将传统上独立的卷管理器和文件系统角色结合在一起,为ZFS提供了独特的优势。文件系统现在知道了磁盘的基础结构。传统文件系统一次只能在单个磁盘上创建。如果有两个磁盘,则必须创建两个单独的文件系统。在传统的硬件RAID中在配置中,通过为操作系统提供由多个物理磁盘提供的空间组成的单个逻辑磁盘,可以避免此问题,操作系统在其上面放置了文件系统。即使在像GEOM提供的软件RAID解决方案 的情况下, 位于RAID转换之上的UFS文件系统也认为它正在处理单个设备。 ZFS的卷管理器和文件系统的组合解决了这个问题,并允许创建许多共享可用存储池的文件系统。ZFS的最大优势之一对磁盘物理布局的了解是,当将其他磁盘添加到池中时,现有文件系统可以自动增长。然后,此新空间可用于所有文件系统。 ZFS还具有可应用于每个文件系统的许多不同属性,与创建单个文件系统相比,创建多个不同文件系统和数据集具有许多优势。  

二、ZFS特性术语

  1、ZFS特性概况

      • 存储池
      • 写时拷贝 copy-on-write
      • 快照
      • 数据完整性验证和自动修复
      • RAID-Z
      • 最大单个文件大小为 16 EB(1 EB = 1024 PB)
      • 最大 256 千万亿(256*1015 )的 ZB(1 ZB = 1024 EB)的存储

  2、存储池

    ZFS结合了文件系统和卷管理器特性,与其他文件系统不同,ZFS可以创建跨越一系列硬盘或池的文件系统,还可以通过添加硬盘来增大池的存储容量,ZFS可以进行分区和格式化

    一个池由一个或多个vdev组成

  3、写时复制技术

    与传统文件系统不同,当在ZFS上覆盖数据室,新数据将被写入不同的块,而不是原地覆盖,仅在完成写入后,才更新元数据以指向新位置,如果发生大体量写入发送断电或系统崩溃,文件的整个原始内容仍然可用,并且不完整的写入将被丢弃,这也意味这意外关闭后,ZFS不需要运行fsck来检查和修复文件系统。

  4、快照

    写时复制使得 ZFS 有了另一个特性: 快照(snapshots)。ZFS 使用快照来跟踪文件系统中的更改。 快照 包含文件系统的原始版本(文件系统的一个只读版本),实时文件系统则包含了自从快照创建之后的任何更改。没有使用额外的空间。因为新数据将会写到实时文件系统新分配的块上。如果一个文件被删除了,那么它在快照中的索引也会被删除。所以,快照主要是用来跟踪文件的更改,而不是文件的增加和创建。

快照可以挂载成只读的,以用来恢复一个文件的过去版本。实时文件系统也可以回滚到之前的快照。回滚之后,自从快照创建之后的所有更改将会丢失。

  5、数据完整性验证和自动修复

    当向 ZFS 写入新数据时,会创建该数据的校验和允许将文件系统分叉为新的数据集。在读取数据的时候,使用校验和进行验证。如果前后校验和不匹配,那么就说明检测到了错误,然后,ZFS 会尝试从任何的冗余(RAID-Z或镜像)中恢复数据,验证命令为scrub。

   6、重复数据删除

    checksums的使用使得检测重复数据成为可能,通过重复数据删除,可增加现有相同块的参考计数,从而节省存储空间,为了检测重复块,重复数据删除表(DDT)被保留在内存中,该表包含了唯一的校验和,写入数据时,将计数校验和并将其与表进行比较,如果匹配,就使用该块,但DDT会消耗内存,一般1TB重复数据删除需要5-6GB的内存,影响性能,所以可以使用L2ARC存储DDT,从而提供中间地带,还有不考虑内存和磁盘的话,可以考虑压缩来解决空格键,从而无需额外的内存。

  7、数据集

    ZFS文件系统,卷,快照或克隆的通用术语,每个数据据都有一个格式唯一的名称poolname/path@snapshot

  8、RAIDZ

    ZFS不需要任何额外软件或硬件就可以处理RAID,这个就是RAID-Z,RAID-Z是RAID-5的一个变种,不过它克服了RAID-5的写漏洞(意外重启,数据和校验不同步,条带写入数据时发送意外断电,奇偶校验将跟部分数据不同步,前面写入的无效),RAID-Z使用了可变宽的RAID条带技术,因此所有的写都是全条带写入。RAID-Z有三个级别RAID-Z1、RAID-Z2、RAID-Z3。

    三个级别:

    RAIDZ1:与RAID5类似,一重机构校验,至少需要三块磁盘;

    RAIDZ2:与RAID6类似,双重奇偶校验,至少需要四个磁盘;

    RAIDZ3:ZFS特有的,三重奇偶校验,至少需要5个磁盘;

三、freenas介绍

  1、了解freenas

    freenas是一种免费的开源网络存储(NAS)软件设备,这意味着您可以使用freenas通过基于文件的共享协议共享数据

    支持SMB/CIFS(windows)、NFS、AFP(apple文件共享)、FTP、iscsi(块共享)

    freenas使用了ZFS(openZFS)文件来存储,管理和保护数据,ZFS提供了高级功能,例如快照可以保留文件的旧版本,增量远程备份以使数据安全地保存在另一台设备上而无需进行大量文件传输,以及智能压缩等

    freenas是使用高度安全的freeBSD操作系统,并遵循开发中的安全最佳实践

    freenas支持256位加密以防止在从系统中物理删除驱动器时读取驱动器

  2、freenas卷结构

   那么在创建存储池时,可以指定存储池结构(volume layout)也叫卷结构,如下可以选择几种结构

     stripe:与RAID0类似,磁盘条带,至少需要一个磁盘;

     mirror:与RAID1类似,磁盘镜像,至少需要两个磁盘;

     RAIDZ1:与RAID5类似,一重机构校验,至少需要三块磁盘;

     RAIDZ2:与RAID6类似,双重奇偶校验,至少需要四个磁盘;

     RAIDZ3:ZFS特有的,三重奇偶校验,至少需要5个磁盘;

     log(ZIL):高速写缓存设备,至少需要一个专用设备,建议使用具有停电保护的SSD;

     Cache(L2ARC):高速读缓存设备,需要至少一个专用设备,建议使用具有停电保护的SSD;

     Spare:热备磁盘,当正在使用的磁盘发送故障后,Spare磁盘将马上代替此故障盘。

  2、性能对比

    strpe>mirror

    strpe>RAIDZ1>RAIDZ2>RAIDZ3

  3、数据可靠性

    mirror>stripe

    RAIDZ3>RAIDZ2>RAIDZ1>Stripe

  4、详细说明

    Stripe是把连续的数据分割成相同大小的数据块,把每段数据分别写入到阵列中的不同磁盘上的方法。简单的说,条带是一种将多个磁盘驱动器合并为一个卷的方法。这就能使多个进程同时访问数据的多个不同部分而不会造成磁盘冲突,而且在需要对这种数据进行顺序访问的时候可以获得最大程度上的 I/O 并行能力,从而获得非常好的性能。但是,这种存储池结构没有数据冗余,一旦Stripe中的任意一块磁盘出现问题,那么Stripe中存储的所有数据都随风而去了。

    Mirror是冗余的一种类型,通过磁盘数据镜像实现数据冗余,ZFS对镜像中的磁盘数量没有限制,在Mirror中的磁盘上存储互为备份的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此Mirror可以提高读取性能。这是存储池结构中单位成本最高的,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,此时可以替换失效磁盘进行数据恢复。

    RAIDZ是ZFS提供的数据冗余方式,同时解决硬件RAID的一些固有限制,例如在硬件控制器提供警报之前随时间写入的写入漏洞和损坏数据。ZFS提供三种冗余级别,称为RAIDZ*,其中RAIDZ之后的数字表示每个vdev可丢失多少个磁盘而不丢失数据。下面是一些关于RAIDZ的官方建议:

    1. RAIDZ1拥有最大的磁盘空间,当数据以大块(128K或更多)写入和读取时,性能会很好。
    2. 与RAIDZ1相比,RAIDZ2提供更好的数据可用性和更好的平均数据丢失时间(MTTDL),而RAIDZ3更比RADIZ2安全。更多的校验镜像消耗更多的磁盘空间,但通常小型随机读取会更好。为了获得更好的性能,镜像强烈支持任何RAIDZ,特别是对于大容量,不可缓存的随机读取负载。
    3. 不建议每个vdev使用多于12个磁盘。每个vdev的建议磁盘数量介于3和9之间。如果有更多磁盘,请使用多个vdevs。
    4. 一些较早的ZFS文档建议每种类型的RAIDZ都需要一定数量的磁盘,以实现最佳性能。
    5. ZFS专为商用磁盘而设计,因此不需要RAID控制器。虽然ZFS也可以与RAID控制器一起使用,但建议将控制器置于HBA模式,以便ZFS完全控制磁盘。
    6. 当存储池容量达到90%时,ZFS会从性能切换到基于空间的优化,这对性能有很大的影响。为了获得最大写入性能并防止驱动器更换出现问题,请在池达到80%之前添加更多容量。如果在存储池中提供了iSCSI服务,建议不要让池的容量超过50%以防止碎片问题。
    7. 考虑每个vdev使用的磁盘数时,请考虑磁盘的大小以及重新同步所需的时间,即重建vdev的过程。vdev的大小越大,重新同步时间越长。在更换RAIDZ中的磁盘时,在重新同步过程完成之前,另一个磁盘可能会失效。如果故障磁盘的数量超过RAIDZ类型的每个vdev所允许的数量,则池中的数据将丢失。所以,RAIDZ1不推荐用于大小超过1TB的驱动器。
    8. 建议在创建vdev时使用相同大小的驱动器。尽管ZFS可以使用不同大小的磁盘创建vdev,但其容量将受到最小磁盘大小的限制。

引用参考:

https://www.xiangzhiren.com/archives/283

https://www.ixsystems.com/documentation/freenas/11.2-U6/intro.html

https://www.sohu.com/a/255432210_100034897

https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/zfs.html

转载请注明出处:https://www.cnblogs.com/zhangxingeng/p/11646542.html

ZFS文件系统及Freenas介绍的更多相关文章

  1. Unix下zfs文件系统重组RAID-5后可以这样恢复

    存储做的RAID-5, SCSI硬盘,操作系统是FreeBSD,文件系统是zfs.本案例共有12块硬盘,11块硬盘里有数据,1块硬盘是热备盘.其中第6块数据硬盘出现故障,重组时需要将其剔除. 物理盘: ...

  2. 什么是 ZFS文件系统?ZFS概念及特点简介

    什么是 ZFS? ZFS(Zettabyte File System)是由SUN公司的Jeff Bonwick领导设计的一种基于Solaris的文件系统,最初发布于20014年9月14日. SUN被O ...

  3. Ext3文件系统及JDB介绍

    Ext3介绍 对于ext3文件系统,磁盘空间划分一系列block groups,每个group有位图来跟踪inode和data块的分配和范围.其物理布局如下: Superblock:位于group内第 ...

  4. 分布式文件系统FastDFS原理介绍

    在生产中我们一般希望文件系统能帮我们解决以下问题,如:1.超大数据存储:2.数据高可用(冗余备份):3.读/写高性能:4.海量数据计算.最好还得支持多平台多语言,支持高并发. 由于单台服务器无法满足以 ...

  5. zfs文件系统简单使用

    关于ubuntu下zfs的使用参考:https://github.com/zfsonlinux/zfs/wiki/Ubuntu%2016.04%20Root%20on%20ZFS 安装zfs: 启动z ...

  6. CentOS7使用ZFS文件系统

    默认情况下,CentOS7并没有含ZFS支持的文件和,需要进行更新和安装第三方库. Step 1:安装第三方库和更新系统 [root@localhost ~]# rpm -Uvh http://www ...

  7. 怎样在 Ubuntu 上使用 ZFS 文件系统 | Linux 中国

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/F8qG7f9YD02Pe/article/details/79329762 http://mmbiz ...

  8. linux系统文件系统重要知识介绍

    [root@Asterplus:~]$ls -lhitotal 48K3684713 -rw------- 1 root root 5.9K Jul 1 00:23 anaconda-ks.cfg36 ...

  9. WPF通用框架ZFS《项目结构介绍01》_模块介绍

    首页介绍: 下图为项目运行首页图片, 大的结构分为三块: 1.Header首部模块(存放通知组件[全局通知.消息管理 ].扩展模块[皮肤.系统设置.关于作者.退出系统]) 2.Left左侧菜单模块(存 ...

随机推荐

  1. tensorflow学习笔记(二)

    tensorflow中自带的mnist手写数字识别,运用最简单的单层神经网络,softmax激活函数,极客学院上说准确率有91%,我今天调整到了92%! import tensorflow as tf ...

  2. Comparison of SIFT Encoded and Deep Learning Features for the Classification and Detection of Esca Disease in Bordeaux Vineyards(分类MobileNet,目标检测 RetinaNet)

    识别葡萄的一种虫害,比较了传统SIFT和深度学习分类,最后还做了目标检测 分类用的 MobileNet,目标检测 RetinaNet MobileNet 是将传统深度可分离卷积分成了两步,深度卷积和逐 ...

  3. Beta冲刺(2/5)

    队名:無駄無駄 组长博客 作业博客 组员情况 张越洋 过去两天完成了哪些任务 数据库实践 提交记录(全组共用) 接下来的计划 加快校园百科的进度 还剩下哪些任务 学习软工的理论课 学习代码评估.测试 ...

  4. hdoj - 1248 寒冰王座

    Problem Description 不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票(记住,只有一张钞票),为了防止自己在战斗中频繁的死掉,他决定给自己买一些道具,于是他来到了地精商店前.死亡骑 ...

  5. 第06组 Alpha冲刺(2/4)

    队名:福大帮 组长博客链接:https://www.cnblogs.com/mhq-mhq/p/11885037.html 作业博客 :https://edu.cnblogs.com/campus/f ...

  6. 解读 | 你真正理解什么是Cloud Native吗?

    你能做到每周.每天甚至每个钟头向客户发布新特性吗?新加入的开发者能够在他们工作的第一天甚至面试阶段就能部署代码吗?部署新员工的代码后,你能因为确信应用程序运行正常而安然入睡吗?建立快速发布机制,包括支 ...

  7. vue 创建监听,和销毁监听(addEventListener, removeEventListener)

    最近在做一个有关监听scroll的功能, 发现我添加监听之后一直不起作用: 1 2 mounted() {     window.addEventListener("scroll" ...

  8. VMware7.1安装教程

    VMWare是一个"虚拟PC"软件公司.它的产品可以使你在一台机器上同时运行二个或更多Windows.DOS.LINUX系 统.与"多启动"系统相比,VMWar ...

  9. (二)OpenCV-Python学习—对比度增强

    ·对于部分图像,会出现整体较暗或较亮的情况,这是由于图片的灰度值范围较小,即对比度低.实际应用中,通过绘制图片的灰度直方图,可以很明显的判断图片的灰度值分布,区分其对比度高低.对于对比度较低的图片,可 ...

  10. ElasticSearch5.2.2 安装(老版本)

    https://www.elastic.co/downloads/elasticsearchElasticSearch是一个高可扩展的开源的全文搜索分析引擎.它允许你快速的存储.搜索和分析大量数据.E ...