DIY NAS系列02 — 浅谈 ZFS 文件系统
本文最后更新于 208 天前,其中的信息可能已经有所发展或是发生改变。

ZFS 简介

ZFS 是一种先进的文件系统,它将传统的文件系统和卷管理器的功能集合到一起。ZFS 最初由 Sun Microsystems 开发,现在在开源社区的驱动下持续发展,被广泛应用在各种环境中,从小型家用 NAS 到大型商用存储服务器。

ZFS 提供了许多强大的特性,包括保护数据完整性、存储池、快照、克隆、数据压缩和去重、以及 RAID-Z 等。其中,保护数据完整性是 ZFS 的核心特性,通过校验和修复机制,ZFS 可以防止数据在传输和存储过程中的任何损坏。而存储池和 RAID-Z 则为用户提供了强大而灵活的存储管理能力。

在接下来的文章中,我们将介绍如何在 Rocky Linux 上部署 ZFS 文件系统,然后创建和管理存储池,最后我们还将学习如何利用 ZFS 的快照和克隆等特性来提升 NAS 系统的性能和可靠性。

ZFS 基本概念和术语

池(Pools)、虚拟设备(vdevs)、数据集(datasets)

  • :ZFS 池是为数据集提供空间的存储设备的集合。池允许您将多个物理存储设备组合成一个逻辑存储单元。
  • vdevs(虚拟设备):vdevs 是 ZFS 池的构建块。它们可以是单个磁盘、镜像、RAIDZ 组或其他类型的设备。ZFS 池由一个或多个 vdev 组成。
  • 数据集:数据集是在 ZFS 中存储和管理数据的主要方式。它们可以是文件系统、卷或快照。

ZFS 文件系统

  • ZFS 文件系统是一种分层存储系统,其行为类似于传统的 Unix 风格的文件系统。
  • 它支持所有标准文件和目录操作,如创建、删除和修改文件和目录。
  • ZFS 文件系统从其父数据集继承属性,例如压缩、重复数据删除和加密设置。
  • ZFS 文件系统可以进行快照、克隆和回滚,使其适用于管理版本化文件存储和备份。
  • 它们会自动安装在该 /pool_name/filesystem_name 目录下,并且可以像访问任何其他目录一样访问。

ZFS 卷

  • ZFS 卷是一种块设备,可以用任何文件系统格式化,例如 ext 4 或 XFS。
  • 它是一个固定大小的存储单元,充当虚拟磁盘,将原始存储呈现给其他系统或应用程序。
  • ZFS 卷不从其父数据集继承属性,也不支持快照和克隆等特定于 ZFS 的功能。
  • 在访问和使用它们之前,需要对其进行格式化和挂载。
  • ZFS 卷可用于为需要块级访问的应用程序提供存储,例如虚拟机、数据库或 iSCSI 目标。

快照和克隆

  • 快照:ZFS 快照是数据集的时间点副本。快照是节省空间的,因为它们只存储当前状态和快照状态之间的差异。
  • 克隆:ZFS 克隆是快照的可写副本。它与快照共享其存储空间,仅将额外空间用于对克隆所做的更改。

RAID 级别和冗余

ZFS 支持多种 RAID 级别和冗余机制,如镜像、RAIDZ(类似 RAID 5)、RAIDZ 2(类似 RAID 6)、RAIDZ 3。这些配置可保护您的数据免受磁盘故障的影响并提高整体数据完整性。

RAID-Z 是 ZFS 文件系统中的一种数据保护和冗余方案,它是传统的 RAID(冗余独立磁盘阵列)的一种改进版,克服了 RAID 中的 "写入洞" 问题,同时在保证数据安全性的基础上,最大化地利用了磁盘的存储空间。

RAID-Z 有三种不同的类型,分别是 RAID-Z 1,RAID-Z 2 和 RAID-Z 3。

  • RAID-Z 1:RAID-Z 1 类似于传统的 RAID 5,它允许任何一个磁盘失败,而不会导致数据丢失。它使用了一种叫做分布式奇偶校验的技术来实现数据冗余。但是,如果在替换并重建失败的磁盘期间,另一个磁盘发生故障,那么数据将会丢失。
  • RAID-Z 2:RAID-Z 2 对应的是传统的 RAID 6,它允许同时有两个磁盘失败,而不会导致数据丢失。RAID-Z 2 提供了更高的数据安全性,但是,需要牺牲更多的磁盘空间用于冗余数据存储。
  • RAID-Z 3:RAID-Z 3 是 ZFS 特有的,它允许同时有三个磁盘失败,而不会导致数据丢失。RAID-Z 3 提供了极高的数据安全性,但是,需要牺牲更多的磁盘空间用于冗余数据存储。

总的来说,RAID-Z 的不同类型提供了不同级别的数据保护。选择哪种类型,取决于你对数据安全性和存储空间利用率的权衡。

创建 ZFS 的步骤

构建 ZFS 文件系统主要需要经历以下几个步骤:

  1. 安装 ZFS:在 Rocky Linux 上,需要先安装 ZFS 的内核模块和用户空间工具。这一步骤可能会因 Linux 发行版的不同而有所区别。
  2. 创建存储池:存储池是由一个或多个物理磁盘组成的,用于存储数据的逻辑单元。在创建存储池的过程中,我们可以根据需求选择合适的 RAID-Z 等级以确保数据的冗余和安全。
  3. 创建文件系统:在存储池中,我们可以创建多个 ZFS 文件系统。每个文件系统都可以有独立的设置,比如压缩、去重、配额等。
  4. 调整文件系统设置:ZFS 允许我们在创建文件系统后,动态调整各种设置。例如,我们可以打开或关闭文件系统的压缩,也可以根据需要调整文件系统的配额。
  5. 使用和管理文件系统:创建并调整好设置后,我们就可以开始使用 ZFS 文件系统了。同时,ZFS 提供了丰富的命令行工具,帮助我们管理和监控文件系统的状态。

以上就是构建 ZFS 文件系统需要经历的基本步骤。每个步骤都包含了许多具体的操作和选择,下一篇我们将开始安装 ZFS 文件系统。

下篇预告: DIY NAS系列03 -- 安装 ZFS 文件系统

Avatar photo

关于 木子

Founder of the Rocky Linux Chinese community, MVP、VMware vExpert、TVP, advocate for cloud native technologies, with over ten years of experience in site reliability engineering (SRE) and the DevOps field. Passionate about Cloud Computing、Microservices、CI&CD、DevOps、Kubernetes, currently dedicated to promoting and implementing Rocky Linux in Chinese-speaking regions.
用一杯咖啡支持我们,每一篇 [文档] 都经过我们实操,并非从网上一味的copy,期间花费了大量的心思,希望能够帮忙到您。
暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇