TrueNAS磁盘扩容(VDEV 和 RAID 技术)

目录

  • 背景
  • 扩容前准备
    • 扩容有风险
    • 安装新的硬盘到卡槽
    • 扩容测试
    • 一个VDEV
    • 两个VDEV
  • 正式扩容
  • 关于Raid
  • 总结

背景

    这几天将原来windows服务器上的文件拷贝到新做好的TrueNAS上,发现磁盘满了,服务器上还有硬盘卡槽,就新买了12块盘,准备扩容。
在这里插入图片描述

扩容前准备

扩容有风险

    其实给 TrueNAS 扩容可能会有一些风险,这是因为扩容涉及到数据存储和磁盘管理,如果不小心操作可能会导致数据丢失或系统损坏。
    在扩大存储池或卷的大小时,如果没有正确地将数据从一个位置移动到另一个位置,就有可能丢失数据。例如,在将磁盘添加到存储池或卷时,如果没有正确地分配磁盘空间,就有可能覆盖现有数据或使数据无法访问。
    如果在扩容过程中断电、断网或出现其他错误,可能会导致文件系统损坏。这可能会导致数据损坏或无法访问。或者如果正在使用的磁盘已经损坏,扩容可能会加重磁盘负载,并导致更多的磁盘故障。

安装新的硬盘到卡槽

红框中是将要新增硬盘的卡槽(硬盘都是用螺丝固定在卡槽上的)
在这里插入图片描述
一定记得装好之后将所有卡槽推进去,灯全亮
在这里插入图片描述

扩容测试

    其实在第一次安装完Truenas系统之后,在进行存储池设置的时候,也就是拷贝数据之前我是进行过扩容测试的,再正式说扩容之前,先说下关于简单说下VDEVs,后面会详细介绍。

    VDEVs (Virtual Device)是组成存储池的基本构建块,在 TrueNAS 中,可以通过组合不同类型的 VDEVs 来创建存储池,并根据需求配置数据保护和性能。存储池是由一个或多个 VDEVs 组成的逻辑存储单元。创建存储池时,可以选择将多个 VDEVs 组合在一起以扩展存储容量或增加数据冗余。过在存储池中使用不同类型的 VDEVs,可以配置数据保护级别,确保数据的安全性和可靠性。例如,可以使用镜像 VDEVs 实现数据完全镜像,或者使用 RAIDZ VDEVs 实现数据条带化和冗余。
在前面一篇博客中有讲过存储池和数据集,现在又来了一个VDEVs,它们之前什么关系呢?

    存储池就像是整个房子一样。它是一个大的容器,用于存放所有的数据。存储池可以由一个或多个 VDEVs 组成,就像一个房子可以由不同的房间构成。VDEVs 就好比房子中的房间。每个 VDEV 是存储池中的一个独立子集,可以包含物理磁盘、文件、分区等不同类型的存储设备。这些房间(VDEVs)可以独立地进行管理和配置,就像房子中的各个房间可以分别装修和布置。

    数据集可以比喻为房间里的抽屉。每个数据集都是存储池中的一个逻辑单元,用于组织和存储特定类型的数据。就像在房间里使用抽屉来整理和存放物品一样,数据集更好地组织和管理存储池中的数据。

    也就是一个存储池可以包含多个 VDEVs,而每个 VDEVs 可以包含多个数据集。

    如果这样还不是很好理解,就看下面的例子

创建存储池
在这里插入图片描述
选择硬盘之后此处默认会有一个数据VDev点击箭头添加硬盘,选择Raid类型点击创建,我这里选择的是RAIDZ3
在这里插入图片描述
这里来说一下一个VDEVs和两个VDEVs的区别

一个VDEV

在这里插入图片描述
    可以看到上面的单个磁盘大小显示的是12.73T,实际上硬盘是14T,这里显示12.37T的原因可能是启用了空间保留功能,保留一些磁盘空间作为写入缓存,以提高数据写入性能。启用此功能后,TureNAS 将显示可用空间小于实际物理容量。在某些情况下,空间保留也可以防止空间耗尽,从而导致系统崩溃。

    另外这里需要注意,TureNAS 采用ZFS 文件系统格式,在使用 ZFS 文件系统时,一个池中的所有设备必须具有相同的容量,因此如果池中有一个容量较小的设备,它将限制整个池的容量。所以买盘的时候尽量选择大小一致的盘。

    另外,ZFS 还需要一些空间用于元数据和磁盘块分配。在 TureNAS 中,ZFS 还会保留一定的空间作为快照。这些因素都可能导致总可用空间小于设备的实际容量。

    再来简单说下RAIDZ3 (后面也还会再介绍)。RAIDZ3 是一种基于 ZFS 文件系统的磁盘阵列技术,它提供了比传统 RAID 类型更高的容错能力。在 RAIDZ3 中,每个 stripe 组包含一个或多个数据块和三个纠错编码块(parity block)。三个纠错编码块中的任何一个都可以恢复任意单个硬盘的数据,这意味着在 RAIDZ3 中可以同时容忍任意三个硬盘的故障。在具有 N 个硬盘的 RAIDZ3 阵列中,N - 3 块硬盘用于存储数据,而剩余的3块硬盘用于保存纠错编码块。如果使用 12 块 14T 的硬盘划分为一个 RAIDZ3 VDEV,则将有 9 块硬盘用于存储数据,而剩下的 3 块硬盘用于存储纠错编码

    现在来算一下RAIDZ3 单个 VDEV 情况:

  • 磁盘大小:12.73T(按照上图中给的数据)
  • RAIDZ3,VDEVs 数量为 1
  • Total raw Capacity 为 114.58T

对于单个 VDEV 的情况,有 12.73T 的每块磁盘,减去 3 个用于纠错编码的磁盘,剩下 9个 用于数据存储。因此,总的原始容量为:

12.73 * 9= 114.57T(四舍五入可能就成114.58T)

两个VDEV

在这里插入图片描述

    经过上面的分析,现在算一下有两个 VDEVs 情况。
    如果使用两个 RAIDZ3 VDEVs,要将磁盘分成两组,每组 6 块硬盘。每组中3 个用于纠错编码的磁盘,剩下 3* 12.73T = 38.19T 可用于数据存储。
    两组的总容量:38.19*2=76.38T(四舍五入可能就成76.39T)

    根据标准的 RAIDZ3 计算方式,单个 VDEV 的总原始容量是 114.58T,而两个 VDEV 的总原始容量是76.38T。可以看出每一个VDEV都是单独的个体,都有单独的纠错编码盘。

    在 ZFS 存储池中,每个 VDEV 都会应用 ZFS 的数据完整性保护机制,如校验和和镜像等。

    选择更多的 VDEV 可以增加存储池的总体可靠性和冗余性,因为数据可以分布在多个磁盘上,并且可以通过镜像或者 RAID-Z 等方式实现数据冗余和纠错功能。这意味着即使某个 VDEV 中的某个磁盘发生故障,存储池仍然可以继续运行,并且不会丢失数据。

    然而,选择更多的 VDEV 也会导致存储池的存储容量减少,因为一部分空间被用于实现冗余和纠错。因此,在选择 VDEV 数量时,需要权衡存储容量、性能和可靠性之间的关系。

    总的来说,选择更多的 VDEV 可以提高存储池的安全性和可靠性,但会牺牲一定的存储容量。如果重视数据可靠性和冗余性,选择多个 VDEV 是一个不错的选择。

    后面拷贝数据进行了 一下测试,没有问题

正式扩容

1、将新磁盘添加到池(显示的14块,除了12块新硬盘,还有之前放进去的两个固态,用来做读缓存用的)
在这里插入图片描述

2、选择现有池
在这里插入图片描述

3、数据–布局仍然使用RAIDZ3,12块,一个VDEVs(注意这里是一个新的VDEVs)

    在 ZFS 中,一个 VDEV 的大小是在创建时确定的,无法像传统的 RAID 那样动态地扩展。因此,在扩展存储池容量时,通常需要添加一个新的 VDEV 来实现。

    当向现有池添加新的存储设备时,无法将这些设备直接附加到现有的 VDEV 上,因为每个 VDEV 的大小和配置在创建时就已经确定了。ZFS 的设计理念是确保数据的完整性和可靠性,因此在扩展存储池时,最常见的做法是添加一个新的 VDEV,并将其加入到存储池中以增加总的存储容量。

在这里插入图片描述

4、缓存(仍然使用固态两块)
在这里插入图片描述

5、Review

在这里插入图片描述

关于Raid

    在 TrueNAS 中,可以根据自己的需求选择合适的存储模式来配置存储系统。不同的存储模式提供了不同的容错能力和性能特点,用户可以根据自己的需求进行选择。

  • 条带模式(Stripe):

    每个磁盘都用于存储数据,没有数据冗余。最少需要一个磁盘,但是如果其中一个磁盘损坏,整个数据集将会丢失。这种模式在性能方面表现最佳,但数据最不安全,不适合存储关键数据。

  • 镜像 (Mirror):

    每个磁盘中的数据都是相同的,提供了最高级别的冗余。至少需要两个磁盘来创建镜像,但容量利用率较低。

  • RAID-Z:

    使用一个磁盘进行奇偶校验,而其他磁盘存储数据。至少需要三个磁盘。RAID-Z 提供了一定程度的冗余,最多允许损坏1块硬盘数据仍能安全存储。

  • RAID-Z2:

    使用两个磁盘进行奇偶校验,而其他磁盘存储数据。至少需要四个磁盘。RAID-Z2 提供了更高级别的冗余,最多允许损坏2块硬盘数据仍能安全存储。

  • RAID-Z3:

    使用三个磁盘进行奇偶校验,而其他磁盘存储数据。至少需要五个磁盘。RAID-Z3 提供了最高级别的冗余,最多允许损坏3块硬盘数据仍能安全存储。

总结

    本文主要介绍了如何在 TrueNAS 中进行磁盘扩容,并在此过程中提到了 VDEV 类型和 RAID 技术。磁盘扩容是指向现有存储系统添加更多的磁盘空间,以增加总容量和满足不断增长的存储需求。在 TrueNAS 中,可以选择不同的 VDEV 类型,如条带式、镜像、RAID-Z 等,来组合磁盘以创建存储池,并通过添加新的 VDEV 来实现磁盘扩容。这样可以有效地平衡性能、容量和冗余需求,提供稳定可靠的存储解决方案。

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

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

相关文章

中国留学生被“虚拟绑架”?AI让电信诈骗更加逼真,我们该怎么识别?

目录 AI让电信诈骗如虎添翼 如何防范冒充熟人的电信欺诈? 近日,一起针对海外留学生群体的新型电信网络诈骗案引发关注。中国驻美国使馆发言人证实,一名疑似遭绑架的中国留学生实际上遭遇了“虚拟绑架”诈骗。 诈骗分子冒充公检法机关、使馆、…

vue通过获取url中的信息登录页面

在主界面获取到url的信息 html <script>let getRequest function () {var url location.href// 从 URL 中提取查询参数部分const queryParamsString url.split(?)[1];// 使用 URLSearchParams 解析查询参数const queryParams new URLSearchParams(queryParamsStrin…

ArcEngine开发arcToolbox中视域分析

(1)简介 (2)文档参考 Viewshed_sa <in_raster> <in_observer_features> <out_raster> {z_factor} {FLAT_EARTH | CURVED_EARTH} {refractivity_coefficient} ParameterExplanationData Type<in_raster>Input raster. Composite Geodataset<in…

通俗易懂的L0范数和L1范数及其Python实现

定义 L0 范数&#xff08;L0-Norm&#xff09; L0 范数并不是真正意义上的一个范数&#xff0c;因为它不满足范数的三角不等式性质&#xff0c;但它在数学优化和信号处理等领域有着实际的应用。L0 范数指的是向量中非零元素的个数。它通常用来度量向量的稀疏性。数学上表示为…

升级项目.Net Framework版本遇到错误

报错信息 Microsoft.Common.CurrentVersion.targets(1229, 5): [MSB3644] 找不到 .NETFramework,Versionv4.5,ProfileClient 的引用程序集。要解决此问题&#xff0c;请为此框架版本安装开发人员工具包(SDK/目标包)或者重新定向应用程序。可在 https://aka.ms/msbuild/develope…

【C语言】通讯录(静态版本+动态版本)思路解析+完整源代码

通讯录 由于代码比较长&#xff0c;为了增加可读性&#xff0c;分成了contact.h&#xff0c;contact.c&#xff0c;test.c&#xff0c;分别用来声明函数或者类型&#xff0c;实现函数功能&#xff0c;测试代码 contact.h 我们希望通讯录具有增加联系人&#xff0c;删除联系人…

2024年 前端JavaScript入门到精通 第一天 笔记

主要讲解JavaScript核心知识&#xff0c;包含最新ES6语法&#xff0c;从基础到API再到高级。让你一边学习一边练习&#xff0c;重点知识及时实践&#xff0c;同时每天安排大量作业&#xff0c;加深记忆&#xff0c;巩固学习成果。 1.1 基本软件与准备工作 1.2 JavaScript 案例 …

standalone安装部署

standalone是spark的资源调度服务&#xff1b;作用和yarn是一样的&#xff1b;standlone运行时的服务&#xff1a; master服务&#xff1b;主服务&#xff1b;管理整个资源调度&#xff1b;资源的申请需要通过master进行分配&#xff1b;类似于yarn里的ResourceManager;&#x…

v63.函数

1.初见函数 代码中有部分非常单纯/重复&#xff0c;可以将它取出来&#xff0c;制作成函数&#xff0c;而且可以反复调用。 代码复制是程序质量不良的表现。 可以使用函数优化代码&#xff0c;可以反复调用。 2.函数的定义和使用 函数整体由函数头&#xff0b;函数体组成函数…

【HarmonyOS】鸿蒙开发之prompt组件——第3.3章

prompt组件简介 prompt组件一共有三种弹出框: showToast&#xff08;&#xff09;showDialog&#xff08;&#xff09;showActionMenu&#xff08;&#xff09; 一.显示一个Toast showToast函数内参数说明如下: message&#xff1a;提示文本&#xff0c;必填项。 duratio…

【qt创建线程两种方式】

QT使用线程的两种方式 1.案例进度条 案例解析&#xff1a; 如图由组件一个进度条和三个按钮组成&#xff0c;当点击开始的时候进度条由0%到100%&#xff0c;点击暂停&#xff0c;进度条保持之前进度&#xff0c;再次点击暂停变为继续&#xff0c;点击停止按钮进度条停止。 案…

从可靠性的角度理解 tcp

可靠性是 tcp 最大的特点。常见的用户层协议&#xff0c;比如 http, ftp, ssh, telnet 均是使用的 tcp 协议。可靠性&#xff0c;即从用户的角度来看是可靠的&#xff0c;只要用户调用系统调用返回成功之后&#xff0c;tcp 协议栈保证将报文发送到对端。引起不可靠的表现主要有…

【大模型 知识图谱】ChatKBQA:KBQA知识图谱问答 + 大模型

ChatKBQA&#xff1a;KBQA知识图谱问答 大模型 提出背景传统方法处理流程ChatKBQA处理流程对比优势 总结ChatKBQA框架概览特征1&#xff1a;逻辑形式生成特征2&#xff1a;无监督实体和关系检索特征3&#xff1a;参数高效的微调特征4&#xff1a;GQoT 可解释的查询执行特征5&a…

git stash 正确用法

目录 一、背景 二、使用 2.1 使用之前&#xff0c;先简单了解下 git stash 干了什么&#xff1a; 2.2 git stash 相关命令 2.3 使用流程 1. 执行 git stash 2. 查看刚才保存的工作进度 git stash list 3. 这时候在看分支已经是干净无修改的(改动都有暂存到 stash) 4. 现在…

SpringBoot常见问题

1 引言 Spring Boot是一个基于Spring框架的快速开发脚手架&#xff0c;它简化了Spring应用的初始化和搭建过程&#xff0c;提供了众多便利的功能和特性&#xff0c;比如自动配置、嵌入式Tomcat等&#xff0c;让开发人员可以更加专注于业务逻辑的实现。   Spring Boot还提供了…

C++项目 -- 高并发内存池(五)释放内存过程

C项目 – 高并发内存池&#xff08;五&#xff09;释放内存过程 文章目录 C项目 -- 高并发内存池&#xff08;五&#xff09;释放内存过程一、Thread Cache释放内存1.完善FreeList功能2.Thread Cache释放内存 二、Central Cache释放内存三、Page Cache释放内存四、释放内存过程…

Pytorch关于CIFAR-10测试

下载 CIFAR-10数据集&#xff1a; 官网&#xff1a;https://www.cs.toronto.edu/~kriz/cifar.html CIFAR-10的网络结构&#xff1a; import torch from torch import nn from torch.nn import Conv2d, MaxPool2d, Flatten, Linear, Sequential#定义网络结构 class Model(nn.Mo…

【社区投稿】Rust登陆华为鸿蒙操作系统之Native模块开发

Rust登陆【华为鸿蒙】操作系统之Native模块开发 名词解释 【鸿蒙操作系统】的英文全名是Open Harmony Operation System。正文将以其首字母缩写词ohos引用该词条。【鸿蒙软件开发工具包】的英文全名是Open Harmony Software Development Kit。正文也将以它的首字母缩写词ohsdk引…

C++-带你初步走进继承(1)

1.继承的概念及定义 1.1继承的概念 继承 (inheritance) 机制是面向对象程序设计 使代码可以复用 的最重要的手段&#xff0c;它允许程序员在 保 持原有类特性的基础上进行扩展 &#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称派生类。继承 呈现了面向对象 …

如何在IDEA中使用固定公网地址SSH远程连接服务器开发环境

文章目录 1. 检查Linux SSH服务2. 本地连接测试3. Linux 安装Cpolar4. 创建远程连接公网地址5. 公网远程连接测试6. 固定连接公网地址7. 固定地址连接测试 本文主要介绍如何在IDEA中设置远程连接服务器开发环境&#xff0c;并结合Cpolar内网穿透工具实现无公网远程连接&#xf…