0. 微超主板登陆

超微主板使用配置 ipmi 功能流程介绍

用户名和密码都是: ADMIN
可以在配置-用户中更改密码
  • 设置时间

    Untitled

  • 显示画面

    在远程控制中找到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端口(在添加密钥后将密码登录关闭)

    Untitled

    1. ssh进一步设定可以在命令行进行

      ~~sudo vi /etc/ssh/sshd_config
      
      # 在末尾添上
      PasswordAuthentication no
      PermitRootLogin no
      AllowUsers sun
      X11Forwarding no~~
      
    2. 先创建.ssh文件夹: sudo ssh-keygen

    3. 在.ssh下创建authorized_keys文件, 里面添加需要ssh登录这个nas的其他设备的公钥id_rsa.pub内容.

    4. 重启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. 外接磁盘挂载

  1. 查看移动硬盘的信息

    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
    
  2. 挂载硬盘

    sudo mkdir /mnt/ex_device
    sudo mount /dev/sdh1 /mnt/ex_device
    
  3. 导入外界磁盘数据

    方法1: 直接在命令行cp

    方法2: 使用truenas网页端 Datasets - Import Data, 系统一次只能导一个外部磁盘.

    Docs Hub | Importing Data

  4. 卸载硬盘

    如果使用完硬盘需要卸载硬盘:

    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

  • 这篇文章详细介绍了ups和主从两台NAS的配置方法

  • 简略版, shell下查看没有问题的话, 拔掉UPS的总电源测试NAS是否能够顺利关机即可.

    Untitled

    Untitled

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 可以看到目前通电风扇的各种参数.

Untitled

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秒, 硬盘便会被访问一次, 发出一次噪音.

Move System Dataset SCALE

17.2. 重启时卡住的问题

Untitled

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

    Untitled

    • 进入系统后, 发现服务器中的所有设置和pool都保留着.
  • 可能相关的讨论:

    Server can only boot from “Initial-install”

17.3. SSH: permission denied (publickey)

  • 如果ssh突然登不上了, 可能是权限问题

    .ssh文件夹的权限: 700 authorized_keys权限: 600 用户文件夹权限: 700

17.4. 更换硬盘