首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不间断睡眠中的smbd进程

不间断睡眠中的smbd进程
EN

Server Fault用户
提问于 2015-04-17 18:06:56
回答 1查看 1.3K关注 0票数 3

我有文件服务器运行FreeBSD 10.1。服务器的存储由镜像ZFS池中的两个HDD组成。

此服务器正在作为域成员运行Samba4.1。域控制器正在另一台服务器上运行(Windows 2012)。我使用winbind进行AD集成。

问题是,smbd有时(实际上经常)会被锁起来。从客户端的角度来看,Samba共享没有响应。

真正奇怪的是,在这种情况下,违规的smbd过程陷入了D状态:不间断睡眠。我不明白是什么导致了这一切。我不使用此服务器上的NFS挂载,所有Samba共享都位于本地ZFS池中。

这个问题特别恼人,因为我无法通过重新启动Samba来修复它:冻结的smbd进程不会响应SIGKILL。唯一的解决办法是重新启动。

以下是一些可能会有所帮助的ps aux信息:

代码语言:javascript
复制
root            628   0.0  0.7 295348 22688  -  Is   10:50AM   0:05.09 /usr/local/sbin/smbd --daemon --configfile=/usr/local/etc/smb4.conf
root            641   0.0  0.7 295856 22832  -  I    10:50AM   0:01.66 /usr/local/sbin/smbd --daemon --configfile=/usr/local/etc/smb4.conf
p#########    812   0.0  0.9 326684 27132  -  I    11:04AM   0:03.33 /usr/local/sbin/smbd --daemon --configfile=/usr/local/etc/smb4.conf
c#########  839   0.0  0.9 329220 27064  -  D    11:07AM   0:07.86 /usr/local/sbin/smbd --daemon --configfile=/usr/local/etc/smb4.conf
c#########  939   0.0  0.8 324996 26208  -  I    11:37AM   0:01.22 /usr/local/sbin/smbd --daemon --configfile=/usr/local/etc/smb4.conf
c#########  946   0.0  0.9 324988 26504  -  I    11:40AM   0:02.12 /usr/local/sbin/smbd --daemon --configfile=/usr/local/etc/smb4.conf
c######### 1077   0.0  0.8 325016 26232  -  I    11:46AM   0:02.00 /usr/local/sbin/smbd --daemon --configfile=/usr/local/etc/smb4.conf
c######### 1084   0.0  0.8 325640 26268  -  I    11:49AM   0:01.17 /usr/local/sbin/smbd --daemon --configfile=/usr/local/etc/smb4.conf
c######### 1107   0.0  0.9 326200 26864  -  I    11:55AM   0:01.73 /usr/local/sbin/smbd --daemon --configfile=/usr/local/etc/smb4.conf
c######### 1141   0.0  0.9 325960 26964  -  I    12:02PM   0:02.20 /usr/local/sbin/smbd --daemon --configfile=/usr/local/etc/smb4.conf
c######### 1167   0.0  0.9 326004 26608  -  I    12:08PM   0:01.14 /usr/local/sbin/smbd --daemon --configfile=/usr/local/etc/smb4.conf
c######### 1188   0.0  0.9 326192 27044  -  I    12:11PM   0:01.03 /usr/local/sbin/smbd --daemon --configfile=/usr/local/etc/smb4.conf
c######### 1195   0.0  0.9 326240 27080  -  I    12:15PM   0:01.15 /usr/local/sbin/smbd --daemon --configfile=/usr/local/etc/smb4.conf
c######### 1209   0.0  0.9 326256 26948  -  I    12:20PM   0:01.62 /usr/local/sbin/smbd --daemon --configfile=/usr/local/etc/smb4.conf
c######### 1250   0.0  0.8 322384 25768  -  D    12:25PM   0:00.39 /usr/local/sbin/smbd --daemon --configfile=/usr/local/etc/smb4.conf
c######### 1257   0.0  0.8 322384 25908  -  I    12:29PM   0:00.68 /usr/local/sbin/smbd --daemon --configfile=/usr/local/etc/smb4.conf
p#########   1773   0.0  0.8 322752 26004  -  I     2:57PM   0:00.45 /usr/local/sbin/smbd --daemon --configfile=/usr/local/etc/smb4.conf
p#########   1805   0.0  0.8 322752 25188  -  I     3:02PM   0:00.33 /usr/local/sbin/smbd --daemon --configfile=/usr/local/etc/smb4.conf
p#########   1809   0.0  0.8 322752 26040  -  I     3:04PM   0:00.74 /usr/local/sbin/smbd --daemon --configfile=/usr/local/etc/smb4.conf
p#########   1819   0.0  0.8 326980 26276  -  I     3:06PM   0:00.47 /usr/local/sbin/smbd --daemon --configfile=/usr/local/etc/smb4.conf
p#########   1825   0.0  0.8 322752 25952  -  I     3:08PM   0:00.72 /usr/local/sbin/smbd --daemon --configfile=/usr/local/etc/smb4.conf
root           2134   0.0  0.9 323208 26608  -  I     4:58PM   0:02.00 /usr/local/sbin/smbd --daemon --configfile=/usr/local/etc/smb4.conf
root           2160   0.0  0.8 322684 24588  -  I     5:06PM   0:00.78 /usr/local/sbin/smbd --daemon --configfile=/usr/local/etc/smb4.conf
root           2236   0.0  0.9 332140 28256  -  I     5:34PM   0:06.50 /usr/local/sbin/smbd --daemon --configfile=/usr/local/etc/smb4.conf

可以看出,在D状态中有两个smbd进程.使用procstat进行进一步检查:

代码语言:javascript
复制
# procstat -t 1250
PID    TID COMM             TDNAME           CPU  PRI STATE   WCHAN
1250 100817 smbd             -                  0  120 sleep   zfs

# procstat -k 1250
PID    TID COMM             TDNAME           KSTACK
1250 100817 smbd             -                mi_switch sleepq_wait sleeplk __lockmgr_args vop_stdlock VOP_LOCK1_APV _vn_lock vacl_get_acl sys___acl_get_file amd64_syscall Xfast_syscall


# procstat -t 839
PID    TID COMM             TDNAME           CPU  PRI STATE   WCHAN
839 100819 smbd             -                  1  120 sleep   filedesc
839 100820 smbd             -                  0  120 sleep   zfs# 

# procstat -k 839
PID    TID COMM             TDNAME           KSTACK
839 100819 smbd             -                mi_switch sleepq_wait _sx_slock_hard namei vn_open_cred zfs_getextattr VOP_GETEXTATTR_APV extattr_get_vp sys_extattr_get_file amd64_syscall Xfast_syscall
839 100820 smbd             -                mi_switch sleepq_wait sleeplk __lockmgr_args vop_stdlock VOP_LOCK1_APV _vn_lock knlist_remove_kq filt_vfsdetach knote_fdclose closefp amd64_syscall Xfast_syscall

procstat -f 839无限期地挂着..。

我不知道该从中吸取些什么。我很确定我的ZFS池是干净的,因为我最近清理了它:

代码语言:javascript
复制
scan: scrub repaired 0 in 3h10m with 0 errors on Fri Apr 17 13:36:50 2015

这两个HDD都很健康。也许是某个文件系统级别的损坏,而某个清除器无法检测/修复?有什么方法可以让我看到smbd冻结的文件吗?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2015-08-12 12:24:58

我的配置与来自zfs的AD连接服务器共享类似,并且在FreeBSD 10.1和11.0中经历了“睡眠”问题,以及几个版本的Samba 3和4。我开始注意到锁定主要发生在对现有文件的更改,而不是创建或删除。在运行了非常高的samba调试级别,并捕获了几个进程,就像它们变成了僵尸一样,我发现了一些东西,让我看到inotify中的一个问题。将此添加到samba配置中已经结束了一年半的问题。“内核更改通知=否”

票数 3
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/683623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档