seafile 本身已经支持”快照(特有的版本镜像)“和文件历史,但是一旦底层物理存储故障,上层应用做的再好也是于事无补的。所以今天应很多同学要求,写一遍挂载群晖NFS教程加数据迁移思路。
目录
总体思路
- 群晖上创建存储池并创建存储卷,我这里用的raid10,兼顾性能但是空间损失一半。
- 另外很多反馈把seafile直接安装在群晖的虚拟机中不更好,除非你是SSD存储卷或者能让系统运行在SSD上面,不然效果会很差,具体表现就是网页加载巨慢。
- 所以推荐seafile前端跑在单独的服务器上面,配置不需要太高。
200G的SSD盘,4核16G内存(集成在线编辑推荐16G),数据存储在有raid保障的存储上面。 - seafile 安装可以参照:Centos8/Ubuntu 20 安装 seafile 8.0.11 专业版脚本快速安装
挂载迁移步骤
配置存储卷并共享(群晖)
首先确保安装配置好群晖
1、群晖上面创建一个共享文件夹Seafile,空间根据需要定义,这里已1T为例。
- 开启【隐藏共享】,防止其他电脑对数据进行操作。
- 关闭回收箱,历史版本seafile自身会处理,没有必要开启。
2、关闭加密,配置容量为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
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权限映射。
其他问题,欢迎留言反馈,一起探索,互帮互助。
seafile后端怎么挂载两个NAS的网盘
具体看下官网手册,支持的
按照老师的说法,我到了挂载真实路径也成功了,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.
提示是 “/seafile-data/seafile” 目录不存在,你看下
我在nfs的路径中含有seafile的文件夹,这个是没有用的对么?需要在新建一个seafile文件夹?
/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路径下么?
原来目录结构要和新的一致
多谢
按照上述的方法挂载,报mount.nfs: access denied by server while mounting 192.168.0.9:/volume2/seafile/的错误,会是哪一步出了问题了?
新增NFS权限,那里有没有把你的服务器IP加进去?
嗯嗯,解决好了,谢谢!还有个疑问,我想改一下默认gly的邮箱账号,这个需要在哪里更改了
seafile的管理员用户? 再建个 管理员用户,然后新的管理员登录进去把老的管理员删除。
楼主你好,everyone这个用户是群晖系统内置的,还是需要另外新建了
内置的,不用新建