IT技术之家 网络技术 Seafile 企业版挂载群晖NAS网盘教程(解决非root用户访问权限问题)

    Seafile 企业版挂载群晖NAS网盘教程(解决非root用户访问权限问题)

    seafile 本身已经支持”快照(特有的版本镜像)“和文件历史,但是一旦底层物理存储故障,上层应用做的再好也是于事无补的。所以今天应很多同学要求,写一遍挂载群晖NFS教程数据迁移思路。

    总体思路

    1. 群晖上创建存储池并创建存储卷,我这里用的raid10,兼顾性能但是空间损失一半。
    2. 另外很多反馈把seafile直接安装在群晖的虚拟机中不更好,除非你是SSD存储卷或者能让系统运行在SSD上面,不然效果会很差,具体表现就是网页加载巨慢。
    3. 所以推荐seafile前端跑在单独的服务器上面,配置不需要太高。
      200G的SSD盘,4核16G内存(集成在线编辑推荐16G),数据存储在有raid保障的存储上面。
    4. seafile 安装可以参照:Centos8/Ubuntu 20 安装 seafile 8.0.11 专业版脚本快速安装

    挂载迁移步骤

    配置存储卷并共享(群晖)

    首先确保安装配置好群晖

    1、群晖上面创建一个共享文件夹Seafile,空间根据需要定义,这里已1T为例。

    • 开启【隐藏共享】,防止其他电脑对数据进行操作。
    • 关闭回收箱,历史版本seafile自身会处理,没有必要开启。

    2、关闭加密,配置容量为1T

    配置容量为1T

    3、新增NFS权限

    • 注意:Squash:一定要改成【无映射】,之前全部映射有个问题,就是挂载后文件无法修改文件所属用户,因为绑定映射为admin了。
    • 服务器名称或者IP:填写seafile主机IP
    • 记住最下面的挂载路径,挂载的时候会用到。

    4、其他用户访问权限设置

    如果还有非root用户访问,需要自定义添加Everyone读写权限。

    网上有很多版本说Linux的NFS挂载只能root用户,此处纠正下,并不是哦。只是群晖权限管控模式是基于文件夹-用户映射。这样的好处的权限管的细,但是缺点就是容易把人带到坑里去。

    添加Everyone 读写权限,这样非root用户也可以正常读写权限。

    临时挂载,并迁移数据到NFS上面

    1、创建临时迁移目录,并拷贝数据到群晖NFS共享盘上面

    #切换到seafile目录
    cd /opt/seafile/
    #创建临时迁移目录
    mkdir seafile-databak
    #挂载
    /usr/bin/mount -t nfs -o vers=3 192.168.31.205:/volume2/Seafile/ /opt/seafile/seafile-databak
    
    • 如果挂载提示如下错误,则需要安装nfs客户端

    安装客户端(挂载正常的不需要安装)

    #Redhat、Centos系:
    yum install nfs-utils
    #debian、Ubuntu系:
    sudo apt-get install nfs-common

    2、检查是否挂载

    df -h

    3、迁移已有的数据到群晖NFS盘上面

    注意:如果数据量很大,中途意外断开,可以重复执行。rsyc是增量同步,可以无限执行。

    /usr/bin/rsync -rvt /opt/seafile/seafile-data/*  /opt/seafile/seafile-databak/

    迁移速率差不多稳定在30M

    正式挂载到seafile数据存储目录,并设置开机自动挂载

    确保上面老数据迁移完成,如果是新安装seafile的基本秒结束。

    1、卸载临时挂载,并挂载到真实seafile的数据目录

    #卸载
    umount /opt/seafile/seafile-databak/
    #挂载到真实seafile目录
    /usr/bin/mount -t nfs -o vers=3 192.168.31.205:/volume2/Seafile/ /opt/seafile/seafile-data
    #设置权限
    chown -R seafile:seafile /opt/seafile

    2、设置开机自动挂载

    • 有两种办法,加到fstab或者rc.local
    • 这里偷懒就加到rc.local了。
    vi /etc/rc.local
    #并追加下面挂载脚本
    /usr/bin/mount -t nfs -o vers=3 192.168.31.205:/volume2/Seafile/ /opt/seafile/seafile-data
    #按 :wq 回车保存
    #给予执行权限
    chmod +x /etc/rc.d/rc.local

    fstab挂载方式(适用于Ubuntu机器)

    192.168.31.205:/volume2/Seafile  /opt/seafile/seafile-data  nfs vers=3,timeo=50,retrans=5,_netdev,nofail,auto  0  0

    参数意义:

    nofail:最重要的参数,允许挂载失败而不影响系统启动
    _netdev:告诉系统这是一个网络设备,在网络就绪后再尝试挂载
    auto:系统启动时自动挂载
    timeo=30:超时时间缩短为 3 秒
    retrans=3:重试次数减少到 3 次

    3、重启seafile主机验证

    更新:

    2022年12月5日:

    之前Squash设置为:全部映射为admin,虽然主机挂载后各个用户都有读写权限,但是却无法修改文件归属人,执行 chown 会提示不允许的操作。

    提示不允许的操作

    问题分析:因为Squash权限映射群晖上面设置了 全部映射为admin,所以是不允许更改文件归属用户的。

    所以修正Squash设置改成:不映射,但是又带来了新的问题,挂载的文件权限明明已经777了,其他用户(如seafile用户)却无法读写。因为群晖上根本没有seafile这个用户啊,群晖不认识。

     

    问题解决:

    既然知道问题了,就好解决了,就是给与共享文件夹Everyone的读写权限

    问题排查

    a、NFS已经开机自动挂载,但是seafile没有启动

    检查挂载目录权限是否正常,检查命令

    su - seafile -c "ls /opt/seafile/seafile-data"

    如果报没有权限,则执行chown -R seafile:seafile /opt/seafile

    如果手动挂载正常,开机就没有权限,排查思路从群晖上面入手,比如群晖上面的Square权限映射。

    其他问题,欢迎留言反馈,一起探索,互帮互助

    1、本站提供的软件均为 “试用版” 或者 “免费版”,仅供学习和研究使用
    2、友情提醒:内容全部搜集自网络,安装教程参照压缩包内的Readme.txt编写
    3、因使用本站软件产生的法律责任由使用者自行承担,本站不承担任何连带责任。
    4、如有内容不慎侵犯了您的权益,请速与我联系!
    如有转载请注明出处:https://www.ittel.cn/archives/12237.html
    guest
    14 评论
    内联反馈
    查看所有评论
    ignore612
    ignore612
    3 年 前

    seafile后端怎么挂载两个NAS的网盘

    大约摸咋
    大约摸咋
    3 年 前

    按照老师的说法,我到了挂载真实路径也成功了,chown的时候说没有这个seafile用户,然后重启seafile 也报错Job for seafile.service failed because the control process exited with error code.
    Apr 14 20:23:01 seafile.localdomain systemd[1]: Starting Seafile Server…
    Apr 14 20:23:01 seafile.localdomain seafile.sh[2520]: Your seafile server data directory “/seafile-data/seafile” is invalid or doesn’t exits.
    Apr 14 20:23:01 seafile.localdomain seafile.sh[2520]: Please check it first, or create this directory yourself.
    Apr 14 20:23:01 seafile.localdomain systemd[1]: seafile.service: main process exited, code=exited, status=1/FAILURE
    Apr 14 20:23:01 seafile.localdomain systemd[1]: Failed to start Seafile Server.
    Apr 14 20:23:01 seafile.localdomain systemd[1]: Unit seafile.service entered failed state.
    Apr 14 20:23:01 seafile.localdomain systemd[1]: seafile.service failed.

    大约摸咋
    大约摸咋
    3 年 前
    回复给  无欢不爱

    我在nfs的路径中含有seafile的文件夹,这个是没有用的对么?需要在新建一个seafile文件夹?

    大约摸咋
    大约摸咋
    3 年 前
    回复给  无欢不爱

    /dev/mapper/vg-lv        1.5T 1.4T 106G 93% /seafile-data
    172.16.220.99:/volume1/seafile  84T 1.4T  83T  2% /seafile-data/seafile-databak
    上面的是真实路径,下面的是我备份的路径,我切换的时候直接mount 172.16.220.99:/volume/seafile到seafile-data路径下么?

    大约摸咋
    大约摸咋
    3 年 前
    回复给  无欢不爱

    多谢

    yes168
    yes168
    3 年 前

    按照上述的方法挂载,报mount.nfs: access denied by server while mounting 192.168.0.9:/volume2/seafile/的错误,会是哪一步出了问题了?

    最后由yes168编辑于3 年 前
    yes168
    yes168
    3 年 前
    回复给  无欢不爱

    嗯嗯,解决好了,谢谢!还有个疑问,我想改一下默认gly的邮箱账号,这个需要在哪里更改了

    yes168
    yes168
    3 年 前

    楼主你好,everyone这个用户是群晖系统内置的,还是需要另外新建了

    联系我们

    联系我们

    QQ:877196754

    在线咨询: QQ交谈

    邮箱: ittel@qq.com

    工作时间:周一至周日,8:00-21:00
    返回顶部
    14
    0
    希望看到您的想法,请您发表评论x