0. 微超主板登陆
用户名和密码都是: ADMIN
可以在配置-用户中更改密码
-
设置时间

-
显示画面
在远程控制中找到
iKVM/HTML5, 可以启动远程管理服务器, 在网页端直接看到开机时显示的bios等画面, 就不需要外接显示器了.
1. 账号设置Local Users
-
在Credentials - Local Users中可以添加用户, 但是无法在系统盘下设定用户目录.
-
这个用户用于管理员操作, 所以在设置账号的时候给这个用户的
Auxiliary Groups添加builtin-administrator -
设定用户目录, 这样ssh登录时会自动到达这个路径
sudo mkdir /mnt/[存储池的名称]/home/[user文件夹] cd /mnt/[存储池的名称]/home/ sudo chgrp [用户名] [user文件夹] sudo chown [用户名] [user文件夹] # 文件夹下的所有文件(如果存在)都需要改一下用户所属
-
-
安全起见.
admin账号建议锁定. 锁定后这两个账号就不能用于网页和ssh登陆了.
2. 调整时间
TrueNas的系统时间如果与Bios的时间不一致, 会导致Reporting数据无法显示.
-
web页面设置 System Settings - General
修改
Localization - timezoom为当地时间Asia/Shanghai -
ssh登录相同user
-
查看时间是否正确, Local time 为现在当地的时间, Universal time时UTC的时间, 应与当地时间有时差, 注意RTC time是主板设置的时间, 应与local time相同.
$ timedatectl Local time: Wed 2023-04-19 21:32:13 CST Universal time: Wed 2023-04-19 13:32:13 UTC RTC time: Wed 2023-04-19 13:32:13 Time zone: Asia/Shanghai (CST, +0800) System clock synchronized: no NTP service: n/a RTC in local TZ: no -
设定Local time (这个和Time zone应该是和True nas网页端设定的时间同步的)~~sudo date --set 2023-04-18 sudo date --set 19:15:38~~
-
-
BIOS设定时间
- 需要进入bios中设置, 这和在ipmi网页端设定的时间不同步.
- 这个时间必须是UTC+0.
3. 修改各个服务的端口
-
网页http端口: System Settings - General - Gui, 修改Web Interface HTTP Port端口, 以后的网页登录时需要加端口: http://192.168.31.229:[端口]
-
ssh端口: System Settings - Services, 修改ssh端口(在添加密钥后将密码登录关闭)

-
ssh进一步设定可以在命令行进行~~sudo vi /etc/ssh/sshd_config # 在末尾添上 PasswordAuthentication no PermitRootLogin no AllowUsers sun X11Forwarding no~~ -
先创建.ssh文件夹:
sudo ssh-keygen -
在.ssh下创建
authorized_keys文件, 里面添加需要ssh登录这个nas的其他设备的公钥id_rsa.pub内容. -
重启ssh服务
sudo systemctl restart ssh
-
-
webdev, smb: System Settings - Services, 修改端口.
4. 设定磁盘定期扫描
磁盘的健康程度需要定时扫描, 但不需要过于频繁. Data Protection页面下需要设定以下任务:
- Scrub Tasks: 设定定时打扫磁盘任务, At 09:00, on day 8 and 21 of the month (Threshold Days: 7)
- S.M.A.R.T. Tests: 设定扫描磁盘健康状态任务, At 09:00, on day 1, 15, and 28 of the month (All disk; Type: Long)
5. 共享文件夹和smb服务
How To Setup TrueNAS Scale Apps With Shares For Host Path Volumes
这个有一点复杂, 需要建立dataset, 给user账号权限.
尽量使不同的服务使用不同的datasets, 建立不同账号进行访问以保证安全.
-
这里有个权限问题, 在smb datasets下是无法修改文件夹的权限的, 可能会导致无法进行zip等问题.
Operation not permitted-
这时候需要把文件解压到smb共享的文件夹外面, 再进行其他操作.
-
使用rsync可以在复制文件到smb文件夹内的时候不改变权限, 复制完再改用户和组
rsync -avu --no-perms [source] [dest] sudo chown -R [user] [file] sudo chgrp -R [user] [file]-
rsync参数
rsync 命令,Linux rsync 命令详解:远程数据同步工具 - Linux 命令搜索引擎
-v, --verbose 详细模式输出。 -q, --quiet 精简输出模式。 -c, --checksum 打开校验开关,强制对文件传输进行校验。 -a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。 -r, --recursive 对子目录以递归模式处理。 -R, --relative 使用相对路径信息。 -b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。 --backup-dir 将备份文件(如~filename)存放在在目录下。 -suffix=SUFFIX 定义备份文件前缀。 -u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件,不覆盖更新的文件。 -l, --links 保留软链结。 -L, --copy-links 想对待常规文件一样处理软链结。 --copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结。 --safe-links 忽略指向SRC路径目录树以外的链结。 -H, --hard-links 保留硬链结。 -p, --perms 保持文件权限。 -o, --owner 保持文件属主信息。 -g, --group 保持文件属组信息。 -D, --devices 保持设备文件信息。 -t, --times 保持文件时间信息。 -S, --sparse 对稀疏文件进行特殊处理以节省DST的空间。 -n, --dry-run现实哪些文件将被传输。 -w, --whole-file 拷贝文件,不进行增量检测。 -x, --one-file-system 不要跨越文件系统边界。 -B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节。 -e, --rsh=command 指定使用rsh、ssh方式进行数据同步。 --rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息。 -C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件。 --existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件。 --delete 删除那些DST中SRC没有的文件。 --delete-excluded 同样删除接收端那些被该选项指定排除的文件。 --delete-after 传输结束以后再删除。 --ignore-errors 及时出现IO错误也进行删除。 --max-delete=NUM 最多删除NUM个文件。 --partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输。 --force 强制删除目录,即使不为空。 --numeric-ids 不将数字的用户和组id匹配为用户名和组名。 --timeout=time ip超时时间,单位为秒。 -I, --ignore-times 不跳过那些有同样的时间和长度的文件。 --size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间。 --modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0。 -T --temp-dir=DIR 在DIR中创建临时文件。 --compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份。 -P 等同于 --partial。 --progress 显示备份过程。 -z, --compress 对备份的文件在传输时进行压缩处理。 --exclude=PATTERN 指定排除不需要传输的文件模式。 --include=PATTERN 指定不排除而需要传输的文件模式。 --exclude-from=FILE 排除FILE中指定模式的文件。 --include-from=FILE 不排除FILE指定模式匹配的文件。 --version 打印版本信息。 --address 绑定到特定的地址。 --config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件。 --port=PORT 指定其他的rsync服务端口。 --blocking-io 对远程shell使用阻塞IO。 -stats 给出某些文件的传输状态。 --progress 在传输时显示传输过程。 --log-format=formAT 指定日志文件格式。 --password-file=FILE 从FILE中得到密码。 --bwlimit=KBPS 限制I/O带宽,KBytes per second。 -h, --help 显示帮助信息。
-
-
-
SMB服务连接的datasets会自动设置ACL权限, 导致datasets内chmod等操作全都被禁止, 禁用ACL后指定用户就可以随意修改chmod了.
- 注意ACL可以给不同的用户不同的权限. 禁用ACL之后, 只能简单的设置单一用户权限.
- 修改位置 Truenas web ui - Datasets - Permissions
6. 外接磁盘挂载
-
查看移动硬盘的信息
sudo fdisk -l ... Disk /dev/sdh: 7.28 TiB, 8001562869760 bytes, 15628052480 sectors Disk model: Game Drive Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: gpt Disk identifier: 0D305159-052E-4FEE-8800-8B0D64CC501E Device Start End Sectors Size Type /dev/sdh1 2048 15628050431 15628048384 7.3T Microsoft basic data -
挂载硬盘
sudo mkdir /mnt/ex_device sudo mount /dev/sdh1 /mnt/ex_device -
导入外界磁盘数据
方法1: 直接在命令行cp
方法2: 使用truenas网页端
Datasets - Import Data, 系统一次只能导一个外部磁盘. -
卸载硬盘
如果使用完硬盘需要卸载硬盘:
sudo umount /dev/sdh1
6.2. windows samba文件夹挂载到nas
sudo mount -o username=[user],password=[passwd] //[ip addr]/[windows共享的盘符或文件夹] /mnt/ex_device
7. 内存缓存arc
zfs 对 arc 的需求很大,在普通的 linux 系统上,zfs_arc_max 为 0, 代表最大 arc 占用是总内存的一半,比如 48G 的内存就会占用 24G 用作 arc, 剩下 24G 用作系统和应用服务.
不过如果你没有那么多 docker 要跑的话,鉴于 arc 对 zfs 系统的巨大作用,我建议将 zfs_arc_max 设置为总内存的 75%. 比如总内存 48G,zfs_arc_max 就设为 35G, 也就是 $35*1024^3=37580963840$
设置方法就是在 system setting - Advanced - Init/Shutdown Scripts - add
-
type:
command -
command:
echo 37580963840 >> /sys/module/zfs/parameters/zfs_arc_max -
when:
pre init
8. 防火墙配置
注意配置文件中不可以有空格在每条命令之前, 比如空白行中有一个空格也会报语法错误.
*filter
# Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
# Accepts all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allows all outbound traffic
# You could modify this to only allow certain traffic
-A OUTPUT -j ACCEPT
# multiport setting
-A INPUT -m multiport -p udp --dports [port1,port2] -j ACCEPT
# single port setting
-A INPUT -p tcp --dport [port] -j ACCEPT
# Allows SSH connections for script kiddies
# THE -dport NUMBER IS THE SAME ONE YOU SET UP IN THE SSHD_CONFIG FILE
-A INPUT -p tcp -m state --state NEW --dport [ssh port] -j ACCEPT
# Allow ping
# -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
# log iptables denied calls (access via 'dmesg' command)
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
# Reject all other inbound - default deny unless explicitly allowed policy:
-A INPUT -j REJECT
-A FORWARD -j REJECT
COMMIT
载入设置
# 清除老规则
sudo iptables -F
# 设定和存放现有的规则
sudo mkdir -p /etc/iptables
sudo vi /etc/iptables/iptable_rules
sudo chmod +x /etc/iptables/iptable_rules
sudo iptables-restore < iptable_rules
# 查看现在的规则
sudo iptables -L -n
- 设置开机自启动
-
在
system setting - Advanced - Init/Shutdown Scripts - add -
type:
command -
command:
/usr/sbin/iptables-restore < /etc/iptables/iptable_rules -
when:
post init
-
9. UPS设置
设置 System Settings - Services - UPS
10. frp客户端设置
wget https://github.com/fatedier/frp/releases/download/v0.43.0/frp_0.43.0_linux_amd64.tar.gz
tar -xzvf frp_0.43.0_linux_amd64.tar.gz
cd frp_0.43.0_linux_amd64
-
客户端设置
vi frpc.ini [common] server_addr = xxxxxxxx server_port = xxx token = xxxxxxxxxxxxxxxxxxxxxxxxxx [ssh] type = tcp local_ip = 127.0.0.1 local_port = xxx remote_port = xxx
11. 开启apt使用权限
默认是无法使用apt安装软件的.
sudo chmod +x /usr/bin/apt*
12. docker
据说docker将在23年10月从scale版本中移除. 可以以后的版本可以需要用apt-get安装一下docker
Use docker-compose on TrueNAS SCALE 22.12 (Bluefin) without Kubernetes
# 先看看默认有没有docker compose, 有的话开一下权限就好了.
sudo chmod +x /usr/bin/docker-compose
# 如果没有, 再安装
sudo apt-get update
sudo apt-get install docker-compose-plugin
# 如果需要proxy
sudo apt-get -o Acquire::http::proxy="http://xxx:xxx" install xxxx
# 查看compose版本
sudo docker compose version
Docker Compose version v2.10.2
- 使用docker compose一键安装
- 准备好docker-compose.yaml文件
- 运行命令
sudo docker-compose up
- 后台启动服务并指定文件夹
docker-compose -f docker-compose.yaml up -d - 停止服务
docker-compose -f docker-compose.yaml stop - 停止并删除服务(!!!!!!!!危险!!!!!!!!!, 使用之后mysqldocker中的tables全部删除)
docker-compose -f docker-compose.yaml down
14. 风扇调速
查看风扇的最大最小转速, 比如, 风扇的转速为 $400 \sim 1700\pm10\%$ RPM
一般在主板ipmi网页端Server health - sensor readings 可以看到目前通电风扇的各种参数.

sudo ipmitool sensor thresh FAN1 lower 100 200 450
- FAN1 是需要修改参数的风扇编号, 如 FANA, FAN1, FAN2 等等.
- 100 是不可恢复下限转速(Low NR).
- 200 是下紧急临界转速(Low CT).
- 450 是非紧急临界转速.
- 注意: 当主板的PWM风扇模式为Optimal时, 如果风扇Low CT设定太高, 主板会不停调动风扇满速→减速→满速循环, 声音很吵.
16. 有用的软件
- nethogs 网络监视用, 查看什么进程在调用网络
17. Troubleshutting
17.1. 硬盘噪音问题
日常使用的过程中发现一个问题, 每隔5秒, 硬盘便会被访问一次, 发出一次噪音.
- 原因
- The open txg is committed to the pool periodically (SPA sync) and
zfs_txg_timeoutrepresents the default target upper limit. zfs_txg_timeout默认为5秒- 由于这种访问会随着磁盘读写动态调整, 所以可以将这个阈值设置大一点, 在磁盘空闲的时候就能做到降低访问频率的效果.
- The open txg is committed to the pool periodically (SPA sync) and
- 解决方法:
-
将/sys/module/zfs/parameters/zfs_txg_timeout从默认的5改为120
-
设置开机命令
echo 120 > /sys/module/zfs/parameters/zfs_txg_timeout
-
17.2. 重启时卡住的问题

-
解决方法, 每次重启都在引导处选择初始化安装, 这样boot的时候会继续下去.

- 进入系统后, 发现服务器中的所有设置和pool都保留着.
-
可能相关的讨论:
17.3. SSH: permission denied (publickey)
-
如果ssh突然登不上了, 可能是权限问题
.ssh文件夹的权限: 700authorized_keys权限: 600 用户文件夹权限: 700
17.4. 更换硬盘
-
因为突然断电等情况, 出现阵列索引错误. 如果磁盘损坏需要更换的话也可以使用.

