Anteriormente, eu costumava criar arquivos de imagem usando dd
, configurar um sistema de arquivos neles usando mkfs
e mount
acessá-los como partições montadas. Mais tarde, vi na internet que muitos exemplos usam losetup
anteriormente para fazer uma entrada de dispositivo de loop /dev
e montá-la. Eu não sabia dizer por que seria praticamente necessário que um arquivo de imagem se comportasse como um dispositivo de loop e tivesse sua própria /dev
entrada, enquanto o mesmo comportamento pode ser obtido sem todo esse aborrecimento.
Resumo: Em um cenário da vida real, por que precisamos que uma /dev/loopX
entrada esteja presente, quando podemos apenas montar a imagem fs sem ela? Para que serve um dispositivo de loop?
filesystems
mount
block-device
loop-device
corsel
fonte
fonte
mount
é inteligente o suficiente para causar problemas para você. (como Stephen Harris mostra em sua resposta)Respostas:
Normalmente, as montagens devem ser feitas em dispositivos de bloco. O driver de loop coloca um front-end de dispositivo de bloco no seu arquivo de dados.
Se você montar um loop sem
losetup
o SO, ele executa um em segundo plano.por exemplo
Pode ser necessário ligar
losetup
diretamente se a imagem do arquivo tiver partições incorporadas.por exemplo, se eu tiver esta imagem:
Não consigo montar isso diretamente
Mas se eu usar
losetup
ekpartx
acessar as partições:fonte
losetup
, basta usarmount -o loop,offset=$((512*2048))
, onde512
está o tamanho do setor e2048
é o quefdisk
deuStart
na partição.losetup
ekpartx
. Deixe as ferramentas fazer o trabalho duro :-)Os sistemas de arquivos esperam ler e gravar nos dispositivos de bloqueio, mas os arquivos de imagem não são dispositivos de bloqueio. Os dispositivos de loop fornecem um dispositivo de bloco em cima de um arquivo (ou outro dispositivo de bloco, opcionalmente com remapeamento).
Não há necessidade de considerar dispositivos de loop ao montar imagens em muitos casos, porque
mount
cuida de tudo para você; mas dispositivos de loop ainda estão envolvidos.losetup -l -a
mostrará a eles.Consulte também Qual é a diferença entre mount e mount -o loop .
fonte
mount
?mount
cuidalosetup
, acrescentando-o loop
etc.Você parece estar no Linux e o Linux usa um nome errado para esse recurso.
Inventei esse recurso em 1988 no SunOS-4.0 e chamo esse recurso
fbk
- File emula dispositivo BlocK.O plano de fundo é que o driver de dispositivo emula um dispositivo de bloco em cima de um arquivo simples. Você precisa disso, pois um sistema de arquivos não pode usar um arquivo simples como armazenamento em segundo plano para um sistema de arquivos. Ele precisa de um dispositivo de bloco e é isso que
fbk
emula.Já que algumas pessoas tornaram o programa
mount
um pouco mais inteligente e existem implementações de montagem que criam automaticamente umafbk
instância para um arquivo, caso omount
programa detecte que o argumento que se espera que seja um dispositivo de bloco pareça ser um arquivo de plano.fonte
lofi
("arquivo de loopback") que funcionava da mesma forma; O BSD os introduziu sob o nomevnd
("vnode disk"), de modo que o conceito teve muitos nomes diferentes ao longo dos anos.Mesmo que não seja necessário em segundo plano para montar sistemas de arquivos a partir de arquivos, você ainda precisará dele para qualquer configuração usando um driver ou programa que absolutamente espere um dispositivo de bloco. Pense em servidores nbd (dispositivo de bloco de rede), drivers de dispositivo de bloco composto como mdraid, lvm etc.
fonte