连接:https://www.ethanzhang.xyz/truenas%E5%AE%89%E8%A3%85%E5%8F%8A%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/
1 介绍
TrueNAS由原FreeNAS演变而来,FreeNAS 和 TrueNAS 已经合并,统一使用 TrueNAS 这一名字
TrueNAS(12.0 版前称为 FreeNAS,是一套基于 FreeBSD 操作系统核心的开放源代码的网络存储设备(英语:NAS)服务器系统,支持众多服务,用户访问权限管理,提供网页设置接口
FreeNAS主要由 iXsystems 领导开发,现在 iXsystems 宣布了一个基于 Debian Linux 的版本叫 TrueNAS SCALE
TrueNAS SCALE是TrueNAS系列的最新成员,并提供包括Linux容器和VM在内的开源HyperConverged基础架构
TrueNAS SCALE包括集群系统和提供横向扩展存储的能力,容量最高可达数百PB
其中TrueNAS CORE 为开源版本,TrueNAS Enterprise 为商业版本
FreeNAS 的几乎所有配置和功能都可通过 Web 用户界面管理
FreeNAS安装可以在裸金属、虚拟机环境下进行安装,安装完成后可能有难度的部分在于对于管理IP地址的配置
另外不同于其他HCI超融合架构,TrueNAS允许安装在单一节点上
1.1 关于OpenZFS文件系统
FreeNAS的文件系统采用OpenZFS文件系统
OpenZFS是一个自由和开放源码的文件系统,是Solaris’ ZFS和FreeBSD以及Mac OS X上的ZFS之间的一个折衷版本。它集合了Solaris ZFS发行版的功能与FreeBSD发行版的稳定性,实现了柔性的平衡。OpenZFS允许开发者在几种不同的操作系统上实现和使用具有相同功能的文件系统,而且可以在所有平台上相互兼容。
OpenZFS被设计成一个灵活、健壮的文件系统,它为存储体系架构提供了基本的基础设施。它可以处理所有操作系统中可用的存储设备,不管它们是本地磁盘、 SAN、iSCSI、DRBD块设备或NAS设备。
OpenZFS的存储模型是面向对象的,所有的文件存储对象遵循类似的抽象数据模型。文件系统可根据不同的需求来存储不同的文件对象,文件可以存放到原始的、压缩的或加密的存储池之中。
OpenZFS还提供安全可靠的复制和容错性,它可以根据可用的磁盘数量和容量来创建实时副本,增强数据安全性和容错性。它还可以根据存储设备大小提供动态扩展能力,使用存储设备做动态扩容。
OpenZFS还提供许多其他令人满意的功能,比如预读、增量备份,可恢复到任何时刻任何版本的数据,把空中存储器、端到端安全性甚至虚拟化等等等。这些功能为存储系统的实施和管理提供了非常大的便利性
1.2 TrueNAS功能
TrueNAS 支持所有主流的网络文件共享和远程备份选项,甚至可以使用 FreeBSD 或 Linux 的应用程序进行扩展
支持的共享协议包括 NFS(v3,4),SMB(v1,2,3,4),AFP,FTP,WebDAV 和 rsync
TrueNAS 完全支持块共享(iSCSI,光纤通道),并且已通过认证,可与 vSphere,Citrix 和 Veeam 一起使用
ZFS 通过写时复制、校验和、清理和 2-Copy 元数据等功能保护您的数据
自动复制可确保您可以在远程存储位置中安全地保持数据的逐位相同副本,并且超快重新同步时间意味着如果磁盘发生故障,可以将备用磁盘快速集成到降级的数据存储池中
ZFS 使用高效的快照和克隆技术来最大化可用空间,以及内联数据压缩、精简配置和重复数据删除
TrueNAS 与所有主要备份供应商和虚拟机环境集成,并通过 Veeam Backup and Replication,Citrix 和 VMware 认证。它支持 VMware 快照,并具有 vCenter 插件。它还与 Microsoft CSV,ODX 和 VSS 集成
2 安装
2.1 最小安装环境要求
CPU:双核 Inter 64位或者AMD X86_64
TrueNAS不需要两个内核,因为大多数现代的64位CPU可能已经至少有两个了
内存:最小8GB,其实对于内存的要求是最重要的,建议调整大一些
启动设备:16GB SSD boot device,不建议采用USB盘
存储:两个独立硬盘
2.2 具体安装步骤
接下来开始实际安装
下载镜像文件TrueNAS SCALE 22.12.2
,选择当前稳定版
可以将下载后的iso镜像直接加载到本地虚拟机/云环境进行直接安装,或者刻录至U盘直接在裸金属上引导后安装
引导启动后选择Start TrueNAS SCALE Installation
选择1,安装或者升级
选择硬盘安装介质
选择Web UI的授权模式,一般选择admin
询问是否创建交换分区,选择是
提示安装成功
3 初始化管理IP
系统完成后,首先会联想到登录到web页面进行管理,但问题正如开篇所说,有点小难点在于访问的管理IP的设定
注意
TrueNAS默认是DHCP使能的,如果当前安装环境下有DHCP服务器,可以通过TrueNAS临时获取的IP地址直接进行Web UI管理,可以跳过当前步骤
此时需要在TrueNAS的终端设置固定IP
选择1
,查看并设置网络接口
将ipv4_dhcp
选择否
选择6
,进入Open TrueNAS CLI Shell
可以通过netuork interface query
查询当前网络适配器的相关信息,主要是获取适配器name
值用于后续配置静态IP
通过network interface update ens160 aliases="172.18.3.20/24"
及netuork intertace commit
、network intertace checkin
进行配置
验证并配置网关及DNS
必须先设置静态ip地址才能设置网关,否则提示网关不可达
返回并选择2 configure network settings
,然后配置网关及DNS信息
此时,如果能够ping通管理IP地址,初始化工作就算完成
4 基本设置
4.1 基本设置整体介绍
Dashboard是整体仪表盘【此时磁盘并没有建立磁盘池】
Storage对次磁盘池进行管理
Datasets是针对数据集进行管理
Sharing是对外服务管理,包括SMB
、NFS
、iSCSI
、WebDAV
四种存储服务
Data Protection是数据保护,这块是TureNFS的核心功能,是基于openZFS的核心功能
Network是网络配置,Interfaces
配置网卡相关配置,Global Configuration
则可以针对DNS、网关等进行全局设置
上述DNS和网关配置已经在本地
Open TrueNAS CLI Shell
进行了配置
Credentials证书
则是针对用户管理、权限进行管理
Virtual Machines和Applications,都是基于K3S进行管理
4.2 设置语言和时区
如果需要,可以将语言设置为中文System Settins
—-Settings
我推荐采用默认英文
修改界面语言和时区
4.3 配置NTP
生产系统,推荐配置本地NTP服务器
5 磁盘管理
5.1 创建存储池
TrueNAS对外提供四种存储服务,必须先创建存储池
选择Create Pool
将可用硬盘进行标记,纳入准备创建的磁盘池内
特别注意这里的类型
1、Stripe是没有冗余的,可以支持最小1块硬盘,当有n个硬盘时,选择Stripe
就会创建n个VDev
2、Mirror是镜像,至少需要两块硬盘,和Raid
3、RAIDZ1:利用1块硬盘做奇偶校验,至少需要三块硬盘做Soft-raid
其实RIADZ1类似raid-5,但是会以最小的硬盘为容量进行计算
4、RAIDZ2:利用2块硬盘做奇偶校验,至少需要四块硬盘做Soft-raid
其实RIADZ2类似raid-6,性能上会进一步损失
5、RAIDZ3:利用3块硬盘做奇偶校验,至少需要五块硬盘做Soft-raid
可以看出RAIDZ1、RAIDZ2、RAIDZ3主要差别在于奇偶校验的磁盘数
创建完成后,在Storage
中显示
5.2 VDevs概念
另外注意,这里有一个VDevs概念
人类为了解决某类问题,往往会抽象中间一个中间层,这个中间层就是VDevs
,后续的平滑磁盘扩展都是基于此
VDevs有数据类型、日志类型、缓存类型、元数据类型以及冷备类型
注意事项
1、每个磁盘池可以拥有多个VDev,但是每个VDev的磁盘整列类型必须是一直的,例如大家都是RAIDZ1
2、多个Vdevs是想解决容量不一致的情况,最大可能利用磁盘容量
一个VDev下的RAID组成的阵列,整体容量是按照最小容量进行计算,因此可以组成多个VDev来避免这个问题
多个VDev是采用了条带化技术进行使用
但是如果一个VDev下多个硬盘发生故障,依然会将造成阵列损坏,也就是说一个VDev的损坏,因为
Stripe
技术直接做成整个磁盘池损坏
硬盘组成vdev,也就是virtual device,然后多个vdev组成一个pool. 一个pool可以提供dataset对象,也可以提供zvol对象
6 数据集
6.1 创建数据集
创建完数据池后,必须创建数据集
选择Datasets,选择Add Dataset
输入数据集名称
创建数据集后,无法直接使用该数据集,还必须创建对外的存储服务和用户
6.2 数据集属性
6.2.1 压缩级别
在比原始数据占用更少的空间中编码信息
建议选择一种压缩算法,以平衡磁盘性能和节省的空间量通常建议使用 LZ4
,因为它可以最大化性能并动态识别要最佳压缩的文件
GZIP 选项的范围从1(最小压缩),最佳性能到9(最大压缩),不影响性能
ZLE 是一种快速算法,仅消除零的游程*
6.2.2 启用Atime
就是Linux文件系统中的Atime
选择ON来更新读取文件时的访问时间。选择Off可以防止在读取文件时产生日志流量。这可以带来明显性能提升
6.2.3 ZFS重复数据删除
使用重复数据的单个副本以节省空间
重复数据删除功能可以提高存储容量,但需要占用大量RAM
通常建议在使用重复数据删除功能之前压缩数据。重复数据删除是一个单向过程。 已去重的数据不能再重复删除!
实际上类似VSan去重,因为ZFS也是将文件打散存储在不同的VDevs中,如果存在诸如虚拟机大量重复操作系统数据块,否则一般的多媒体文件不适合使用去重功能
6.3 权限设置
除了在Sharing
中对共享的挂载点进行文件权限设置外,还可以针对数据集的权限进行设置
7 创建用户
系统内置是admin和root账户,这两个账户默认是无法使用诸如smb、nfs服务的
因此你需要创建特定用户
当创建用户时候系统会默认创建同名的用户组
因此可以先创建用户组,然后再创建用户
创建特定的用户,这里针对SMB服务,我们创建smbuser
用户
8 创建存储服务
8.1 创建SMB共享
打开Sharing
启用`Windwos(SMB) Shares
添加SMB挂载点
8.2 修改权限
创建存储服务后,可以针对挂载点进行权限设置,满足其他用户特定权限需求
在Sharing
的Edit Filesystem ACL
设置
`
对于我们之前创建的smbuser用户而言,当前smb数据集的Owner
和Owner Group
都是root
当然你也可以将对应数据集的目录的拥有者和拥有组改为对应的smbuser
实际上还可以在数据集的权限进行同样设置,实现访问权限的设置
验证,在windows操作系统输入\\172.18.2.20
此时我们在windows操作系统上创建chris-test-file.txt
通过TrueNAS的CLI可以得到验证
8.3 性能测试
直接使用单一的大文件拷贝,传输速度稳定
8.4 创建NFS存储服务
这里直接以实战方式从用户创建到权限设置解释如何对外创建NFS存出服务
8.4.1 添加NFS用户组
8.4.2 创建NFS用户
8.4.3 创建数据集
8.4.4 创建NFS共享
其中可以指定访问主机网络范围
8.4.5 验证
在Windows下
9 运维
9.1 磁盘查看
在Storage Dashboard
选择 Topology--Manage Devices
可以查看所有不同类型VDEVs
的情况
选择 Disk Health--Manage Disks
可以查看物理硬盘各状态
检查ZFS的文件系统
可以手动执行Scrub进行磁盘清理和检查工具,一般不需要都是自动执行
9.2 磁盘池扩容
在Storage
中使用未使用的磁盘进行扩展
添加至已存在的磁盘池
其实本质就是再添加VDev
但是记住同一个磁盘池下,VDevs类型必须一致
RIADZ扩容不要急着拔硬盘,而是要采用热更新的方法逐个在线替换
9.3 磁盘的更换
磁盘的更换可以适用于两种场景:
1、某个磁盘出现故障
2、对磁盘池进行扩展,区别于8.2 磁盘池扩展操作,需要逐个替换磁盘,确保各磁盘容量一致
如果磁盘出现故障,需要更换,则需要在Topology---Manage Devices
中进行操作
特别注意这里必须使用比需要更换的硬盘容量更大的新硬盘进行替换
9.4 磁盘池的导入和导出
使用场景:当TrueNAS的操作系统出现故障后,重装操作系统可以手动的将数据盘中原来已存在的磁盘池导入
9.5 磁盘的降级恢复
当磁盘发生故障,如果发生故障磁盘数量在VDevs的允许的故障数量内,就会发生降级,但是磁盘阵列仍然可以使用
此时如果原故障硬盘因为线缆等问题又重新上线,则系统会自动进行修复,进行resilver
操作
如果确认磁盘故障,则需要手动进行磁盘更换
选择新硬盘
系统重新进行resilver操作