私の設定は次のとおりです。
QEMU / KVMを持つ物理ホスト - > Dockerを持つ仮想マシン - > rtorrent Dockerコンテナ
内部に「data」というデータセットを持つ「main」というZFSプールがあります。 「データ」データセットは、提案されているようにvirtioカーネルモジュールを介して仮想マシンにインストールされます。このリンク。ここで、私のrtorrent Dockerコンテナはダウンロードボリュームを仮想マシンにマウントされているデータセットにマッピングします。
$ docker run -dt --name rtorrent-rutorrent --network=host -p 8080:80 -p 49160:49160/udp -p 49161:49161 -v /data/rtorrent:/downloads -e "NOIPV6=1" diameter/rtorrent-rutorrent:latest
これが私が混乱している部分です。コンテナに接続すると、タッチ、wgetを介して問題なくデータセットに書き込むことができます。ところで、rtorrentにtorrentを追加すると、何も書き込まれません。 「ダウンロード」状態で、ダウンロード速度がありません。 Docker VMローカルディスクを指すようにコンテナボリュームを変更すると、すべてが正常に機能します。
私はrtorrentプロセスを追跡しました(ここにリンク)しかし、ここには私に深い印象を与えることはあまりありません。どんなアドバイスも本当にありがとうございます。
答え1
この問題は次のように解決されます。https://unix.stackexchange.com/a/212014/245005
つまり、マウントオプションに "cache = mmap"というフラグを追加する必要があります。これでうまくいきます。