首页
Search
1
v2ray异常错误之二
3,310 阅读
2
linux时区设置
2,698 阅读
3
DB2常用操作
2,173 阅读
4
websphere修改jvm内存xmx和xms
1,929 阅读
5
nfs客户端文件属主为nobody的现象
1,552 阅读
技术
生活
运动
游戏
电影
登录
Search
标签搜索
docker
linux
troubleshooting
nginx
secure
truenas
mysql
windows
python
esxi
docker swarm
oracle
zabbix
tomcat
blog
dsm
群晖
rpa
freenas
db
yuc
累计撰写
291
篇文章
累计收到
0
条评论
首页
栏目
技术
生活
运动
游戏
电影
页面
搜索到
5
篇与
的结果
2024-01-04
多版本nfs挂载的问题
nfs挂载不上的问题 这个配置可能客户端挂载不上: /data 192.168.1.100(rw,no_root_squash) 使用 nfsv3和v4都提示错误,要么是没权限,要么是目录不存在。其实权限和目录在server上都是存在的 增加参数,配置如下: /data 192.168.1.1(rw,no_root_squash,fsid=0) 在增加此目录后, nfsv4就把 /data 作为根目录导出了,所以 v3和v4分别挂载如下: v4挂载 192.168.10.17:/ on /docker v3挂载 # 与之前一致 192.168.10.17:/data on /opt/data 挂载子目录 nfs默认只能挂载父目录,可以增加参数,使得客户端可以挂载子目录,配置如下: /data 192.168.1.1(rw,no_root_squash,fsid=0,crossmnt) 尝试挂载子目录 # 使用nfsv3挂载,v4未测试未知 192.168.10.17:/data/services/xxxx/workdir on /opt/docker/workdir
2024年01月04日
6 阅读
0 评论
0 点赞
2023-12-19
Truenas scale 配置多个nfs server
0x1 问题背景 以前truenas core自带的nfs服务,分别共享了 docker swarm 的共享目录(2.7T),jenkins 数据目录(280G),seafile 数据目录(900G)。这三个目录非常多的小文件,甚至在统计目录大小的时候,十来分钟都无法出结果 也许是这个原因,默认的nfs服务共享了多个超多小文件的目录,以及共享到了多台机器。导致经常出现 INPUT/OUTPUT error,现象如下: 客户端挂载参数: 192.168.10.16:/mnt/dev1/jenkins on /var/jenkins_home type nfs4 (rw,noatime,nodiratime,vers=4.0,rsize=131072,wsize=131072,namlen=255,hard,noresvport,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.3.106,local_lock=none,addr=192.168.10.16,_netdev) 创建新文件直接报错,但是创建目录没有问题 [root@localhost 123]# touch 1122 touch: cannot touch ‘1122’: Input/output error [root@localhost 123]# touch 2233 touch: cannot touch ‘2233’: Input/output error [root@localhost 123]# touch 3344 touch: cannot touch ‘3344’: Input/output error [root@localhost 123]# mkdir 1122 [root@localhost 123]# mkdir 2233 [root@localhost 123]# mkdir 3344 [root@localhost 123]# touch 4455 touch: cannot touch ‘4455’: Input/output error [root@localhost 123]# touch 5566 touch: cannot touch ‘5566’: Input/output error 重新客户端挂载,会正常一会儿,但是有一会儿又不行了 [root@localhost 123]# cd [root@localhost ~]# umount /var/jenkins_home/ [root@localhost ~]# mount -a [root@localhost ~]# cd /var/jenkins_home/123/ [root@localhost 123]# touch 1111 [root@localhost 123]# touch 2222 [root@localhost 123]# touch 3333 [root@localhost 123]# touch 4444 [root@localhost 123]# touch 5555 touch: cannot touch ‘5555’: Input/output error [root@localhost 123]# touch 6666 touch: cannot touch ‘6666’: Input/output error [root@localhost 123]# touch 1111 [root@localhost 123]# touch 2222 [root@localhost 123]# touch 3333 [root@localhost 123]# touch 4444 [root@localhost 123]# touch 5555 touch: cannot touch ‘5555’: Input/output error [root@localhost 123]# touch aaaa touch: cannot touch ‘aaaa’: Input/output error [root@localhost 123]# touch bbbb touch: cannot touch ‘bbbb’: Input/output error [root@localhost 123]# mkdir 5555 [root@localhost 123]# mkdir 6666 抓包发现很多过期的告警,很明显是不正常的,nfs的会话正常也不应该创建、列出一下就会有多个过期的响应 这个问题尝试了很多方案,使用不同的nfs版本挂载,把一部分数据迁移到其他的池以减少单个池的读写或者文件数量,但结果仍然不行。所以最后怀疑是Truenas core的nfs问题,有可能小文件太多性能不足、有可能多个nfs目录对应多个不同的客户端(网络传输过程中客户端ip识别有问题,导致会话过期)等,所以最后下定决心使用多个nfs server来解决这个问题 0x2 目标和方案 目标: 每个需要共享的数据集目录使用单独的nfs server,以单独维护每个共享目录,以及减少单个共享目录访问的客户端ip,以及文件并发
2023年12月19日
2 阅读
0 评论
0 点赞
2023-07-31
nfs优化与错误Lock reclaim failed、Input/output error
0x0 异常 挂载目录卡住,查看 /var/log/messages 有如下错误: NFS: nfs4_reclaim_open_state: Lock reclaim failed 0x1 参数优化 先说说系统参数优化: _netdev,vers=4.0,rw,noatime,nodiratime,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport,proto=tcp 基本上挂载的时候跟直接使用这些参数即可,其中 vers=4.0 需要显示的写出来,centos7测试使用 vers=4 或者不写的情况下,使用 mount 可以观察得到版本为 4.1 ,所以为了使用 4.0 版本,一定要显示写 4.0 0x2 服务优化 如果并发较大的情况下,可以增大 nfs 的进程数,以提高并发 0x3 系统优化 linux对nfs客户端同时请求数进行了限制,可以用下面的命令查询,大部分机器默认是2,是比较小的。可以通过以下命令查询当前的数值: cat /proc/sys/sunrpc/tcp_slot_table_entries 内核编译的默认最大是2,可以增大设置成128,需要重新挂载nfs echo "options sunrpc tcp_slot_table_entries=128" >> /etc/modprobe.d/sunrpc.conf echo "options sunrpc tcp_max_slot_table_entries=128" >> /etc/modprobe.d/sunrpc.conf sysctl -w sunrpc.tcp_slot_table_entries=128 优化后重启机器,或者重新挂载nfs PS. 服务器 fstab 或者命令挂载实例: /etc/fstab 192.168.xx.xx:/aaa/bbb /opt/bbb nfs _netdev,vers=4.0,rw,noatime,nodiratime,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport,proto=tcp 0 0 mount mount -t nfs -o _netdev,vers=4.0,rw,noatime,nodiratime,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport,proto=tcp 192.168.xx.xx:/mnt/dev1/aaa /tmp/aaa 2023.12.07 补充更新 上面的内核参数以及挂载方法只是当时临时解决了问题,但是后来在其他机器上无法解决。所以并不是一个最终方案。试过了nfs3、nfs4.0、nfs4.1版本,更换过机器多种版本内核,仍然无法解决,可以参考抓包内容: 在挂载4.0版本的时候,ls文件卡住,包内容如下: 可以看到双方有非常多的设置 clientid、确认 的操作,这显然是不正常的 在挂载4.1版本的时候,ls文件很快,创建文件、读取文件、vi文件错误,但是创建目录可以 抓包内容(仅对vi做抓包、后续观察more是同样的问题): 可以看到有非常多的 NFS4ERR_EXPIRED 这明显也是不正常的,因为不管是链接还是会话,都不可能这么快过期,在一个 vi 或者 more 的时间过期多次 关于此错误代码的解释 13.1.5.3. NFS4ERR_EXPIRED (Error Code 10011) A stateid or clientid designates locking state of any type that has been revoked or released due to cancellation of the client's lease, either immediately upon lease expiration, or following a later request for a conflicting lock. 在后续的查阅资料中也基本没有相关的案例、或者没有解决办法。于是猜测是 openbds 的 nfs BUG 之类。但是业务太多,其他几个挂载点目前没问题,不好重启 nfs 服务。 基于我们场景的现状,小文件非常多,有大量web项目war包解压出来的,还有jenkins打包的代码文件,所以目前的想法是采用多个 nfs 服务来提供这些不同服务的挂载。首先是避免大量读写小文件到一个 nfs 中处理不过来,再就是出现问题的时候,其中某个nfs重启也不影响其他的。
2023年07月31日
5 阅读
0 评论
0 点赞
2022-04-24
nfs查看哪些客户端ip挂载了
nfs服务端如何确定使用的客户端呢? 正常情况下,我们使用nfs的规范应该是开放指定ip,但有时候我们开放了整个网段,如何确定当前nfs服务端有哪些客户端接入了呢? 查阅了一些nfs文档,都没有找到如何在服务端列出当前连接的客户端,或者使用推荐了命令均没有效果(输出空白) 可以使用笨一点的办法,查出服务器当前连接 netstat -atnpl | more ,然后根据端口号进行过滤吧
2022年04月24日
900 阅读
0 评论
0 点赞
2022-01-06
nfs客户端文件属主为nobody的现象
环境背景 服务器版本:Centos6 nfsv4 客户端版本:Centos6或者Centos7 挂载版本为nfsv4 问题现象 客户端挂载时候选择nfsv4版本或者默认是nfsv4版本时,挂载后非root用户创建的文件属主为nobody,这样导致某些服务普通用户读写文件会有权限问题 如何解决 **方法1:**修改文件权限为777,这样的话所有用户都有读写权限,但有可能导致不安全 **方法2:**修改客户端挂载版本为nfsv3,此方法未测试可行性 **方法3:**服务端系统使用centos7,在centos7之后nfs模块/sys/module/nfsd/parameters/nfs4_disable_idmapping的值默认为Y **方法4:**在服务端系统需要使用centos6,客户端挂载版本使用nfsv4时,可尝试做如下处理: 修改服务端模块的idmap值 echo Y > /sys/module/nfsd/parameters/nfs4_disable_idmapping 增加文件/etc/modprobe.d/nfs.conf,添加如下内容 options nfs nfs4_disable_idmapping=1 options nfsd nfs4_disable_idmapping=1 第三步:重启rpcbind,nfs服务 **方法5:**尝试在客户端和服务端创建相同的用户/组,并且分配相同的uid和gid **方法6:**配置idmapd服务,配置文件/etc/idmapd.conf,还未测试可行性 关于此问题说明 因为nfsv4使用idmapd来映射客户端和服务端用户名,如果客户端与服务端文件属主不一致或者服务端无此用户那么就会映射成nobody。最后centos7上的服务端idmapd模块默认是关闭的,所以影响范围应该只有centos6的nfsv4服务端上。
2022年01月06日
1,552 阅读
0 评论
0 点赞