Problemas para entender o conceito de montagem

13

Depois de ler os dois O que significa montar um dispositivo no Linux? e entendendo "montar" como um conceito no sistema operacional , eu tenho um problema em que se afirma que

Todo o armazenamento acessível deve ter um local associado nessa única árvore de diretórios. Isso é diferente do Windows, onde (na sintaxe mais comum dos caminhos de arquivos) existe uma árvore de diretórios por componente de armazenamento (unidade). Montagem é o ato de associar um dispositivo de armazenamento a um local específico na árvore de diretórios.

Mas já existe um local acessível para, digamos, uma unidade de cdrom em / dev / cdrom, que obviamente vem na hierarquia de diretórios. Então, por que a necessidade de criar um "ponto de montagem" separado em / media / cdrom? Por que acessar diretamente de / dev / cdrom é impossível? Ouvi dizer que os arquivos do nó do dispositivo são como arquivos comuns. E ler e escrever para eles é como arquivos comuns. Isso significa que o sistema de arquivos no cdrom não estará disponível se o acessarmos em / dev / cdrom. E a hierarquia do sistema de arquivos (dentro do cdrom) "ganha vida" quando a "montamos"?

sounak
fonte

Respostas:

11

Você pode ler ou escrever / dev / cdrom (por exemplo, usando ddou cat), mas ao fazer isso, você está apenas lendo ou escrevendo os bytes brutos do dispositivo. Isso pode ser útil em várias circunstâncias (como clonar uma partição), mas geralmente queremos ver os diretórios e arquivos armazenados no dispositivo.

Quando você monta um dispositivo, está basicamente dizendo ao kernel para usar uma camada de software (o driver do sistema de arquivos) para converter esses bytes brutos em um sistema de arquivos real. Assim, a montagem de um dispositivo associa o sistema de arquivos nesse dispositivo à hierarquia de diretórios.

PM 2Ring
fonte
8

Penso sobre isso da seguinte maneira: mounté uma ferramenta que instrui o sistema a interpretar o conteúdo de alguns arquivos como árvores de diretório.

  • O sistema de arquivos possui diretórios e arquivos, e cada arquivo é um rótulo para uma sequência de bytes.
  • /dev/cdrom é um arquivo, representa a sequência de bytes armazenados no CD.
  • Você pode ler essa sequência muito longa diretamente, mas isso não é muito prático, exceto para fins especiais (por exemplo, criar uma imagem de disco completa).
  • Essa cadeia longa possui uma estrutura interna adicional: contém um sistema de arquivos, que contém informações sobre quais diretórios e arquivos estão armazenados e onde nessa cadeia muito longa.
  • Ao usar mount -t iso9660 /dev/cdrom /media/cdrom, você diz ao sistema: "pegue essa sequência muito longa de bytes que você possui /dev/cdrom, interprete-a como uma árvore de diretórios no formato iso9660 e permita-me acessá-la no local /media/cdrom".
  • De fato, isso também funciona para arquivos regulares. Você pode criar um arquivo regular que contém uma imagem de disco e usá mount-lo para acessá-lo. Tente o seguinte:
dd se = / dev / zero de = fs-image bs = contagem de 1M = 50
mke2fs fs-image
sudo mount fs-image / some / mount / point

(os dois primeiros comandos são necessários apenas na primeira vez, ao preparar o arquivo de imagem.)

Krzysztof Kosiński
fonte
Por que você precisou mke2fs?
ADTC
Para criar um sistema de arquivos ext2 vazio dentro do arquivo de imagem. Um sistema de arquivos vazio nem todos são zeros - ele possui alguns metadados e estruturas fixas, assim como um documento vazio do Word ou do LibreOffice tem um tamanho diferente de zero e contém informações sobre, por exemplo, a fonte padrão e o tamanho da página.
Krzysztof Kosiński
Oh OK, é uma ação potencialmente destrutiva. Sugira que você mencione que este comando é apenas para inicialização pela primeira vez. :)
ADTC
5

/dev/cdromrefere-se a um arquivo de dispositivo . Este não é o conteúdo de qualquer disco que você queira inserir na sua unidade óptica, mas sim uma referência ao pouco de hardware (e provavelmente drivers de software) que você pode chamar para mostrar isso a você. Quando você mount /dev/cdromsegue algum caminho em sua árvore, anexa seu conteúdo ao seu sistema de arquivos .

A questão é - eu realmente não consigo pensar em outra maneira de fazer isso. Mesmo no Windows - embora não seja tão aparente - ainda existe a abstração do sistema de arquivos \\?\volumename\. Levei um minuto para lembrar como era isso, e eu achei isso no Google :

... o nome do volume é apenas um link simbólico que aponta para um dispositivo de volume real, geralmente na forma de \Device\HarddiskVolume23. Há outro exemplo de um dispositivo MS-DOS que é a letra da unidade. Se o seu volume tiver a letra da unidade C:, você terá um link simbólico chamado \\?\C: que aponta para um volume real no \Device\HarddiskVolumeXXformato.

E então talvez não seja tão diferente - embora eu diria menos complicado - é apenas mais óbvio , eu acho. Eles não são o mesmo sistema, mas também não são fundamentalmente diferentes.

Provavelmente a distinção mais importante entre /dev/devicee /path/to/its/mounté que, neste último caminho, um sistema de arquivos - algum software destinado a manipular dados de maneira organizada - está interpretando o conteúdo do primeiro. Você não pode simplesmente ler um disco - alguém precisa ler para você. O sistema de arquivos interpreta o conteúdo do dispositivo.

mikeserv
fonte
Isso é um pouco enganador. Se você abrir /dev/cdromem um editor hexadecimal, ele realmente conterá o conteúdo bruto do CD-ROM. Ao usar, mountbasta dizer ao sistema operacional para interpretar esse conteúdo como uma árvore de diretórios.
Krzysztof Kosiński
0

Além dos itens mencionados acima, um driver ou outro programa pode armazenar em cache dados de um dispositivo. Em um dispositivo de leitura e gravação, como um disco rígido ou pen drive, os dados gravados no dispositivo podem ainda não ter sido gravados. Os sistemas de arquivos com registro no diário também podem exigir a liberação do diário antes que ele não veja mais o dispositivo. Então você tem sistemas de arquivos que sobrepõem outros sistemas de arquivos, como cryptfs, que precisam saber quando o sistema de arquivos subjacente não está mais disponível.

É verdade que, para um dispositivo somente leitura, isso faz menos sentido, mas ainda se aplica.

Joe Sewell
fonte