设置:
- 一个 Windows 和一个 Ubuntu 服务器托管在 VMware ESXi 中
- 我在 Windows 共享上有一个 6GB 的文件
- Windows 共享安装在 Ubuntu 上
smbmount
- 在目录中创建指向 6GB 文件的符号链接,该
public_html
目录可由 Apache 读取
问题:
wget
下载 2130706432 字节后出错Connection closed at byte 2130706432. Retrying.
(正好 2032 MiB,每次都一样)- Apache
206 Partial Content
没有在日志中显示任何错误就返回 - 即使我从下载相同的错误
localhost
- 使用 Firefox 而不是时出现类似错误
wget
md5sum
如果我或cp
Ubuntu 上的文件没有错误,这表明smbmount
Windows Server 可以使用 6GB 文件。- 如果 Apache 从本地磁盘提供 6GB 文件,则没有错误,这表明 Apache 在处理 6GB 文件时没有问题。
任何想法为什么 Apache/symlink/smbmount/Windows 一起使用时会导致错误?我该如何解决这个问题?
使用的软件:
- VMware ESXi 4 更新 1
- 视窗服务器 2008 R2
- Ubuntu 8.04 服务器,vmxnet3
- 阿帕奇 2.2.8
- mount.cifs 1.10-3.0.28a(由 返回
smbmount -V
)
编辑:如果我使用 CentOS 4.8 x64 而不是 Ubuntu 8.04,Apache 将在字节 2147483647 (2GiB - 1byte) 而不是 2130706432 (2GiB - 16MiB) 处断开连接。
我在工作时遇到了类似的问题,请查看此错误报告。问题似乎出在 EnableSendfile 上,因此请将其放入虚拟主机或全局配置的 Apache 配置中:
启用发送文件关闭
我很确定这实际上是您的 Windows 共享的问题,您需要将块大小设置为 4k 并允许它以客户端可以正确解释的方式共享它。很遗憾,这可能需要重新格式化卷。
为什么不使用其他分发文件的方法?6GiB 很多,如果没有 MD5sum 检查,它可能容易出错。在这种情况下是否可以通过分布式系统进行交付?
您提到 smbmount 作为 cifs 共享的挂载方式。smbmount 和 mount.cifs 是两种不同的动物。smbmount对一个文件有 2GB 的限制。但是 smbmount 是旧方法,已被 mount.cifs 取代。