bind assembly et sortie df

J'ai une partition, / dev / sdb1 , qui est montée sur / data . Dans / etc / fstab j'ai:

/dev/sdb1 /data ext4 defaults 1 2 

Une fois que cette partition est montée, j'ai les montures suivantes:

 /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 

Tout le assembly est fait très bien.

Le problème est que quand je lance df , la seule input que je reçois concernant sdb1 pointe vers "/ opt", pas "/ data".

par exemple:

 /dev/sdb1 240233144 196081648 31925236 86% /opt 

J'attends que / df affiche le sharepoint assembly d'origine, c'est-à-dire / data , au lieu de / opt . Ou à tout le less, montrer tous les points de assembly liés à sdb1. Si je monte le sharepoint assembly / opt bind, alors df heureusement montre / données (même si les deux autres fixations bind sont toujours montées, étrangement).

Il n'y a pas de différence de comportement si je fais les commands de assembly dans le terminal (vs laisser le système le faire via mount -a , qui utilise / etc / fstab).

Je sais que je peux utiliser quelque chose comme findmnt --df pour get une meilleure image de tous les filesystems montés, mais je veux utiliser df (et je ne veux pas alias df à autre chose).

  • Fedora 21
  • kernel 3.19.3-200.fc21.x86_64
  • df (GNU coreutils) 8.22
  • mount d'util-linux 2.25.2

Merci.

METTRE À JOUR
(append plus d'informations)

Le file /proc/mounts affiche les quatre points de assembly:

 /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 

Un assembly bind est équivalent à l'original. Il n'y en a pas un qui est marqué comme l'original et qui est marqué comme une copy. Les supports de binding sont comme des liens durs à cet égard, pas comme des liens symboliques.

Depuis GNU coreutils 8.21 (si je lis correctement le changelog), df s'efforce de ne rapporter chaque système de files qu'une seule fois. Les versions plus anciennes incluaient une input par sharepoint assembly non-ignoré, de sorte qu'une binding de binding entraînerait plusieurs inputs. df affiche le dernier sharepoint assembly pour chaque système de files, pour autant qu'il puisse le déterminer. Dans votre cas, df reports /opt , not /data , car /opt été ajouté en dernier.

Passez l'option -a pour get même les coreutils récents pour signaler toutes les inputs pour chaque système de files. Cela entraîne également la list des filesystems qui seraient normalement ignorés si vous ne transmettez pas d'argument de path. Si vous passez un argument de path, je pense que df ne signale jamais rien mais le dernier sharepoint assembly.

Si vous ne voulez pas alias df , il vous faudra soit replace df par une implémentation personnalisée, soit devoir vivre avec df rapporter quelque chose de différent de ce que vous voudriez. Si vous avez besoin du premier sharepoint assembly plutôt que du dernier, une bonne solution consisterait à appeler df -a et de conserver uniquement la première correspondance pour l'appareil qui vous intéresse.