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 / 510931
Accepted
Rajnish Kumar Soni
Rajnish Kumar Soni
Asked: 2019-04-07 09:30:57 +0800 CST2019-04-07 09:30:57 +0800 CST 2019-04-07 09:30:57 +0800 CST

Sobreposição interna do driver de armazenamento

  • 772

Uma continuação desta pergunta .

Minha leitura adicional sobre os drivers de armazenamento do Docker revelou que o overlaydriver mescla todas as camadas de imagem em camadas inferiores usando uma implementação de link físico que causa utilização excessiva de inode. Alguém pode explicar isso? Até onde eu sei, criar links físicos não cria um novo inode.

docker inode
  • 1 1 respostas
  • 881 Views

1 respostas

  • Voted
  1. Best Answer
    Haxiel
    2019-04-07T22:44:01+08:002019-04-07T22:44:01+08:00

    OverlayFS é um sistema de arquivos de união e há dois drivers de armazenamento no nível do Docker que fazem uso dele: a versão original/antiga chamada overlaye a versão mais recente chamada overlay2. No OverlayFS, há um diretório de nível inferior que é exposto como somente leitura. No topo desse diretório está o diretório de nível superior, que permite acesso de leitura e gravação. Cada um desses diretórios é chamado de camada. A visualização combinada dos diretórios de nível inferior e superior é apresentada como uma única unidade, chamada de diretório 'merged'.

    O overlay2driver de armazenamento mais recente oferece suporte nativo a até 128 dessas camadas. O overlaydriver mais antigo só pode trabalhar com duas camadas por vez. Como a maioria das imagens do Docker é construída usando várias camadas, essa limitação é bastante significativa. Para contornar essa limitação, cada camada é implementada como um diretório separado que simula uma imagem completa.

    Para examinar as diferenças no meu sistema de teste, puxei a imagem 'ubuntu' do Docker Hub e examinei as diferenças na estrutura de diretórios entre os drivers overlay2e :overlay

    [root@testvm1 overlay2]$ ls */diff
    4864f14e58c1d6d5e7904449882b9369c0c0d5e1347b8d6faa7f40dafcc9d231/diff:
    run
    
    4abcfa714b4de6a7f1dd092070b1e109e8650a7a9f9900b6d4c3a7ca441b8780/diff:
    var
    
    a58c4e78232ff36b2903ecaab2ec288a092e6fc55a694e5e2d7822bf98d2c214/diff:
    bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
    
    c3f1a237c46ed330a2fd05ab2a0b6dcc17ad08686bd8dc49ecfada8d85b93a00/diff:
    etc  sbin  usr  var
    
    
    [root@testvm1 overlay]# ls */root/
    001311c618ad7b94d4dc9586f26e421906e7ebf5c28996463a355abcdcd501bf/root/:
    bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
    
    048f81f400f7d74f969c4fdaff6553c782d12c04890ad869d75313505c868fbc/root/:
    bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
    
    8060f0c647f24050e1a4bff71096ffdf9665bff26e6187add87ecb8a18532af9/root/:
    bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
    
    fbdef944657234468ee55b12c7910aa495d13936417f9eb905cdc39a40fb5361/root/:
    bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
    

    Na overlayrepresentação, cada camada simula uma imagem completa, enquanto as overlay2camadas contêm apenas as diferenças exatas entre as camadas. Na overlayabordagem do driver, os links físicos são usados ​​como forma de economizar espaço entre as diferentes camadas. No entanto, esse método ainda não é perfeito e novos inodes são necessários quando os dados da imagem contêm arquivos especiais, como links simbólicos e dispositivos de caracteres. Isso pode adicionar rapidamente um grande número de inodes.

    A distribuição de inode entre os drivers overlay2e overlayno meu sistema de teste é mostrada abaixo.

    [root@testvm1 overlay2]$ du --inodes -s *
    8       4864f14e58c1d6d5e7904449882b9369c0c0d5e1347b8d6faa7f40dafcc9d231
    27      4abcfa714b4de6a7f1dd092070b1e109e8650a7a9f9900b6d4c3a7ca441b8780
    3311    a58c4e78232ff36b2903ecaab2ec288a092e6fc55a694e5e2d7822bf98d2c214
    1       backingFsBlockDev
    25      c3f1a237c46ed330a2fd05ab2a0b6dcc17ad08686bd8dc49ecfada8d85b93a00
    5       l
    
    [root@testvm1 overlay]# du --inodes -s *
    3298    001311c618ad7b94d4dc9586f26e421906e7ebf5c28996463a355abcdcd501bf
    783     048f81f400f7d74f969c4fdaff6553c782d12c04890ad869d75313505c868fbc
    768     8060f0c647f24050e1a4bff71096ffdf9665bff26e6187add87ecb8a18532af9
    765     fbdef944657234468ee55b12c7910aa495d13936417f9eb905cdc39a40fb5361
    

    A contagem total de inodes overlay2chega a 3378 no meu sistema. Usando overlay, essa contagem vai até 5615. Esse valor considera uma única imagem e sem contêineres em execução, portanto, um sistema grande com vários contêineres e imagens do Docker pode atingir rapidamente o limite de inode imposto pelo sistema de arquivos de backup (XFS ou EXT4, onde o /var/lib/docker/overlaydiretório está localizado).

    Por esse motivo, o overlay2driver de armazenamento mais recente é atualmente a opção recomendada para a maioria das novas instalações. O overlaydriver está obsoleto a partir do Docker v18.09 e deve ser removido em uma versão futura.

    • 2

relate perguntas

  • incapaz de extrair imagens no kubernetes do registro privado

  • Conectando-se a um host docker!

  • Qual é o propósito da instrução VOLUME em um Dockerfile?

  • Como instalo o docker no RHEL 7 offline?

  • Preciso executar este arquivo de script apenas uma vez?

Sidebar

Stats

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

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

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

    • 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

    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
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • 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
    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

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