Como o Linux monitora os sistemas de arquivos?

3

Como eu sei, o Linux tem uma camada abstrata de todos os sistemas de arquivos e essa camada é VFS . Se eu criar um novo sistema de arquivos, devo seguir as regras feitas pelo VFS (consulte " Anatomy of o comutador do sistema de arquivos virtual Linux "para mais informações). Depois de criar esse novo sistema de arquivos, vou montá-lo na hierarquia de diretórios. Mas eu tenho um problema aqui: como o sistema operacional Linux conhece meu sistema de arquivos?

Na verdade, pode haver muitos sistemas de arquivos no Linux. Alguns deles são montados e podem ser encontrados com o comando mount , outros não são montados, mas você pode montá-los sempre que desejar. Esses desmontados são registrados em algum lugar no sistema operacional? Eu sei que há dois arquivos /etc/fstab e /etc/filesystems podem estar preocupados com a minha pergunta, mas não tenho certeza.

    
por xanpeng 08.11.2011 / 13:23

2 respostas

2

Sistemas de arquivos que não são montados não estão acessíveis no momento. Você pode modificá-los por meios indiretos, como acessar diretamente o dispositivo subjacente (para sistemas de arquivos armazenados em um disco local) ou acessá-los de outra máquina (para sistemas de arquivos de rede). Mas por outro lado, sistemas de arquivos desmontados não existem no que diz respeito ao sistema operacional. Dada a existência de sistemas de arquivos em rede (entre outros), existe um suprimento inesgotável de sistemas de arquivos desmontados (todos os diretórios em cada).

Pense no arquivo /etc/fstab como um arquivo de configuração para o comando mount . Ele contém atalhos, para que você possa chamar mount /path/to/mount/point ou mount /dev/device_name e mount procurará uma linha correspondente em /etc/fstab e concluir a linha de comando com um nome de dispositivo ou ponto de montagem, um tipo de sistema de arquivos e opções de montagem. Se uma entrada tiver a opção user , qualquer usuário poderá chamar o comando mount nessa entrada (em geral, mount está reservado para root).

Além disso, /etc/fstab lista os sistemas de arquivos montados no momento da inicialização. Todas as entradas nesse arquivo que não possuem a opção noauto são montadas no momento da inicialização com as opções fornecidas. Geralmente, há outros sistemas de arquivos não mencionados neste arquivo que são montados por scripts de inicialização (em um sistema Linux típico, isso inclui /dev , /dev/pts , /proc , /sys e alguns outros).

/etc/filesystems é um recurso raramente usado do mount no Linux que permite personalizar seu comportamento quando você não passa um tipo de sistema de arquivos ou passa auto . Sem esse arquivo, o mount tenta os tipos de sistema de arquivos listados em /proc/filesystems . Os tipos de sistema de arquivos são tentados em seqüência: se a montagem com a primeira entrada falhar, mount tentará o segundo e assim por diante.

    
por 09.11.2011 / 01:44
3

Resposta curta é que ela não sabe.

Mas existem maneiras de dar sugestões. Historicamente, isso era feito por meio de um rótulo na tabela de partições de um disco fixo. Mas isso ainda é apenas uma dica sobre o que o sistema de arquivos está lá - algumas ferramentas vão depender desta dica (por exemplo, mkfs - que é apenas um simples front end para mkfs.umsdos, mkfs.ext3, mkfs.reiserfs ....)

Outra abordagem é tentar farejar o tipo de sistema de arquivos lendo bytes da partição bruta (o mount faz isso para selecionar entre os diferentes tipos compatíveis com o MSDOS). Ou manter um banco de dados de sistemas de arquivos em identificadores de dispositivos conhecidos.

Devido à diversidade de sistemas de arquivos, não há uma abordagem unificada que seja sempre precisa.

Assim, o sistema usará o tipo de sistema de arquivos (ou pelo menos a família) que o administrador informa para usar.

    
por 08.11.2011 / 14:57