当前位置:
文章详情

Unraid 使用ZFS文件系统 

2022-05-20 22:09:19 40点赞 188收藏 32评论

Unraid 使用ZFS文件系统 教程

如何无缝从TrueNAS CORE/SCALE 切换到Unraid

前言(屁话)

从一开始接触NAS,使用的就是TrueNAS CORE以及其ZFS的文件系统。

ZFS在数据安全性上有许多优势,很多照片视频对我都有很多纪念意义,我对数据安全性非常看重。所以,数据安全是最高优先级,其次是性能。

在使用一段时间NAS后,接触到了Docker容器的概念,发现NAS不光光是存储,也是家庭媒体服务,代码服务的中心。所以在TrueNAS CORE中没有原生docker支持,只能使用CentOS虚拟机里使用docker应用非常不方便,且性能损失十分大。

于是,我发现了TrueNAS SCALE,有更高效的虚拟机以及原生支持轻量化的K8S(K3S)用于运行容器。在RC1版本更新时,我将系统切换到了SCALE,确实原生的容器应用更加高效且便利,K8S也带来Docker没有的更多特性。

但是SCALE作为ix在Linux上的第一次尝试,从RC1到第三个正式版,bug各种多,最重要的还是ZFS池的性能(或者是网络性能并不如TrueNAS CORE),随着应用增多,4C 32GB的配置已经闲的非常吃力。听到朋友说Unraid有ZFS插件,可以直接在主机上运行ZFS文件系统,于是打算尝试,发现中文教程也不多,就打算写一篇,帮助SCALE用户无缝跑路到Unraid。

张大妈对MarkDown的文章支持很差,可能有部分变形确实。

原文写于Notion,在xxxhub仓库(Channing/ZFSinUnraid)也有更新,可以前往查看更加完整的体验.

Unraid使用ZFS储存池的原理就是使用ZFS插件,安装ZFS的OpenZFS的开源项目,在Unraid使用命令行,创建导入并控制池,对于大部分人来说,池选项并不需要大量调整,所以只要几个简单的命令,就可以轻松使用。

正片

添加应用源 && 设置语言

Unraid 使用ZFS文件系统 

  1. 在图中的栏中输入下方的应用源后,点击 INSTALL,即可安装应用源。
    (应用源或许可以前往我的仓库或者直接在官方文档找到 )

  2. 成功安装后,上方会多出一个栏APPS

  3. 然后在 APPS →Language→简体中文语言包→点击Install (因为我这里已经安装,会显示为action)

  4. Unraid 使用ZFS文件系统 

  5. 安装完语言包后,我们还需要设置为中文。

  6. 安装以下顺序就可以将语言设置为中文。

    SETTINGS → Display Settings → Language → 简体中文 → APPLY

    UntitledUntitled

  7. Unraid 使用ZFS文件系统 

PS:设置完可以在这里快速切换中英文

Unraid 使用ZFS文件系统 

创建池

这里是给原来没有使用过ZFS,想要直接在Unraid上创建ZFS阵列的用户。

已经有ZFS阵列可以跳过此步骤

创建池需要对ZFS文件系统进行简单的了解。

这里推荐查看Sagit大佬的文章

下面的内容引用Sagit文章内容

阵列大致分为下面几种:

条带:与RAID0类似,不过可以不同大小的硬盘组(假设2块盘容量不一样,写入数据大小超过较小硬盘容量的两倍以后就没有只有大的硬盘的读写速度了)

镜像(Mirror):与RAID1类似,磁盘镜像,至少需要两个磁盘。

RAIDZ1:与RAID5类似,一重奇偶校验,至少需要三块磁盘;可以坏一块硬盘不丢数据。容量和速度为N-1(N为硬盘数量)

RAIDZ2:与RAID6类似,双重奇偶校验,至少需要四个磁盘;可以坏2块硬盘不丢数据。容量和速度为N-2(N为硬盘数量)

RAIDZ3:ZFS特有的,三重奇偶校验,至少需要5个磁盘;可以坏3块盘不丢数据。容量和速度为N-3(N为硬盘数量)

  1. 首先你需要知道自己硬盘在系统的标签名,Unraid中,可用在 主界面→ 磁盘 → 下拉栏中,找到你硬盘对于的标签名(如图橙色框)(我这里只使用一个盘作为示例,实际你需要记录自己所需要阵列对应的所有盘。)

  2. Unraid 使用ZFS文件系统 

  3. 在 应用 中搜索 ZFS 并安装如图对应的ZFS插件

  4. Unraid 使用ZFS文件系统 

  5. 打开Unraid的命令行

  6. Unraid 使用ZFS文件系统 

  7. 接下来我们就需要创建ZFS的池了
    在命令行中输入:

zpool create -m /mnt/[池名字] [池名字] [阵列的类型] [磁盘的编号]

我们来解释一下这个命令的组成
zpool create :是创建池
-m /mnt/[池名字] :中的-m是指 将 储存池 挂载到后面系统中 /mnt/[池名字] 位置
[池名字] :是指你想要创建的储存池的名字,可以是你自己的喜欢的名字
[阵列的类型] : 在上面的介绍文章中有:mirror(镜像) raidz(RAIDZ)raidz2(RAIDZ2) raidz3(RAIDZ3)(如果什么都不输入即为条带)
[磁盘的编号]:即步骤1中记录的硬盘编号

示例:
1.需要创建一个 3盘 硬盘编号sdq sdx sdv ,条带(类似raid0),名为fastpool的 储存池
zpool create -m /mnt/fastpool fastpool sdq sdx sdv
2.需要创建一个 2盘 硬盘编号sdx sdy ,镜像(类似raid1),名为testpool的 储存池
zpool create -m /mnt/testpool testpool mirror sdx sdy
3.需要创建一个 6盘 硬盘编号sda sdb sdc sdd sde sdf,RAIDZ2(raidz2),名为mypool的 储存池
zpool create -m /mnt/mypool mypool raidz2 sda sdb sdc sdd sde sdf

  1. 完成池的创建后,就可以使用命令:

zpool status [池名字]

查看池的具体状态
可以看到池的健康度,以及有没有报错

Unraid 使用ZFS文件系统 

Unraid 使用ZFS文件系统 

导入池

从TrueNAS转移后,直接导入原有储存池

  1. 通过命令查看已经池
    zpool import
    可以看到已经查看到 testpool 储存池

  2. Unraid 使用ZFS文件系统 

  3. 查找你需要的储存池后,就可以使用命令:
    zpool import [池名字]
    后,就可以使用命令:
    zpool status
    查询池状态

Unraid 使用ZFS文件系统 

完成池导入

Unraid 建立 Docker && VM(虚拟机)数据 并设置 路径 到对应目录

你需要在 存储池 下面 建立Docker 和 VM(虚拟机)的 数据集
很多人对数据集的概念比较陌生,简单的可以理解为一个可以有更多ZFS选项的文件夹
如果你是小白不需要任何改动,所以就当成文件夹使用。至于为什么不直接创建文件夹是,创建很简单,且当你熟悉ZFS后能有更多调整项。

  1. 建立 数据集
    zfs create [池名字]/[数据池]
    示例:
    池的名字以刚刚的testpool为例子,建立名为docker以及vms的数据集,以下2条命令为:
    zfs create testpool/docker
    zfs create testpool/vms
    即可完成数据集的建立

  2. 使用下面命令可以查看ZFS池下面的所有数据集
    zfs list

    就可以查看testpool下面的数据集的
    名字(NAME) 占用(USED) 可用容量(AVAIL) 引用(REFER) 挂载点(MOUNTPOINT)

  3. Unraid 使用ZFS文件系统 

    在UNRAID界面 设置 → Docker/虚拟机管理 的2处 修改路径 到 刚刚创建的路由中
    如图示例 : (PS:可能需要打开右上角的高级视图才能看见路径修改选项)
    开头为
    /mnt/[池名字]/[数据集]/[文件夹名]
    注意这里的文件夹直接填,会自动创建,需要使用创建数据集的方式。




  4. Unraid 使用ZFS文件系统 

  5. Unraid 使用ZFS文件系统 

5. 全部设置完成,点击 应用 。

6. 此时因为Unraid一定需要启动一个阵列才能允许使用 Docker && VM(虚拟机)

7. 在 主界面 → 磁盘1 随便选择一块硬盘

Unraid 使用ZFS文件系统 

点击 启动 即可打开 Docker && VM(虚拟机)功能

警告‼️:启动后 不要 点击 格式化 ,因为我们只需要启动阵列来开启 对应功能,ZFS阵列已经存在。

挂载ZFS储存池 SMB共享

因为我们使用的是非unraid自带阵列,所以我们无法使用共享中的SMB共享

  1. 添加用户
    在 用户 → 添加用户 中 设置自己的账户,用于SMB访问

  2. 添加 SMB 设置
    在 设置 → SMB → SMB额外 → Samba额外配置 中

    添加

    [[随意名字]]

    path=/mnt/[池名字] valid users = [用户名] write list = [用户名]**

    示例: 添加池名字为 testpool 用户名为bob的SMB共享

    [testpool]

    path=/mnt/teool valid users = bob write list = bob

  3. Unraid 使用ZFS文件系统 

  • 设置ZFS内存缓存容量

    命令如下:

    echo "echo 8589934592 >> /sys/module/zfs/parameters/zfs_arc_max" >> /boot/config/go

    这里唯一需要调整的参数是 橙色 部分,这里代表单位是的 Bytes,转换为GB为8GB
    即设置ZFS缓存为8GB
    考虑到Docker和虚拟机运行也需要内存,需要根据你自己的需要调整大小,官方文档的建议是大于8GB,并设置不可大于本机最大容量,TrueNAS SCALE里面的默认数值是本机内存的一半。

  • 定期校验储存盘

    命令如下

    4 2 4 * * zpool scrub [池名字] >> /dev/null

    橙色 部分是Linux Crontab定时任务时间,需要自己查询调整需要校验的时间。

    青色 部分是池名字

    示例: 每个月1号 1:00AM 校验池 testpool

    1 0 1 zpool scrub testpool >> /dev/null

    定时自动快照

    这里推荐使用Unraid ZFS插件同作者的ZnapZend插件

    可以在应用中直接安装

  • Unraid 使用ZFS文件系统 

  1. 需要在命令行设置启动以及自动启动命令:
    znapzend --logto=/var/log/znapzend.log --daemonize
    touch /boot/config/plugins/unRAID6-ZnapZend/auto_boot_on

  2. 使用下面的命令,创建你需要多久创建一次快照的命令。
    znapzendzetup create --recursive SRC '7d=>1h,30d=>4h,90d=>1d' SSD
    橙色的代表 7天内每天保持24个备份,一个月内每天6个备份,然后在90天内每天进行一次快照。(看不懂建议照抄)

    青色的代表 池名字

  3. 点击应用,即可完成SMB共享

    需要注意的是,如果设置SMB共享时,需要停止Unraid系统自带阵列,即此处的停止

    完成设置后,需要重新启动阵列,就可以正常使用了。

    设置ZFS内存缓存容量 && 定期校验储存盘

  4. Unraid 使用ZFS文件系统 

查看快照

zfs list -t snapshot [池名字]/[数据集]
示例:
zfs list -t snapshot testpool/docker

回滚到快照

zfs rollback -r [快照名]

ZFS Master (一个有趣的插件)

这是一个推荐的插件,可以在主菜单下面显示各个数据集的状态。

Unraid 使用ZFS文件系统 

Unraid 使用ZFS文件系统 

教程到这里就结束了,对于大部分的家用来说,ZFS池的默认选项能满足90%需求,但是ZFS池选项还有很多可以调整,后面也会出一期ZFS命令行的教程,来讲一下使用命令行调整池以及数据集选项。

参考:ZFS PLUGIN FOR UNRAID

@ChanningHe 转载需要标注

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
32评论

  • 精彩
  • 最新
  • 置顶 更正一下仓库地址是:ChanningHe/ZFSinUnraid

    校验提示文案

    提交

    ChanningHe

    作者

    ChanningHe

    作者
    文中如有错误欢迎指出 [喜极而泣]

    校验提示文案

    提交
    我说呢..怎么找了一圈没找到..

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 靠,刚从truenas切到unraid 数据转移我直接把所有硬盘直通到unraid下的truenas虚拟机了 再用smb和Dynamix File Manager慢慢cp

    校验提示文案

    提交
    考虑再转回来嘛 [高兴] ZFS可比Unraid自带的阵列好用多了

    校验提示文案

    提交
    收起所有回复
  • zfs可以使用不同大小的磁盘组成阵列吗

    校验提示文案

    提交
    可以的。但是最后容量计算是按照: 最小的那个硬盘容量x硬盘数量

    校验提示文案

    提交
    那这还是算了,用unraid自带的阵列目前就够用了,自带的设计也很满足我的需求。

    校验提示文案

    提交
    收起所有回复
  • 怎么看 都感觉不像平常用户用的
    我unraid 才16g 内存 一堆docker服务 加上pcdn 占用85%了............

    校验提示文案

    提交
    我在SCALE纯容器服务占用20g [观察]

    校验提示文案

    提交
    呵呵,我跟你一摸一样~~itx主板,ecc内存最高只能16G,一堆docker+pcdn,内存到了80%,已经无力继续了,感觉zfs这种需要大内存的系统,真的不适合家用

    校验提示文案

    提交
    收起所有回复
  • 支持zfs技术贴!zfs特性很好。但是不怎么适合家用。。还是先打赏了。

    校验提示文案

    提交
    感谢打赏。其实ZFS非常适合家用存储照片视频等重要数据

    校验提示文案

    提交
    收起所有回复
  • 最近老是纠结unraid还是truenas,,zfs确实很吸引我,,一直心心念念,如果unraid的zfs可以和truenas一样的话,那就完美了。。

    校验提示文案

    提交
    如果性能足够TrueNas SCALE是好的选择

    校验提示文案

    提交
    unraid下的zfs的池可以直接导入truenas的不?truenas的虚拟机unraid比如何?硬盘直通貌似没有unraid简单。

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 大佬,设置ZFS内存缓存容量 && 定期校验储存盘
    这节是不是没了?

    校验提示文案

    提交
    标题错乱了。内容还在的,在稍微上面点

    校验提示文案

    提交
    看到了。我后面直接去看你原文了?

    校验提示文案

    提交
    收起所有回复
  • 我也想转到unraid了,目前12盘用Z2模式,速度实在是拉垮,而且就算是固态条带也是过山车一样的速度。。所以想请教一下作者,你现在把scale的转到unraid上,速度相比之前直接用scale,是否更稳定一些了呢

    校验提示文案

    提交
    还是用scale吧

    校验提示文案

    提交
    。。主要是现在scale的性能优化太差了,4固态条带跑个大文件都跟过山车一样。。 [皱眉]

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 请问设置完共享访问账户 和 SMB额外 后共享访问能看见目录,但是没读写权限,怎么解决?

    校验提示文案

    提交
    可以搜索学习一下Linux文件权限管理。懒得学可以考虑chmod 777 /文件路径

    校验提示文案

    提交
    收起所有回复
  • 这才是真大佬,这是大妈家第一篇unraid使用zfs的文章,写的真详细。感谢大佬的无私分享,感谢!

    校验提示文案

    提交
  • 我把黑群转移到最近的新品系统,万由的6.0了(刚出半年,进步很快)。也支持zfs,而且从创建,挂载,创建快照,或者自动快照的设置,以及原地挂载快照,回滚等操作全部有中文ui,真是方便我这种纯小白了。强烈推荐。✌(̿▀̿ ̿Ĺ̯̿̿▀̿ ̿)✌。另外unas的docker和vm现在也很好用。而且支持ovs网络,docker内容器也可以鼠标点点就分配独立ip了,对那需要映射80端口的容器来说很方便。

    校验提示文案

    提交
  • 我有一台Truenas 一台Unraid 照片文档之类比较重要的就放Truenas上,电影之类的就放Unraid。

    校验提示文案

    提交
  • unraid 的zfs比 scale的速度对比如何啊,有没有朋友对比过啊,unraid自己的模式是单盘速度,好处是不用的磁盘可以休眠省电,但是就怕silent error再遇上奇偶校验错误,用zfs可以使用全磁盘模式,速度理论上要优于unraid,安全性自然也要高于,就是不知道速度到底怎么样,坏处是不是无法休眠啊,请玩过的朋友指教

    校验提示文案

    提交
  • 2.添加 SMB 设置;举例的命令path=/mnt/teool,池名字不全;

    很有用的教程,我喜欢unraid直通方便,我日常使用是存数据当仓库盘,看ZFS的压缩率挺好的,后来看到威联通支持ZFS,价格实在是太贵。

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章

ChanningHe

Ta还没有介绍自己

关注 打赏
最新文章 热门文章
188
扫一下,分享更方便,购买更轻松