É possível.
Nota: minha experiência no assunto é muito limitada; a seguinte resposta é baseada principalmente em pesquisas na web, eu mesmo não verifiquei isso na prática.
Em geral, o que quer que você monte em um /foo/bar/mountpoint
, ele cobre completamente o conteúdo anterior do mountpoint
(embora os programas mantenham seus identificadores já obtidos para arquivos "ocultos", eles ainda são válidos). Sua segunda montagem de bind fez exatamente isso.
O truque é usar um tipo de montagem que combine dois ou mais diretórios em um. O conceito geral é chamado union mount . Existem várias implementações:
Em geral, uma união pode ser montada sobre um dos diretórios combinados ou para um ponto de montagem completamente diferente (de preferência vazio). Na minha opinião, este último é uma solução mais elegante.
Estes são alguns aspectos que você pode considerar ao escolher um tipo de montagem de união para suas necessidades:
- Alguns deles estão disponíveis somente como FUSE , alguns são mesclados no kernel do Linux (nesse caso, eles podem ter Implementações FUSE também). Verifique estas preocupações de segurança em relação ao FUSE.
- O que acontece quando você altera diretamente um dos diretórios combinados? ( questão de exemplo ).
-
O que acontece quando você adiciona um novo arquivo a um sindicato. Mhddfs parece promissor para mesclar diretórios contendo arquivos de mídia. Verifique este artigo , diz:
When you create a new file in the virtual filesystem,
mhddfs
will look at the free space, which remains on each of the drives. If the first drive has enough free space, the file will be created on that first drive. Otherwise, if that drive is low on space (has less than specified bymlimit
option ofmhddfs
, which defaults to 4 GB), the second drive will be used instead. If that drive is low on space too, the third drive will be used. If each drive individually has less thanmlimit
free space, the drive with the most free space will be chosen for new files.It's even more than that; if a certain drive runs out of free space in the middle of a write (suppose, you tried to create a very large file on it), the write process will not fail;
mhddfs
will simply transfer the already written data to another drive (which has more space available) and continue the write there. All this completely transparently for to the application which writes the file (it will not even know that anything happened).Eu não sei como outras implementações lidam com isso. Eu acho que eles foram originalmente criados para permitir a união de um sistema de arquivos com capacidade de gravação com um sistema de leitura (como em essa questão ), então qualquer um deles pode não ser tão flexível quanto o mhddfs quando se trata de (re) distribuição de arquivos. Não tenho certeza, você pode querer testá-lo por conta própria.