免费开源的NAS解决方案:TrueNAS
TrueNAS是业内知名的FreeNAS系统的升级版,是一款开源的网络存储系统,具有高性能、稳定性和易用性等优点。
TrueNAS目前有三个版本,分别是TrueNAS® CORE、TrueNAS® ENTERPRISE、TrueNAS® SCALE。其中,TrueNAS CORE基于FreeBSD开发;TrueNAS SCALE则是基于Debian-Linux系统核心,TrueNAS® ENTERPRISE我个人认为它是基于TrueNAS® CORE的。
也就是TrueNAS® CORE是存储受限(小于25PB),只有软件没有硬件,没有技术支持的TrueNAS® ENTERPRISE系统。TrueNAS® CORE基于FreeBSD,容器化方面有自己的jail方案,稳定性方面看齐TrueNAS® ENTERPRISE。TrueNAS® SCALE是社区版,存储不受限,因为是基于Debian-Liux,所以业内流行的容器化,比如k8s也得到很好的支持。
同时TrueNAS® CORE内核对应FreeBSD13.3,TrueNAS® SCALE对应Ubuntu的24.10,TrueNAS® SCALE更追求新技术的体验。
安装
下载iso安装光盘
Scale版基于Ubuntu24.10,核心板基于FreeBSD13.3 ,两个都下载下来,都试试!
下载TrueNAS® SCALE
到官网,下载社区scale版:https://www.truenas.com/download-truenas-scale
官网网站有时候不通,要多刷几下。
下载TrueNAS® CORE
到这个页面下载核心版:Download TrueNAS CORE - Completely Free NAS OS
核心版文件的检验值:
sha256 checksum:
4cc8075a5b79219df29248c98cc04d712aa5d7ea4a2184b087e308e357eb3443
晕菜了,文件不对了,第一次下载的核心板文件检验值:
sha256 TrueNAS-13.3-U1.1.iso
SHA256 (TrueNAS-13.3-U1.1.iso) = 4e00745c1f78f932569ff047e8179464958014f70d6bfe9065016a3100f2a75e
又下载了一遍,第二次下载的核心板文件检验值又变了:
certutil -hashfile "TrueNAS-13.3-U1.1 (1).iso" sha256
SHA256 的 TrueNAS-13.3-U1.1 (1).iso 哈希:
22a89eed306795a69f8074fe4e7bc7d0568857268998c35e60fc75ed6bb1c23e
好消息是至少windows scp到FreeBSD,sha256没有变:
sha256 TrueNAS-13.3.iso
SHA256 (TrueNAS-13.3.iso) = 22a89eed306795a69f8074fe4e7bc7d0568857268998c35e60fc75ed6bb1c23e
第一个核心板的iso启动后卡住,用第二个iso终于装成了。
FreeBSD下使用cbsd安装TrueNAS® SCALE(失败)
cbsd的安装使用参考:jail管理器CBSD实践@FreeBSD-CSDN博客
先注册光盘
sudo cbsd media mode=register name=TrueNAS-SCALE-24.10.2.iso path=/home/skywalk/download/TrueNAS-SCALE-24.10.2.iso
media: auto-detected image type for /home/skywalk/download/TrueNAS-SCALE-24.10.2.iso: iso
Updated
查看注册光盘
sudo cbsd media mode=list
NAME PATH TYPE JNAME SIZE
cloud-ubuntu-x86-22.04.03 /usr/jails/src/iso/cbsd-cloud-cloud-Ubuntu-x86-22.04.03.raw iso - 0
iso-FreeBSD-riscv64-14.2 /usr/jails/src/iso/FreeBSD-14.2-RELEASE-riscv-riscv64.raw hdd - 6g
TrueNAS-SCALE-24.10.2.iso /home/skywalk/download/TrueNAS-SCALE-24.10.2.iso iso - 2g
创建bhyve虚拟机
sudo cbsd bconstruct-tui
配置里选用Ubuntu24架构,注意选我们注册好的TrueNAS光盘
启动虚拟机
cbsd bstart truenas
启动后选择启动光盘
sudo cbsd bstart truenas
Password:
Looks like /usr/jails/vm/truenas/dsk1.vhd is empty.
May be you want to boot from CD?
[yes(1) or no(0)]
1
Temporary boot device: cd
vm_iso_path: TrueNAS-SCALE-24.10.2.iso
media found: TrueNAS-SCALE-24.10.2.iso --> /home/skywalk/download/TrueNAS-SCALE-24.10.2.iso
VRDP is enabled. VNC bind/port: 192.168.1.5:5902
For attach VM console, use: vncviewer 192.168.1.5:5902
Resolution: 800x600.
VNC pass: cbsdWarning!!! You are running a system with open VNC port to the world wich is not secure
Please use IP filter or balancer with password to restrict VNC port access
Or change vnc_bind params to 127.0.0.1 and reboot VM after maintenance workbhyve renice: 1
Waiting for PID.
PID: 59069
bstart done in 20 seconds
然后就可以按照提示,用realvnc等程序连上192.168.1.5:5902 了。
无法用光盘启动问题
按照提示,先按任意键
但是不对啊,整个界面都是乱的...
后来重启后界面好了,但是无法用光盘启动。
没弄好,删除这个bhyve
sudo cbsd bremove jname=truenas
FreeBSD下使用cbsd安装TrueNAS® CORE
注册光盘
sudo cbsd media mode=register name=TrueNAS-13.3.iso path=/home/skywalk/download/TrueNAS-13.3.iso
创建虚拟机
cbsd bstart truenas
设置系统为FreeBSD13.3,光盘为 TrueNAS-13.3.iso ,设置了两块一盘,一块系统盘,一块应用盘。
后来TrueNAS系统嫌弃那块6G的系统盘小,于是用了12G的盘做系统盘。
启动后,用浏览器登录
进入菜单:System General Localization,把里面的语言设置为中文
使用VirtualBox安装TrueNAS® SCALE
创建linux Ubuntu24版本的虚拟机,挂载iso光盘,一切按部就班的安装即可。
安装好后,登录网页管理界面

系统信息:
Linux truenas 6.6.44-production+truenas #1 SMP PREEMPT_DYNAMIC Tue Jan 28 03:14:06 UTC 2025 x86_64
也就是它是Linux6.6 内核。
软件包
trueNAS内建软件包非常丰富,有160个
其中就有AI应用:Ollama、Open WebUI和Codegate,非常棒!
Ollama使用参考:使用Ollama 在Ubuntu运行deepseek大模型:以deepseek-r1为例-CSDN博客
Open WebUI使用参考:为大模型提供webui界面的利器:Open WebUI 完全本地离线部署deepseek r1_openwebui-CSDN博客
总结
也许除了黑群辉,TrueNAS也是一种非常不错选择!
相关文章:
免费开源的NAS解决方案:TrueNAS
TrueNAS是业内知名的FreeNAS系统的升级版,是一款开源的网络存储系统,具有高性能、稳定性和易用性等优点。 TrueNAS目前有三个版本,分别是TrueNAS CORE、TrueNAS ENTERPRISE、TrueNAS SCALE。其中,TrueNAS CORE基于FreeBSD开发&…...
LeetCode热题100精讲——Top1:两数之和【哈希】
你好,我是安然无虞。 文章目录 题目背景两数之和C解法Python解法 题目背景 如果大家对于 哈希 类型的概念并不熟悉, 可以先看我之前为此专门写的算法详解: 蓝桥杯算法竞赛系列第九章巧解哈希题,用这3种数据类型足矣 两数之和 题目链接:两数…...
github上传操作简单说明
前期准备 0.下载git(如果已经有了就不用了) 1.在GitHub上新建一个存储库 2.先在本地创建一个目录作为本地库目录,在目录里打开git bash进行上传 上传过程 echo "# Garbled_repair" >> README.md 作用:创建一个…...
GitLens with `Commit Graph`
文章目录 GitLens with Commit Graph GitLens with Commit Graph 想要更直观地查看 Git 提交历史?我打包了一个支持 Commit Graph 的 GitLens 版本,让你轻松在 VSCode 中查看分支、合并、变更记录等内容,一目了然! 📌…...
Rocky9.5基于sealos快速部署k8s集群
首先需要下载 Sealos 命令行工具,sealos 是一个简单的 Golang 二进制文件,可以安装在大多数 Linux 操作系统中。 以下是一些基本的安装要求: 每个集群节点应该有不同的主机名。主机名不要带下划线。 所有节点的时间需要同步。 需要在 K8s …...
阿里云服务器环境部署 四 MySQL主从配置
安装MySQL 导入mysql镜像 docker load -i /opt/dockerinstall/mysql/mysql-8.1.0.tar docker run --privilegedtrue --name mysql8 --restartunless-stopped -e MYSQL_ROOT_PASSWORD123456 -p 3306:3306 -v /usr/local/mysql/logs:/var/log/mysql -v /usr/local/mysql/d…...
GPT-5 将免费向所有用户开放?
GPT-5 将免费向所有用户开放? 硅谷知名分析师 Ben Thompson 最近与 OpenAI CEO Sam Altman 进行了一场深度对谈,其中Sam Altman透漏GPT-5将免费向大家发放。 OpenAI 这波操作可不是一时冲动,而是被逼出来的。DeepSeek 这个新秀横空出世&am…...
web客户端存储,IndexDB相关讲解
IndexDB详细讲解 IndexedDB 是浏览器提供的一种底层 API,用于在客户端存储大量结构化数据。相比 Web Storage(localStorage/sessionStorage),它支持更复杂的数据结构、事务处理、索引查询等高级功能。以下是一个系统化的讲解: 一、核心概念 1、数据库(Database) 每…...
excel文件有两列,循环读取文件两列赋值到字典列表。字典的有两个key,分别为question和answer。将最终结果输出到json文件
import pandas as pd import json# 1. 读取 Excel 文件(假设列名为 question 和 answer) try:df pd.read_excel("input.xlsx", usecols["question", "answer"]) # 明确指定列 except Exception as e:print(f"读取文…...
项目日记 -云备份 -服务器配置信息模块
博客主页:【夜泉_ly】 本文专栏:【项目日记-云备份】 欢迎点赞👍收藏⭐关注❤️ 代码已上传 gitee 目录 前言配置信息文件文件配置类getInstance 获得实例readConfigFile 读取配置信息文件 测试 #mermaid-svg-ewlCpjdOf0q0VTLI {font-family:…...
gralloc usage flags
下面这些示例主要说明了 gralloc usage flags 在图像处理和多媒体应用中如何影响性能和正确性。让我们逐个详细分析每个问题的 根因 和 修复方案,并深入解析 gralloc 标志对 缓存管理 和 数据流 的影响。 ✅ Example 1: 长曝光快照耗时异常 📌 问题描述…...
Mysql配套测试之查询篇
🏝️专栏:Mysql_猫咪-9527的博客-CSDN博客 🌅主页:猫咪-9527-CSDN博客 “欲穷千里目,更上一层楼。会当凌绝顶,一览众山小。” 目录 条件查询简单测试: 1.查询英语成绩不及格的同学(<60) 2…...
mysql——第二课
学生表 CREATE TABLE student (id int(11) NOT NULL AUTO_INCREMENT,name varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,sex varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,age int(11) DEFAULT NULL,c_id int(10) DEFAULT NULL,PRIMARY KEY (id),KEY c_id (c_id),CONSTR…...
Python网络编程入门
一.Socket 简称套接字,是进程之间通信的一个工具,好比现实生活中的插座,所有的家用电器要想工作都是基于插座进行,进程之间要想进行网络通信需要Socket,Socket好比数据的搬运工~ 2个进程之间通过Socket进行相互通讯&a…...
arm linux下的读写信号量rw_semphore的实现
本文基于arm linux 5.10来介绍内核中使用的读写信号量rw remphore的实现代码。 内核中信号量结构体struct rw_semaphore的定义在include/linux/rwsem.h 32位architectures下,结构体struct rw_semaphore中的count的使用如下: 先来看信号量的定义和初始化…...
完整的类在JVM中的生命周期详解
首先给出一个示例代码: 示例的目标是展示一个多功能的类结构,包含继承、接口实现、静态成员、本地方法、线程安全等特性,同时模拟一个简单的“计算器”场景,计算并管理数字。(尽量将所有的 Java 组件和关键字都给出&am…...
Flutter中常用命令
1.检测flutter运行环境 flutter doctor 2.升级flutter flutter upgrade 3.查看flutter 版本 flutter --version 4.查看连接的设备 flutter devices 5.运行flutter项目 flutter run 或者在vscode中按FnF5 6.打包 flutter build apk //默认打release包 7.开…...
C#里使用libxl的数字格式
由于EXCEL里可以表示不同的数字格式, 比如表示货币数字时,与表示普通序号的数字就不一样。 还有科学计算表示的数字使用小数点位数与普通货币也不一样。 如下所示: 要使用这些格式, 下面创建一个例子来演示保存这些数字格式: private void button11_Click(object send…...
c#难点整理2
1.对象池的使用 就是先定义一系列的对象,用一个,调一个。 public class ObjectPool<T> where T : new(){private Queue<T> pool; // 用于存储对象的队列private int maxSize; // 对象池的最大容量// 构造函数public ObjectPool(int maxSi…...
android adjust 卸载与重装监测
想要洞察应用内用户的留存率,可以通过Adjust 的卸载与重装进行监测 名词解释: 卸载:集成完成后,卸载应用,安装状态为:卸载 重装:如果应用已经卸载,但一段时间后又进行安装,则会被视为重装。 📢📢📢:adjust 文件中说到24 小时后,可以再 adjust 控制台看安装…...
自然语言处理(5)—— 中文分词
中文分词的基本原理及实现 1. 什么是词2. 基本原理3. 发展趋势:多数场景无需显式分词 信息处理的目标是使用计算机能够理解和产生自然语言。而自然语言理解和产生的前提是对语言能够做出全面的解析。 汉语词汇是语言中能够独立运用的最小的语言单位,是语…...
解锁物联网高效开发,Synaptics SYN43756E Wi-Fi 6E 芯片登场
Synaptics 的 SYN43756E 芯片是一款高性能的 Wi-Fi 6E 支持 11a/b/g/n/ac/ax 的物联网(IoT)SoC,具备多项先进特性,适用于多种应用场景,以下是其主要优势: 1. 广泛的应用场景 智慧家庭:支持多种…...
C++和标准库速成(十二)——练习
目录 练习1.1题目答案 练习1.2题目答案 练习1.3题目答案 练习1.4题目答案 练习1.5题目答案 练习1.6题目答案 参考 练习1.1 题目 修改下面的Employee结构体,将其放在一个名为HR的名称空间中。你必须对main()中的代码进行那些修改才能使用此新实现?此外&a…...
DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能📚页面效果📚指令输入�…...
5、linux c 线程 - 上
【四】线程 1. 线程的创建 #include <pthread.h> int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*routine)(void *), void *arg); pthread_t *thread:指向线程标识符的指针,用于存储新创建线程的 ID。 const p…...
2024年河南省职业院校 技能大赛高职组 “大数据分析与应用” 赛项任务书(四)
2024 年河南省职业院校 技能大赛高职组 “大数据分析与应用” 赛项任务书(四)) 背景描述:任务一:Hadoop 完全分布式安装配置(25 分)任务二:离线数据处理(25 分࿰…...
Model Context Protocol - Prompts
1. 概述 Model Context Protocol (MCP) 提供了一种标准化的方式,使服务器能够向客户端暴露提示模板(prompts)。Prompts 是服务器提供的结构化消息和指令,用于与语言模型进行交互。客户端可以发现可用的提示、获取其内容ÿ…...
dify创建第一个Agent
1、首先LLM模型必须支持 Function Calling 由于deepseek-R1本地化部署时还不支持,所以使用 qwq模型。 2、创建空白 Agent 3、为Agent添加工具 4、测试 当未添加时间工具时 询问 时间 如下 5、开启时间工具 询问如下...
⭐算法OJ⭐判断二叉搜索树【树的遍历】(C++实现)Validate Binary Search Tree
图论入门【数据结构基础】:什么是树?如何表示树? 之前我们有分别讲解二叉树的三种遍历的相关代码实现: ⭐算法OJ⭐二叉树的前序遍历【树的遍历】(C实现)Binary Tree Preorder Traversal ⭐算法OJ⭐二叉树的…...
深度解析 | Android 13 Launcher3分页指示器改造:横线变圆点实战指南
一、需求背景与技术挑战 在Android 13系统定制开发中,我们面临将Launcher3桌面从传统双层架构优化为现代单层布局的挑战。原生系统采用的分页横线指示器在视觉呈现上存在两点不足: 风格陈旧不符合Material You设计规范 空间占用较大影响屏幕利用率 通…...
