lxc+btrfs - 循環シンボリックリンクを持つディレクトリを作成した後、削除すると古いファイルハンドルが発生する

lxc+btrfs - 循環シンボリックリンクを持つディレクトリを作成した後、削除すると古いファイルハンドルが発生する

環境:

  • Virtualbox 仮想マシンの Debian 提示
  • ゲストとコンテナでルートアカウントを使用する
  • 仮想マシン内部のlxcコンテナ
  • btrfsのlxcコンテナルートファイルシステム
  • VMゲストで実行するとうまく機能しますが、コンテナでは機能しません。
  • コンテナとデフォルトのbtrfsファイルシステムに存在するフォルダで実行すると正常に動作します。
  • 新しいサブディレクトリのコンテナで実行すると失敗する(デフォルトではデルタ)

ruby-buildからRubyをインストールしようとすると、奇妙な問題が発生します。インストールプロセス中に25,000行を超える構成スクリプトを実行し、以下を実行します。

mkdir d
ln -s f d
rm d/f
rmdir d

以降、現在のディレクトリハンドルは古くなっており、「ls」を実行すると次のような結果になります。

ls: cannot open directory .: Stale file handle

少し判断しようとした後、コンテナ内でのみ発生し、ベースイメージに存在しないフォルダで実行した場合にのみ発生することがわかりました。

たとえば、デフォルトイメージにはすでに/rootがあるため、/rootで4つのコマンドを実行すると正常に動作します。ただし、/root/somesubdir で実行すると失敗します。 /tmp と /opt でも同じことが起こります (/mount は 1 つだけあり、/tmp または /opt に特別なものはありません)。 /tmp または /opt では正常に動作しますが、特定のサブディレクトリに作成した場合は動作しません。

/run(tmpfs マウント) でコマンドを実行すると、コンテナのサブディレクトリで正しく実行されます。

これは私のマウントです。

Filesystem                         1K-blocks     Used Available Use% Mounted on
/var/lib/lxc/base_container/rootfs  37747708 20436096  16331024  56% /
udev                                   10240        0     10240   0% /dev
tmpfs                                4097824       12   4097812   1% /dev/shm
tmpfs                                4097824   106600   3991224   3% /run
tmpfs                                   5120        0      5120   0% /run/lock
tmpfs                                4097824        0   4097824   0% /sys/fs/cgroup

私はこれが生成されるd / fファイルの珍しい点だと思います。それ自体への循環シンボリックリンクです。

何が間違っているのか、解決策のアイデアはありますか?

ベストアンサー1

おすすめ記事