VirtualBox ShareFolder 充当Apache2 源路径时导致的微妙

最近发现了一个很有意思的问题。问题的场景是在  Windows Server 2003 x64 + VirtualBox+ Ubuntu 12.04x64 , 具体有点复杂,分几步来说。

1、 apache2 设置了一个 Alias,原始的Directory 设置的是 /media/sf_images ,这个文件夹是使用VMBox的  Shared folders 从宿主的路径  E:\images 映射过来的,读写权限。

2、Ubuntu下的 一个后台服务不断的产生一些图片,并在完成后向数据库中写入完成标志。

3、用户通过网络访问apache2,一个 fcgi 负责响应用户的图片请求。这个FCGI 检测数据库的标志,把确定存在的image返回用户,不存在的,返回一个卡通的“稍等”图片。

问题出来了。有时,用户通过网络获得的png 图片的 CRC是错误的,在IE上是一个叉叉,预览也木有。用Firefox和PS可以打开,但分析下载下来的文件,发现CRC确实不对。于是跑到Ubuntu下,发现也无法预览,说明这个文件确实没有写对。

接下来,神奇的事情发生了! 一气之下,重启虚拟机后,相同的文件竟然自己变成对的了!!

兴奋之下,反复尝试,重演错误,总结出了现象的特点:

同一个文件,产生后在宿主机器WinSvr003看着是正确的,在Ubuntu虚拟机下,却有些地方不对了(一般是尾部几个字节)!这样,apache2返回的流肯定有问题。只有重启虚拟机,才能解决问题。初步思考,原因应该出在VMBox的共享文件夹的机制上,但限于水平无法深究。

原本为了方便在更换虚拟机时,image文件夹可以不变,但看来还有问题啊!解决方法:新建了一个虚拟硬盘来存放images,而不是使用共享文件夹,问题再也木有出现。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/46f9adc9d7fa5636ab8337b2a44268ff.html