我已使用cifs-utils
. 在 Linux 端查看一些图像时,它们会在视觉上显示失真/损坏,但在 Windows 端会很好。
示例 1(左:Linux,右:Windows)
示例 2(左:Linux,右:Windows)
在某些情况下,使用 Firefox (69.0),图像根本不会显示,只显示一个空白边框,文件位置位于左上角。在 Chrome (76.0.3809.132) 中,它会显示一个非常损坏的图像。
我已经尝试过一些故障排除:
- 将文件夹重新安装在相同和不同的位置。相同的图像总是失真/损坏。
- 使用不同的(备份)Windows NAS。
有没有人经历过这种情况并知道是什么原因造成的?
我正在使用的 Apache2 (2.4.25 Debian) 版本存在一个已知错误,它以一种有趣的方式提供 CIFS 文件,导致文件损坏。对于那些使用 Apache2 的人,您可能会处理
httpd.conf
文件sites-enabled
夹中的文件。在我的交钥匙 Django 发行版中,它是一个在文件夹中调用django.conf
的sites-enabled
文件,但它本质上与httpd.conf
.默认情况下,Apache2 使用 MMAP,但是在使用 CIFS 时这会被破坏。从文件系统上的文件中获取 md5sum 时,您将不断获得不同的哈希值。这就是导致问题的原因。
要亲自查看,只需使用以下方法获取 md5sum:
wget http://localhost/file -O -|md5sum
多次运行此行,您将看到 md5sum 每次都不同。要在 Apache2 配置文件中关闭 MMAP:
cd
至../apache2/sites-enabled/
nano django.conf
或者httpd.conf
ServerName localhost
添加EnableMMAP Off
.conf
文件底部添加一个<directory>
指向您的 CIFS 文件夹的标签。我的看起来像这样:<Directory "/etc/www/djsys/static/bom/images/part-img/"> </Directory>
.conf
文件,然后重新启动 Apache2service apache2 restart
。MMAP 现在应该已关闭,您的 CIFS 上的文件不应再损坏。
由于我在诊断 CIFS Windows 共享上的损坏文件的略有不同*(尽管可能相关?)问题时发现了这个问题,所以我将添加我发现的内容。
在我的情况下,我正在将大文件从 Ubuntu 20.04 VM(使用
cifs-utils
)写入 Windows 网络共享(位于同一台机器上,由主机操作系统共享),即使文件大小,许多文件在 Windows 端的 md5sum 检查都失败了匹配。似乎对我有用的是
cache=none
在我的 CIFS 配置中设置。更改后,相关行如下所示:如果有人想要更多信息,我在这里找到了这个解决方案(以及问题的详细描述): https ://forums.sonarr.tv/t/strange-failures-on-cifs-mounts-solution/16741
更改后我的文件传输似乎有点慢(传闻),但到目前为止,它们都没有通过自动 md5sum 检查。我还没有尝试过更改
rsize
,wsize
如帖子中所述,但这可能会解决传输速度问题。*:与我的情况不同的是,问题描述了从 Windows 共享读取的问题,而我的问题正在写入已安装的共享。可能在读取操作期间我也有一些损坏的文件,但我不知道,因为在大多数检索过程中我没有执行 md5 检查,并且媒体内容似乎没有问题地显示。
我的文件损坏发生在 PHP 7.4.16 写入由 systemd 自动挂载的目录时(使用 cifs-utils 6.9-1ubuntu0.1)。