我正在 ubuntu-VM 中运行 rtorrent。虚拟机的主机与虚拟机共享一个文件夹“downloads”,通过添加以下行来将其安装在来宾中/etc/fstab
:
downloads /media/rtmount/downloads 9p trans=virtio,version=9p2000.L,rw 0 0
共享文件夹已正确安装,我可以导航到它并在其中创建文件,没问题(我使用与运行 rtorrent 相同的用户):
touch /media/rtmount/downloads/testfile
现在我想要 rtorrent 下载到 /media/rtmount/downloads。如果我启动 torrent,rtorrent 将创建文件,例如 /media/rtmount/downloads/ubuntu-14.10-desktop-amd64.iso 但永远不会开始下载。它将处于“正在下载”状态,但从未真正启动。
如果我将下载目录设置为其他目录,例如/home/peter/,它也会创建文件并开始按预期下载。
我不明白的是为什么它可以在共享文件夹中创建文件(也具有相应的文件大小)(因此它必须具有写入权限)但不会开始下载。从共享文件夹播种/上传不是问题,效果很好。
答案1
解决方案
cache=mmap
在安装选项中添加一个选项。
所以你会得到类似下面的东西:
downloads /media/rtmount/downloads 9p trans=virtio,version=9p2000.L,cache=mmap,rw 0 0
问题
当文件系统未实现 mmap 时,可能会出现此问题。如果没有 mmap,仍然可以创建和操作文件(如您所观察到的),但是 rTorrent 客户端需要 mmap 来下载文件。
您可以通过在 rTorrent 中启用存储日志记录来验证这一点。将以下内容添加到您的rtorrent.rc
以启用日志记录:
log.open_file = "storage", /tmp/rtorrent_storage.log
log.add_output = "storage_debug", "storage"
对于 mmap 问题,您在尝试下载 torrent 时应该会看到类似以下内容:
Could not create: memory:524288 block:1 errno:22 errmsg:Invalid argument.
资料来源:
https://www.kernel.org/doc/Documentation/filesystems/9p.txt https://github.com/rakshasa/libtorrent/issues/20(有点不同,但类似的问题)