Problema com a compreensão do conceito de montagem

12

Depois de ler os dois O que se entende por montar um dispositivo no Linux? e compreendendo "mount" como um conceito no sistema operacional , tenho um problema em que se afirma que

All accessible storage must have an associated location in this single directory tree. This is unlike Windows where (in the most common syntax for file paths) there is one directory tree per storage component (drive). Mounting is the act of associating a storage device to a particular location in the directory tree.

Mas já existe um local acessível para dizer 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 do / 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. Então isso significa que o sistema de arquivos no cdrom não está disponível se nós acessá-lo a partir do / dev / cdrom. E a hierarquia do sistema de arquivos (dentro do cdrom) "ganha vida" quando o "montamos"?

    
por sounak 28.12.2014 / 04:54

4 respostas

11

Você pode ler ou escrever / dev / cdrom (por exemplo, usando dd ou cat ), mas quando você faz 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, você 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, montar um dispositivo associa o sistema de arquivos nesse dispositivo à hierarquia de diretórios.

    
por 28.12.2014 / 05:26
7

Eu 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órios.

  • O sistema de arquivos tem diretórios e arquivos, e cada arquivo é um rótulo para uma seqüência de bytes.
  • /dev/cdrom é um arquivo, representa a string de bytes armazenados no CD.
  • Você pode ler esta longa string diretamente, mas isso não é muito prático, exceto para propósitos especiais (por exemplo, criar uma imagem de disco completa).
  • Essa cadeia longa possui estrutura interna adicional: ela 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.
  • Usando mount -t iso9660 /dev/cdrom /media/cdrom , você diz ao sistema: "Pegue esta longa cadeia de bytes que você tem em /dev/cdrom , interprete-a como uma árvore de diretórios no formato iso9660 e permita que eu a acesse sob o local /media/cdrom ".
  • Na verdade, isso funciona também para arquivos comuns. Você pode criar um arquivo regular que contenha uma imagem de disco e, em seguida, usar mount para acessá-lo. Tente isto:
dd if=/dev/zero of=fs-image bs=1M count=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.)

    
por 09.01.2015 / 02:44
5

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

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

...the volume name is just a symbolic link which points back to a real volume device, usually in the form of \Device\HarddiskVolume23. There is another example of an MS-DOS device which is the drive letter. If your volume has the C: drive letter, you will then have a symbolic link called \?\C: which points to a real volume in the \Device\HarddiskVolumeXX format.

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

Provavelmente, a distinção mais importante entre /dev/device e /path/to/its/mount é que, no segundo 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.

    
por 28.12.2014 / 05:15
0

Além dos itens mencionados acima, um driver ou outro programa pode armazenar dados em cache de um dispositivo. Em um dispositivo de leitura / gravação, como um disco rígido ou pen drive, os dados gravados no dispositivo podem não ter sido gravados ainda. Os sistemas de arquivos de 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 cobrem outros sistemas de arquivos, como cryptfs, que precisam saber quando o sistema de arquivos subjacente não está mais disponível.

Concedido, para um dispositivo somente leitura, isso faz menos sentido, mas ainda se aplica.

    
por 20.01.2015 / 18:53