web-dev-qa-db-ja.com

バインドのマウントとdf出力

パーティションがあります / dev/sdb1、マウントされます /データ。/etc/fstabには、

/dev/sdb1           /data           ext4  defaults  1 2

そのパーティションがマウントされた後、次のバインドマウントがあります。

/data/backups/f17/opt   /opt            none  rw,bind   0 0
/data/backups/f17/home  /home           none  rw,bind   0 0
/data/var/www/html      /var/www/html/  none  rw,bind   0 0

すべての取り付けは問題なく行われます。

問題は、dfを実行すると、sdb1に関連する唯一のエントリが「/ data」ではなく「/ opt」を指していることです。

例えば。:

/dev/sdb1   240233144 196081648 31925236 86% /opt

dfが元のマウントポイントを表示することを期待/したい、つまり /データ、 の代わりに / opt。または、少なくともall sdb1に関連するマウントポイントを表示します。/optバインドマウントポイントをumountした場合、dfは喜んで/ dataを表示します(他の2つのバインドマウントがまだ奇妙にマウントされている場合でも)。

端末でマウントコマンドを実行しても、動作に違いはありません(/ etc/fstabを使用するmount -aでシステムに実行させる)。

findmnt --dfのようなものを使用して、マウントされているすべてのファイルシステムのより良い画像を取得できることはわかっていますが、dfを使用したいと思います(そしてdfを他のエイリアスにしたくありません)。

  • Fedora 21
  • カーネル3.19.3-200.fc21.x86_64
  • df(GNU coreutils)8.22
  • util-linux 2.25.2からマウント

ありがとう。

更新
(追加情報)

ファイル/proc/mountsは、4つのマウントポイントをすべて示しています。

/dev/sdb1 /data ext4 rw,relatime,data=ordered 0 0
/dev/sdb1 /var/www/html ext4 rw,relatime,data=ordered 0 0
/dev/sdb1 /home ext4 rw,relatime,data=ordered 0 0
/dev/sdb1 /opt ext4 rw,relatime,data=ordered 0 0
5
atreyu

バインドマウントは元のマウントと同等です。オリジナルとしてマークされているものとコピーとしてマークされているものはありません。バインドマウントは、シンボリックリンクではなく、この点でハードリンクのようなものです。

GNU coreutils 8.21(変更ログを正しく読んだ場合)なので、dfは各ファイルシステムを1回だけ報告するように努めています。古いバージョンには、無視されないマウントポイントごとに1つのエントリが含まれていたため、 bind mountを実行すると、複数のエントリが生成されます。dfは、各ファイルシステムの最新のマウントポイントを、それが判別できる限り表示します。あなたの場合、dfは_/opt_を報告し、_/data_、_/opt_が最後に追加されたため。

オプション_-a_を渡して、最近のcoreutilsで各ファイルシステムのすべてのエントリを報告します。これにより、パス引数を渡さない場合、通常は無視されるファイルシステムがリストされます。パス引数を渡した場合、dfは最新のマウントポイント以外は何も報告しないと思います。

dfを別のものにエイリアスしたくない場合は、dfをカスタム実装に置き換えるか、dfと異なるものを報告する必要があります。あなたが好きなもの。最新のマウントポイントではなく最も早いマウントポイントが必要な場合は、_df -a_を呼び出して、関心のあるデバイスの最初の一致のみを保持するのが正解です。