Quais pontos de montagem existem em um sistema Linux típico?

32

Eu tenho 2 perguntas.

  1. Durante a instalação do Linux, especificamos espaço de memória para 2 pontos de montagem - root e swap. Existem outros pontos de montagem criados sem que os usuários notem?
  2. Esta afirmação está correta: "a montagem entra em cena somente quando se lida com diferentes partições. Ou seja, você não pode montar, digamos, / proc, a menos que seja uma partição diferente"?
John
fonte
1
+1 para o título da pergunta! Se todos os novatos perguntou tão inocente ...
Caleb
Haha, exatamente meus pensamentos também! +1.
boehj
2
@ John: Não é recomendável fazer duas perguntas em uma. Como agora existem respostas que abrangem as duas perguntas, acho que vamos deixar para lá, mas faça perguntas separadas separadamente da próxima vez. Sua dificuldade em encontrar um bom título (não, seu título não era um bom resumo da sua pergunta) foi devido à tentativa de combinar várias perguntas em uma.
Gilles 'SO- stop be evil'

Respostas:

47

Existem equívocos por trás de suas perguntas.

  1. A troca não está montada.
  2. A montagem não se limita às partições.

Partições

Uma partição é uma fatia de espaço em disco dedicada a uma finalidade específica. Aqui estão alguns propósitos comuns para partições.

  • Um sistema de arquivos , ou seja, arquivos organizados como uma árvore de diretórios e armazenados em um formato como ext2, ext3, FFS, FAT, NTFS,…
  • Troque espaço, ou seja, espaço em disco usado para paginação (e armazenamento de imagens de hibernação ).
  • Acesso direto ao aplicativo. Alguns bancos de dados armazenam seus dados diretamente em uma partição e não em um sistema de arquivos para obter um pouco de desempenho. (Um sistema de arquivos é uma espécie de banco de dados.)
  • Um contêiner para outras partições. Por exemplo, uma partição estendida para PC ou uma fatia de disco contendo partições BSD ou um volume físico LVM (contendo eventualmente volumes lógicos que podem ser considerados partições),…

Sistemas de arquivos

Os sistemas de arquivos apresentam informações em uma estrutura hierárquica. Aqui estão alguns tipos comuns de sistemas de arquivos:

  • Sistemas de arquivos suportados por disco, como ext2, ext3, FFS, FAT, NTFS,…
    • O suporte não precisa estar diretamente em uma partição de disco, como visto acima. Por exemplo, pode ser um volume lógico do LVM ou uma montagem em loop .
  • Sistemas de arquivos suportados por memória, como Solaris e tmpfs do Linux .
  • Sistemas de arquivos que apresentam informações do kernel, como proce sysfsno Linux.
  • Sistemas de arquivos de rede, como NFS , Samba ,…
  • Sistemas de arquivos suportados por aplicativos, dos quais o FUSE possui uma grande coleção . Os sistemas de arquivos com suporte a aplicativos podem fazer praticamente qualquer coisa: fazer com que um servidor FTP apareça como um sistema de arquivos, dê uma visão alternativa de um sistema de arquivos em que os nomes de arquivo não diferenciam maiúsculas de minúsculas ou convertidos em uma codificação diferente, mostre o conteúdo do arquivo como se fossem diretórios,…

Montagem

O Unix apresenta arquivos em uma única hierarquia, geralmente chamada "o sistema de arquivos" (mas nesta resposta não usarei a palavra "sistema de arquivos" nesse sentido para manter a confusão). Sistemas de arquivos individuais devem ser enxertados nessa hierarquia para acessá-los.³

Você torna um sistema de arquivos acessível montando-o. A montagem associa o diretório raiz do sistema de arquivos que você está montando a um diretório existente na hierarquia de arquivos. Um diretório que possui essa associação é conhecido como ponto de montagem.

  • Por exemplo, o sistema de arquivos raiz é montado no momento da inicialização (antes do kernel iniciar qualquer processo²) no /diretório
  • O sistema de arquivos proc no qual algumas variantes do unix, como Solaris e Linux, expõem informações sobre processos, é montado /proc, de modo que /proc/42/environdesigna o arquivo /42/environno sistema de arquivos proc, que (no Linux, pelo menos) contém uma visualização somente leitura do ambiente do processo número 42.
  • Se você possui um sistema de arquivos separado, por exemplo /home, para , então /home/john/myfile.txtdesigna o arquivo cujo caminho é /john/myfile.txtda raiz do sistema de arquivos doméstico.

No Linux, é possível que o mesmo sistema de arquivos seja acessível por mais de um caminho, graças às montagens de ligação .

Um sistema de arquivos Linux típico possui muitos sistemas de arquivos montados. (Este é um exemplo; diferentes distribuições, versões e configurações levarão à montagem de diferentes sistemas de arquivos.)

  • /: o sistema de arquivos raiz, montado antes do kernel carregar o primeiro processo. O gerenciador de inicialização informa ao kernel o que usar como sistema de arquivos raiz (geralmente é uma partição de disco, mas pode ser outra coisa como uma exportação NFS).
  • /proc: o proc filessytem, ​​com informações do processo e do kernel.
  • /sys: o sistema de arquivos sysfs , com informações sobre dispositivos de hardware.
  • /dev: um sistema de arquivos na memória em que os arquivos do dispositivo são criados automaticamente pelo udev com base no hardware disponível.
  • /dev/pts: um sistema de arquivos para fins especiais que contém arquivos de dispositivo para executar emuladores de terminal .
  • /dev/shm: um sistema de arquivos em memória usado para fins internos pela biblioteca padrão do sistema.
  • Dependendo dos componentes do sistema em execução, você poderá ver outros sistemas de arquivos para fins especiais, como binfmt_misc(usado pelo subsistema de kernel de formato de arquivo executável externo ), fusectl(usado pelo FUSE ), nfsd(usado pelo servidor NFS do kernel),…
  • Qualquer sistema de arquivos mencionado explicitamente em /etc/fstab(e não marcado noauto) é montado como parte do processo de inicialização.
  • Qualquer sistema de arquivos montado automaticamente pelo HAL (ou funcionalidade equivalente) após a inserção de um dispositivo removível, como uma chave USB.
  • Qualquer sistema de arquivos montado explicitamente com o mountcomando

L Informalmente falando aqui.
² Initrd e outros estão fora do escopo desta resposta.
³ É diferente do Windows, que possui uma hierarquia separada para cada sistema de arquivos, por exemplo, c:ou \\hostname\sharename.

Gilles 'SO- parar de ser mau'
fonte
5
+10 Gilles onde você consegue o tempo? Meu único comentário é que tenho que dar às pessoas alguma folga no problema de troca porque é muito confuso ter minha partição de troca listada /etc/fstabquando ela não deve ser montada.
Caleb
definitivamente uma pergunta boba ... mas não consigo me conter. Você disse "Montar associa um diretório à raiz do sistema de arquivos". Então, onde está localizado o diretório "/"?
John
2
@ John: Não é uma pergunta boba, as palavras “sistema de arquivos” e “raiz” têm dois significados diferentes aqui: existem sistemas de arquivos individuais (cada um com sua raiz) e existe toda a hierarquia de diretórios (com sua raiz, o /diretório) . Eu reformulei esta parte da minha resposta, espero que deva ficar mais clara agora.
Gilles 'SO- stop be evil'
Essa resposta é incrivelmente útil - é enciclopédica. Eu também gostaria de poder fazer um +10 aqui. Resposta incrível.
boehj
13
  1. Toda distribuição Linux tem seu próprio arranjo de partição padrão; alguns deles usam dezenas de partições, outras apenas uma. 3 e 4 são arranjos bastante comuns (/ boot, /, swap e / home). Alguns layouts antigos costumavam ter / var em uma partição separada e sistemas extremos e encontrar tudo em / var / * e / opt / * em partições separadas! A melhor generalização que posso fazer em resposta à sua pergunta é que nada no mundo unix é feito sem que os usuários percebam ou tenham a capacidade de alterá-lo !
  2. Você pode montar coisas que não são partições. Por exemplo, / proc geralmente não é uma partição, é um pseudo sistema de arquivos fornecido pelo kernel que permite ler e gravar dados sobre processos em execução como se fossem arquivos. Você também pode montar arquivos (como ISOs) como se fossem unidades usando um dispositivo de loopback, vincular pastas de montagem a outros lugares e executar vários outros truques ninjas.
Caleb
fonte
1
Todas as partições que são automaticamente montados na inicialização estão em /etc/fstab. Se você adicionar uma partição, ela estará presente na próxima inicialização.
26411 LawrenceC