在访问共享文件夹中使用PowerShell确定用户问题有一个很好的答案。继续您如何断开使用 powershell 脚本访问共享的用户的连接。
有一个名为OpenFiles的 Windows 命令行实用程序,但我更喜欢 PowerShell / WMI 解决方案。
我们有一个 linux 服务器,在我们的混合 windows/mac/linux 网络上设置了许多 samba 共享。如果我们转到\\192.168.x.x\share,则可以访问共享,但是我们无法通过其 netbios 名称(如smb.conf文件中的设置)访问服务器。它也没有在网络上列出,而所有其他机器都是——包括其他 linux 机器。
与这台特定的机器相比,我们看不到其他机器的配置有任何不同,除了它们是桌面 Ubuntu 机器并且这是一个“无头”CentOS 服务器。
这是配置文件:
[global]
workgroup = WORKGROUP # correct workgroup name for the network
netbios name = foobar # same as the hostname of the box
security = share
guest account = nobody
local master = no # tried yes, no difference
preferred master = no # tried yes, no difference
; wins support = yes
; dns proxy = yes
# shares …Run Code Online (Sandbox Code Playgroud) 我正在运行 Ubuntu 10.04 (lucid) samba 文件服务器。我有一个 Windows 7 客户端,它可以打开大量文件,同时一次复制数千个小文件。它收到错误“打开的文件太多”,此时等待几秒钟并单击“再试一次”继续下载。
我发现许多参考文献都说要增加 Samba 可用的打开文件的数量来解决问题。我认为这是一个好主意,我正在拼命尝试这样做……但无论我做什么,它都拒绝打开超过 1024 个文件,并且复制问题不会消失!
这是我尝试过的:
我给自己定ulimit -n 25000。
我还将 /etc/security/limits.conf 设置为:
* soft nofiles 25000
* hard nofiles 65000
root soft nofiles 25000
root hard nofiles 65000
Run Code Online (Sandbox Code Playgroud)
我确保 /etc/security/limits.d 中没有任何内容会覆盖其中的任何内容。
我已经检查过 sysctl fs.file-max = 199468 这已经足够了。
我找不到任何可能干扰 samba 的 apparmor 配置文件。
我limit nofile 25000 65000在 /etc/init/smbd.conf 中添加了一个节
我在 smb.conf 中设置了 max open files = 50000 并确认它通过 samba 日志文件生效:
[2011/10/28 01:30:16, 0] smbd/open.c:151(fd_open)
Too many open files, …Run Code Online (Sandbox Code Playgroud) 我有一个很奇怪的。
当我从两个不同的 Windows 2008 服务器下载文件(并且仅下载)时,我因过多的“TCP Dup ACK”和“TCP 快速重传”而丢失数据包。上传速度还行。
仅当客户端计算机(Win7)以 100mb/s 连接时才会发生这种情况。在 1GB 时,没有错误,我可以全速运行。如果我将客户端 nic 设置为 100Mb/s,我会收到很多“TCP Dup”错误并且下载速度下降到大约 2-5MB/s。上传速度为 10MB/s 或以上。
这仅发生在 Windows 2008 Server 机器上(戴尔,但硬件不同)。如果我在Win7客户端和Linux服务器之间传输,则不会出现此问题。
这就像 Server 2008 无法正确缩放 TCP 窗口,使交换机过载或其他什么,然后暂停流量。
由于设备较旧,部分网络以 100Mb/s 的速度运行,因此这确实在某些建筑物中造成了问题。
我在这里从客户端上传了一个 pcap 文件。 https://dl.dropboxusercontent.com/u/24907255/slow.pcap.gz
它显示了一个 50MB 的文件正在写入服务器,然后从服务器读回错误。
谢谢你的帮助。我难住了。
2013 年 11 月 28 日更多信息。
我关闭了整个网络,这样网络上只有一台客户端和一台服务器。问题没有变化。
如果我将每个接口、服务器、客户端和 Cisco 2960 交换机都设置为 100Mbs,那么问题就会消失。如果我将服务器和交换机接口设置为 auto 或 1Gbs,问题又回来了。
如果我用 Netgear 10/100 交换机绕过交换机并将客户端和服务器都设置为自动,我就没有问题。
我确实发现了这一点。在正常设置中,服务器以 1Gbs 切换,我在客户端和 Cisco 交换机之间插入 Netgear 10/100 交换机,我的速度问题更严重。速度从 5-7MB/s 到 2-3MB/s,是的,我尝试过固定和自动网络速度。这可以解释为什么某些建筑物与主 Cisco 交换机之间有 2 个交换机跃点的原因更多地存在速度问题。
继续ping。一切都在 1GB/s 时,我可以 ping …
windows-server-2008 network-share broadcom tcp-window-scaling
设置:计算机 A 有一个名为“ABC”的文件共享,完全控制给定域中的特定用户 X。所有机器上的操作系统:Windows Server 2008 R2,无防病毒软件
以用户 X 登录的计算机 B 和 C 上运行的服务需要写入计算机“A”上的此共享“ABC”。
有时,除非重新启动,否则共享“abc”将仅对计算机 B 可见,而对计算机 C 不可见。但是,如果我使用来自计算机 C 的 \ipaddress\abc 而不是 \hostname\abc,则有时可以访问共享(再次非常随机)。
同样发生这种情况时,我们无法从计算机 C 建立从服务到计算机 A 的 sql server 连接。
所以我已经从本论坛的其他相关问题中检查了常见的嫌疑人:
除了重新启动之外,我此时没有任何想法。我不能依赖重启,因为我们只能在维护时间重启。非常感谢任何帮助。
我在 172.16.0.0/24 网络前面有一个 VPN 服务器。在我的客户端是 192.168.1.0/24 网络。我能够从客户端成功地通过 VPN 连接到服务器网络,并且我正在尝试通过 TCP IP(例如,\172.16.0.20\Folder)安装网络共享。我在 172.16.0.20 的网络适配器上通过 TCP 启用了 NetBios。
但是,当我尝试挂载文件夹时,连接失败。我很肯定这是“私有网络”Windows 防火墙阻止了它。如果禁用专用网络 Windows 防火墙,则可以通过 VPN 安装文件夹而不会出现任何问题(保持公共网络防火墙启用)。但是,一旦我再次启用专用网络防火墙,安装就会失败。请注意,我可以毫无问题地将远程桌面连接到机器 (172.16.0.20)。
我尝试手动转发 UDP 端口 137 和 138,以及 TCP 端口 139。这似乎不起作用。我还需要启用其他功能吗?
\\host.example.com\ShareName\Tail\Components
|______________| |_______| |_____________|
host share tail
Run Code Online (Sandbox Code Playgroud)
我可以在 UNC 路径的尾部组件上找到大量资源,并且我假设主机组件遵循区分大小写的 DNS 规则,但是共享名又如何呢?
当您仅连接到主机而不指定共享名称时,您要连接的实现可以向您发送正确的共享大小写。当您直接连接到共享时,情况将如何处理?
我只能在 Samba 手册中看到一行,说明“部分和参数名称不区分大小写”,这实际上并没有说明任何一种方式(部分名称用于创建共享,但与该共享的连接可以以不同的方式处理)。我在 Windows 共享文件夹帮助中看不到有关案例的提及。
这是否意味着共享名实际上不区分大小写,并且没有人想过将其明确化,或者有人可以向我指出文档吗?
编辑:
根据微软的SMB2规范:
服务器必须按照 [MS-DTYP] 第 2.2.49 节中的指定解析缓冲区字段,以提取主机名和共享名组件。如果 Buffer 字段不是第 2.2.9 节中指定的格式,服务器必须使请求失败并返回 STATUS_INVALID_PARAMETER。否则,服务器必须提供从请求消息中解析的元组 <hostname, sharename> 以调用 [MS-SRVS] 第 3.1.6.8 节中指定的事件,通过解析服务器别名和评估共享范围来规范主机名。服务器必须使用<规范化主机名,共享名>在ShareList中查找共享。如果没有找到具有匹配的共享名称和服务器名称的共享,则服务器必须使请求失败并返回 STATUS_BAD_NETWORK_NAME。
因此,共享名没有标准化,而且我找不到任何表明合规实现必须不区分大小写地执行匹配的内容。
理想情况下,我正在寻找一些文档或来自在 Windows 和 Samba 之外的多种实现上测试过此问题的人的答案,讨论他们的发现。
但是,我目前尚未连接到网络位置。
如果输入,net use我会得到以下输出:
>net use
New connections will not be remembered.
There are no entries in the list.
Run Code Online (Sandbox Code Playgroud)
当我去映射驱动器时,它要求提供两次凭据,然后第二次失败并显示以下消息:
指定的网络文件夹当前使用不同的用户名和密码进行映射。
如果我尝试net use在控制台中映射它,我会得到:
net use z: \\[location]\Data /user:[username] [password]
System error 1219 has occurred.
Multiple connections to a server or shared resource by the same user, using more than one user name, are not allowed. Disconnect all previous connections to the server or shared resource and try again.
Run Code Online (Sandbox Code Playgroud)
没有连接,但是当我尝试映射驱动器时,它失败了,好像有连接一样。
windows network-attached-storage network-share net-use windows-10
在我的 LAN 中,我有一个 Windows 服务器和一个用于存储的 Synology NAS,它们直接连接到服务器并通过 VM 作为存储提供给客户端。服务器提供域控制器、主 VLAN 的 DNS 服务器和 DHCP 服务器功能。客户端和服务器都连接到交换机。
我想知道如果服务器离线,这会导致域、DHCP 服务器和 DNS 服务器关闭,客户端仍然可以使用网络并且客户端仍然可以找到 NAS?
如果我理解正确,已经分配了 IP 的设备可以工作并找到彼此,但新连接的设备不会?如果是这样,那么只要 IP 分配仍然有效,网络就会继续工作?
networking domain-name-system network-share ipv4 dhcp-server
我有以下 NFS 挂载:
server:path /mnt/path nfs rw,hard,intr,nfsvers=4,async 0 0
Run Code Online (Sandbox Code Playgroud)
对服务器的 ping 约为 60 毫秒,这是相当合理的,但对挂载的任何访问都非常慢。复制一个小图像需要10-30 秒,即使ls在小目录中也需要几秒钟。对于 NFSv3 和 NFSv4 都是如此。当每秒尝试大约 10 次写入时,就会发生这种情况。在没有负载的情况下,访问/写入时间会更短,但仍然远非即时。
这对我来说很奇怪,因为即使存在传输瓶颈,我也希望async让我的 stat 和 write 调用能够像往返一样快地返回,而不会阻塞这么长时间。
这让我想知道我的坐骑是否真的尊重这个async选项。在 /proc/mounts 中,列出了以下内容:
server:path /mnt/path nfs4 rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=xxx.xxx.xxx.xxx,local_lock=none,addr=xxx.xxx.xxx.xxx 0 0
Run Code Online (Sandbox Code Playgroud)
async未列出,但也没有列出sync,并且由于async应该是默认值,因此我不清楚该选项是否实际上处于活动状态。有办法告诉吗?
network-share ×10
networking ×3
windows ×3
filesystems ×2
samba ×2
broadcom ×1
dhcp-server ×1
file-sharing ×1
firewall ×1
ipv4 ×1
net-use ×1
nfs ×1
powershell ×1
ulimit ×1
vpn ×1
windows-10 ×1