Perguntar ao sistema de arquivos se ele está montado

2

Como posso ver se um sistema de arquivos (ext3) é montado perguntando diretamente ao sistema de arquivos (ou seja, da mesma forma que o sistema faz quando inicializa e vê que não foi montado corretamente)? Verificar a saída de mount não é bom porque o sistema de arquivos pode ser montado por uma máquina virtual.

Eu sei que posso executar fsck e ele será cancelado se o sistema de arquivos estiver montado, mas não preciso realmente verificar o sistema de arquivos.

    
por Brian 20.05.2010 / 20:24

5 respostas

1

O sistema de arquivos não sabe se está montado ou não, apenas se estiver sujo ou limpo. Não tenho certeza de qual SO a VM está executando, mas alguns podem montá-la somente para leitura e ela permanecerá limpa. Também poderia ter sido desmontado incorretamente, portanto sujo, mas não de fato em uso.

    
por 20.05.2010 / 20:29
1

Os sistemas de arquivos na inicialização na maioria das distribuições usam mount -a . Ele monta todos os sistemas de arquivos no fstab com auto especificado, que faz parte da especificação default .

Para ext2 / ext3, tune2fs pode modificar e exibir as configurações que fazem com que o sistema de arquivos seja analisado . Por exemplo, -c permite que você especifique quantas montagens até que o sistema de arquivos seja selecionado. Por fim, sua suposição sobre o processo de inicialização não é exata.

mount é a solução para ver se está montada. Com o ext3, não acredito que o "status de montagem" esteja armazenado na partição. Se você descrever por que você está em um armazenamento compartilhado ou NFS, poderemos fornecer uma recomendação aplicável à sua situação específica.

    
por 20.05.2010 / 20:39
1

Repense sua arquitetura. Se você precisar acessar um sistema de arquivos a partir de vários nós, coloque-o no LVM. Você então tem algumas opções.

  1. Você pode importar um volume quando precisar e exportá-lo quando terminar.
  2. Ou, se você for um pouco mais rigoroso, poderá definir tags de propriedade que restringem o local em que elas serão ativadas.

Não importa o que o ext3 oferece; você pode restringir o acesso a uma camada inferior.

    
por 20.05.2010 / 22:04
0

Isso depende do sistema de arquivos. Alguns sistemas de arquivos notam se estão "montados" e armazenam um bit em uma região de informação específica do sistema de arquivos. A maioria dos sistemas de arquivos não, já que isso impediria a operação correta em um hard reboot (o sistema de arquivos ainda pensaria que está montado). Alguns sistemas de arquivos lembram mais informações do que "atualmente montadas". Por exemplo, o ZFS lembra se ele está montado e qual computador o montou pela última vez, portanto, uma reinicialização rígida funciona corretamente, mas é difícil montar um sistema de arquivos ZFS montado em uma SAN acidentalmente.

    
por 20.05.2010 / 21:06
0

porque não escrever um script usando FSSTAT=df | grep <filesystem mount point>

e depois testá-lo usando if [ ! -n "$FSSTAT" ] onde você tomaria a decisão com base no resultado

você pode fazer um loop nos sistemas de arquivos que deseja testar mencionando-os explicitamente em seu script ou aplicando os valores da saída do comando mount como em:

for FS in <replace with back quote> mount | grep ext3 | cut -c 26-43 <replace with backquote> ;do; FSSTAT=df | grep $FS; if [ ! -n "$FSSTAT" ]; ... do somehting; else; ... do something else; fi; done

desculpe, lidar com a formatação deu um código ruim

    
por 22.05.2010 / 07:57