收起左侧

TrueNAS无法舍弃,虚拟机nfs挂载邪修解决方案

1
回复
68
查看
[ 复制链接 ]

8

主题

10

回帖

0

牛值

江湖小虾

分享一下我的搞机历程

我的TrueNAS用了至少得有5年了,中间经历过一次找朋友借盘迁移扩容存储池,还添加了很多“娱乐”性质的vdev,从以前的aio到存算分离再到又把TrueNAS变成虚拟机挂到esxi里面,折腾了很久,乐趣也很多,不过TrueNAS确实是越更新越迷惑了,从之前的把应用从docker换成containerd,再到虚拟机不自带显示组件需要自己再去安装个vnc才能访问,我现在已经在24.10版本很久没升级了。

图片.png

我确实很期待飞牛能支持zfs的那一天,不过目前我还是确实很想让飞牛能把数据存到nas里而不是我给这个单独的物理机分的单块的硬盘里,容量太小而且也没有冗余,之前还在用飞牛自带的备份工具把飞牛里的相册备份到nas里,然后前段时间突发奇想用nfs挂载到用户路径下应该也能实现

图片.png

以下是具体搞机过程:

TrueNAS的nfs共享这样设置,下面的主机授权最好只填写飞牛的ip

图片.png

#nas的管理员用户id和组id最好与飞牛一致,这样用smb新增文件不容易出问题
#在飞牛中用id查看当前账户的用户id,飞牛需要新建一个组,在web端操作即可,新建组后添加管理员用户

vim /etc/fstab
#新增下列内容
————————————————————————————————————————————————————————————————————————————
<你的TrueNAS地址>:/<你的nfs挂载地址> /vol2/<你的用户id>/<你的挂载目录> nfs defaults 0 0
192.168.1.100:/mnt/你的pool/你的数据集/你的文件夹 /vol2/1000/nfs nfs defaults 0 0
<格式就这样,我多写几行是举例子>:/<记得不要有中文> /<vol几看你自己的盘,一般是vol1,我整了两块盘就用的是这个而已> nfs defaults 0 0
————————————————————————————————————————————————————————————————————————————
mount -a
#测试一下fstab有没有写错
systemctl daemon-reload
#挂载尝试一下在文件管理器能否看到nas的文件
systemctl enable rc-local.service
systemctl start rc-local.service
touch /etc/rc.local
vim /etc/rc.local
#写入下列内容
————————————————————————————————————————————————————————————————————————————
#!/bin/sh -e

/root/mounta.sh &

exit 0
————————————————————————————————————————————————————————————————————————————
Touch /root/mounta.sh
Vim /root/mounta.sh
#写入下列内容
————————————————————————————————————————————————————————————————————————————
#!/bin/bash

# 最大重试次数
MAX_RETRIES=20
# 重试间隔(秒)
RETRY_INTERVAL=5

# 日志记录(可选)
LOG_FILE="/var/log/mount_and_reload.log"

log() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"
}

log "开始执行挂载和daemon-reload操作"

attempt=1
while [ $attempt -le $MAX_RETRIES ]; do
    log "尝试第 $attempt 次执行"
  
    # 尝试执行 mount -a
    if mount -a 2>/dev/null; then
        log "挂载命令执行成功"
  
        # 尝试执行 systemctl daemon-reload
        if systemctl daemon-reload; then
            log "daemon-reload 执行成功"
            log "所有操作完成,脚本退出"
            exit 0
        else
            log "daemon-reload 执行失败"
        fi
    else
        log "挂载命令执行失败"
    fi
  
    # 如果还有重试机会,等待后继续
    if [ $attempt -lt $MAX_RETRIES ]; then
        log "等待 ${RETRY_INTERVAL} 秒后重试..."
        sleep $RETRY_INTERVAL
    fi
  
    attempt=$((attempt + 1))
done

log "达到最大重试次数,操作失败"
exit 1
————————————————————————————————————————————————————————————————————————————

图片.png

最后相册新增文件夹没有权限问题就万事大吉了,我这个操作其实每个用户还是需要去单独新增nfs挂载,也许有更优雅的方式我没有想到?欢迎大家来优化一下这个邪修操作

收藏
送赞
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

8

主题

10

回帖

0

牛值

江湖小虾

6 天前 楼主 显示全部楼层

飞牛的截图好像被吞了,重新补一下:

a66fc556-b4b6-4486-bb3e-50dc0dcfb2b2.png

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则