bind de montagem e saída de df

5

Eu tenho uma partição, / dev / sdb1 , que é montada em / data . Em / etc / fstab eu tenho:

/dev/sdb1           /data           ext4  defaults  1 2

Depois que a partição é montada, tenho as seguintes montagens de ligação:

/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

Toda a montagem é feita muito bem.

O problema é que quando executo df , a única entrada que recebo referente a sdb1 aponta para "/ opt", não "/ data".

por exemplo:

/dev/sdb1   240233144 196081648 31925236 86% /opt

Espero / quero que df mostre o ponto de montagem original, ou seja, / data , em vez de / opt . Ou, no mínimo, mostre all os pontos de montagem relacionados a sdb1. Se eu umount o / opt ligar ponto de montagem, df felizmente mostrará / data (mesmo que as outras duas montagens de ligação ainda estejam montadas, estranhamente).

Não há diferença no comportamento se eu fizer os comandos de montagem no terminal (vs deixar o sistema fazer isso via mount -a , que usa o / etc / fstab).

Eu sei que posso usar algo como findmnt --df para obter uma imagem melhor de todos os sistemas de arquivos montados, mas eu quero usar df (e eu não quero apelido df para qualquer outra coisa).

  • Fedora 21
  • kernel 3.19.3-200.fc21.x86_64
  • df (GNU coreutils) 8.22
  • monte a partir do util-linux 2.25.2

obrigado.

ATUALIZAÇÃO
(adicionando mais informações)

O arquivo /proc/mounts mostra todos os quatro pontos de montagem:

/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
    
por atreyu 09.04.2015 / 15:35

1 resposta

4

Uma montagem de ligação é equivalente ao original. Não há um que esteja marcado como original e marcado como cópia. As montagens de ligação são como links rígidos nesse aspecto, não como links simbólicos.

Desde GNU coreutils 8.21 (se eu ler o changelog corretamente), df se esforça para reportar cada sistema de arquivos apenas uma vez. As versões mais antigas incluíam uma entrada por ponto de montagem não ignorado, portanto, uma montagem de ligação resultaria em várias entradas. df mostra o ponto de montagem mais recente para cada sistema de arquivos, até onde ele pode determinar. No seu caso, df relatórios /opt , não /data , porque /opt foi adicionado por último.

Passe a opção -a para que até mesmo os coreutils recentes relatem todas as entradas para cada sistema de arquivos. Isso também faz com que os sistemas de arquivos que normalmente seriam ignorados sejam listados, se você não passar um argumento de caminho. Se você passar um argumento de caminho, acho que df nunca informa nada além do último ponto de montagem.

Se você não quiser alias de df a outra coisa, terá que substituir df por uma implementação personalizada ou ter que conviver com df relatando algo diferente do que gostaria. Se você precisar do ponto de montagem mais antigo em vez do mais recente, uma solução sensata seria chamar df -a e reter apenas a primeira correspondência do dispositivo em que você está interessado.

    
por 10.04.2015 / 03:11