AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 476048
Accepted
corsel
corsel
Asked: 2018-10-18 07:26:16 +0800 CST2018-10-18 07:26:16 +0800 CST 2018-10-18 07:26:16 +0800 CST

Por que alguém precisa de um dispositivo de loop?

  • 772

Eu costumava criar arquivos de imagem usando dd, configurar um sistema de arquivos neles mkfse mountacessá-los como partições montadas. Mais tarde, vi na internet que muitos exemplos usam losetupde antemão para fazer uma entrada de dispositivo de loop em /dev, e depois montá-lo. Eu não poderia dizer por que alguém praticamente precisaria de um arquivo de imagem para se comportar como um dispositivo de loop e ter sua própria /deventrada enquanto o mesmo comportamento pode ser obtido sem todo o incômodo.

Resumo: Em um cenário da vida real, por que precisamos que uma /dev/loopXentrada esteja presente, quando podemos apenas montar a imagem fs sem ela? Qual é o uso de um dispositivo de loop?

filesystems mount
  • 4 4 respostas
  • 7909 Views

4 respostas

  • Voted
  1. Best Answer
    Stephen Harris
    2018-10-18T07:39:55+08:002018-10-18T07:39:55+08:00

    As montagens, normalmente, devem ser feitas em dispositivos de bloco. O driver de loop coloca um front-end de dispositivo de bloco em seu arquivo de dados.

    Se você fizer uma montagem em loop sem losetup, o sistema operacional fará uma em segundo plano.

    por exemplo

    $ dd if=/dev/zero of=/tmp/foo bs=1M count=100
    100+0 records in
    100+0 records out
    104857600 bytes (105 MB) copied, 0.0798775 s, 1.3 GB/s
    $ mke2fs /tmp/foo
    mke2fs 1.42.9 (28-Dec-2013)
    ....
    
    
    $ losetup    
    $ mount -o loop /tmp/foo /mnt1    
    $ losetup
    NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
    /dev/loop0         0      0         1  0 /tmp/foo
    $ umount /mnt1
    $ losetup
    $ 
    

    Pode ser necessário ligar losetupdiretamente se a imagem do arquivo tiver partições incorporadas.

    por exemplo, se eu tiver esta imagem:

    $ fdisk -l /tmp/foo2      
    
    Disk /tmp/foo2: 104 MB, 104857600 bytes, 204800 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x1f25ff39
    
         Device Boot      Start         End      Blocks   Id  System
    /tmp/foo2p1            2048      204799      101376   83  Linux
    

    Eu não posso montar isso diretamente

    $ mount -o loop /tmp/foo2 /mnt1
    mount: /dev/loop0 is write-protected, mounting read-only
    mount: wrong fs type, bad option, bad superblock on /dev/loop0,
           missing codepage or helper program, or other error
    

    Mas se eu uso losetupe kpartxentão consigo acessar as partições:

    $ losetup -f /tmp/foo2
    $ losetup
    NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
    /dev/loop0         0      0         0  0 /tmp/foo2
    $ kpartx -a /dev/loop0
    $ mount /dev/mapper/loop0p1 /mnt1
    $
    
    • 25
  2. Stephen Kitt
    2018-10-18T07:31:21+08:002018-10-18T07:31:21+08:00

    Os sistemas de arquivos esperam ler e gravar em dispositivos de bloco, mas os arquivos de imagem não são dispositivos de bloco. 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 mountcuida de tudo para você; mas os dispositivos de loop ainda estão envolvidos. losetup -l -aos mostrará.

    Consulte também Qual é a diferença entre mount e mount -o loop .

    • 22
  3. schily
    2018-10-18T07:31:46+08:002018-10-18T07:31:46+08:00

    Você parece estar no Linux e o Linux usa um nome errado para esse recurso.

    Eu inventei esse recurso em 1988 no SunOS-4.0 e chamo esse recurso fbk- Arquivo emula dispositivo BlocK.

    O pano 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 fbkemula.

    Desde algum tempo, algumas pessoas tornaram o programa mountum pouco mais inteligente e existem implementações de montagem que criam automaticamente uma fbkinstância para um arquivo caso o mountprograma detecte que o argumento esperado para ser um dispositivo de bloco parece ser um arquivo de plano.

    • 11
  4. rackandboneman
    2018-10-19T00:57:22+08:002018-10-19T00:57:22+08:00

    Mesmo que não fosse necessário em segundo plano para montar sistemas de arquivos a partir de arquivos, você ainda precisaria dele para qualquer configuração usando um driver ou programa que absolutamente esperasse um dispositivo de bloco. Pense em servidores nbd (dispositivo de bloco de rede), drivers de dispositivo de bloco composto como mdraid, lvm etc ....

    • 0

relate perguntas

  • Qual sistema de arquivos devo usar em um cartão SD em um NAS?

  • Como saber antecipadamente se um .zip tem um diretório pai dentro

  • Disco alocado dinamicamente do Virtualbox *.vdi continua crescendo

  • du/df e ls relatando diferentes usos de disco

  • Como os desenvolvedores do kernel Linux lidam com seu trabalho com milhões de linhas de código? É um método? [fechado]

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve