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 / server / Perguntas / 932247
Accepted
Nils
Nils
Asked: 2018-09-24 02:48:52 +0800 CST2018-09-24 02:48:52 +0800 CST 2018-09-24 02:48:52 +0800 CST

Como recuperar um LVM em cache com cache no disco ram?

  • 772

Neste artigo, há uma boa receita de como usar um disco RAM como dispositivo de cache para um volume LVM clássico .

Supondo que você tenha um disco antigo, muita RAM e nenhum SSD, você pode aumentar o desempenho do disco para a taxa de transferência de RAM nativa usando essa técnica.

Então, fiz isso em um LVM que é usado para minha VM virtual executando o Windows 10. Voilà: A taxa de transferência do disco foi 4 vezes mais rápida na VM (taxa de transferência média, melhor usada durante a aplicação de patches no Windows).

Tudo estava bem - até que eu desliguei meu sistema linux (CentOS 7).

Perda de dados!

O desligamento não desmontará esse cache. O mesmo seria verdade em uma situação de falha de energia (sim - haverá perda de dados).

No entanto - tem que haver uma maneira de recuperar o que resta. Mas o LVM não permitirá que você opere em um VG com discos ausentes.

Então - existe uma receita para este caso lá fora?

Curti

  • recuperar o disco de cache LVM ausente com um novo disco
  • forçar estado limpo
  • acessar o LV em cache novamente

Na última etapa, faria-se reparos no sistema de arquivos e recuperaria arquivos ausentes/corrompidos do backup (usando rsync).

cache
  • 1 1 respostas
  • 4433 Views

1 respostas

  • Voted
  1. Best Answer
    John Mahowald
    2018-09-24T05:15:08+08:002018-09-24T05:15:08+08:00

    você pode aumentar o desempenho do disco para a taxa de transferência de RAM nativa usando esta técnica

    Não, não exatamente. Quando o cache está cheio de gravações, a taxa de transferência de gravação diminui para o que o disco subjacente pode fazer. E as primeiras leituras do disco de apoio ainda são lentas. E/S para o cache, sim é mais rápido.


    Esse método é muito arriscado porque não é um disco permanente. Eu sou cético em relação ao utilitário quando você pode obter um disco de estado sólido rápido ou cache de gravação de hardware, mas os modos de falha são divertidos de testar.

    ISSO CAUSA PERDA DE DADOS. SÓ PROSSIGA SE TIVER UM BACKUP DOS SEUS DADOS.

    Primeiro, sem cache.

    # Create volume
    pvcreate /dev/sdb
    vgcreate vg /dev/sdb
    lvcreate --size 400g --name lv vg
    mkfs.xfs /dev/vg/lv
    mkdir /mnt/lv
    mount /dev/vg/lv /mnt/lv
    # Write test
    dd bs=1M if=/dev/zero of=/mnt/lv/zero count=10000
    

    Adicionar cache.

    # Create a RAM disk
    modprobe brd rd_nr=1 rd_size=4585760 max_part=0
    pvcreate /dev/ram0
    vgextend vg /dev/ram0
    # Create a cache
    lvcreate -L 300M -n cache_meta vg /dev/ram0
    lvcreate -L 4G -n cache_vol vg /dev/ram0
    lvconvert –type cache-pool –poolmetadata vg/cache_meta –cachemode=writeback vg/cache_vol -y
    # Add cache to a LV
    lvconvert –type cache –cachepool vg/cache_vol vg/lv
    # Write test
    dd bs=1M if=/dev/zero of=/mnt/lv/zero2 count=10000
    # Crash test
    echo 'c' > /proc/sysrq-trigger
    

    Quando volta, o LVM está muito insatisfeito, o volume está inacessível.

    [root@sf ~]# lvs
      WARNING: Device for PV YpvOB5-PZLO-POFL-3Cf4-G1IB-gep8-6eU10R not found or rejected by a filter.
      LV   VG Attr       LSize   Pool        Origin     Data%  Meta%  Move Log Cpy%Sync Convert
      lv   vg Cwi---C-p- 400.00g [cache_vol] [lv_corig]
    [root@sf ~]# mount /dev/vg/lv /mnt/lv/
    mount: special device /dev/vg/lv does not exist
    [root@sf ~]# pvs
      WARNING: Device for PV YpvOB5-PZLO-POFL-3Cf4-G1IB-gep8-6eU10R not found or rejected by a filter.
      PV         VG Fmt  Attr PSize    PFree
      /dev/sdb   vg lvm2 a--  <500.00g 99.70g
      [unknown]  vg lvm2 a-m     4.37g 80.00m
    

    Você não pode nem forçar o desarme porque os metadados têm um erro de E/S.

    [root@sf ~]# lvconvert --uncache vg/lv --force -y
      WARNING: Device for PV YpvOB5-PZLO-POFL-3Cf4-G1IB-gep8-6eU10R not found or rejected by a filter.
      WARNING: Cache pool data logical volume vg/cache_vol_cdata is missing.
      WARNING: Cache pool metadata logical volume vg/cache_vol_cmeta is missing.
      WARNING: Uncaching of partially missing writethrough cache volume vg/lv might destroy your data.
      /dev/mapper/vg-cache_vol_cmeta: read failed: Input/output error
      Failed to active cache locally vg/lv.
    

    Mas você pode forçar a perda de dados criando um novo PV com o mesmo UUID. Desconecte-o para remover o PV ramdisk que o LVM acha que ainda tem dados nele, mas foi perdido. Você pode adicionar novamente o novo cache com lvconvert, mas não vou depois dos resultados deste experimento.

    pvcreate --norestore --uuid YpvOB5-PZLO-POFL-3Cf4-G1IB-gep8-6eU10R  /dev/ram0
    lvconvert --uncache vg/lv
    

    Finalmente, verifique se há algum dano no sistema de arquivos. A restauração do backup é necessária para que seus dados voltem a um bom estado.

    xfs_repair /dev/vg/lv
    

    Edit: adicionar um PV vazio com o mesmo UUID de volta parece super hacky. Afinal, o lvconvert se recusou a desfazer o cache. Se, em vez disso, você colocar o LV de metadados no disco permanente, ele poderá ser limpo um pouco mais fácil.

    # Same procedure but meta is on persistent storage.
    lvcreate -L 300M -n cache_meta vg /dev/sdb
    

    Ele pode ser forçado a desfazer o cache. Não deixe a saída "Flushing 0 blocks" tranquilizá-lo, as gravações em andamento já foram perdidas. O ramdisk ausente pode ser removido, tornando o VG consistente novamente.

    [root@sf ~]# lvconvert --uncache vg/lv --force -y
      WARNING: Device for PV YpvOB5-PZLO-POFL-3Cf4-G1IB-gep8-6eU10R not found or rejected by a filter.
      WARNING: Cache pool data logical volume vg/cache_vol_cdata is missing.
      WARNING: Uncaching of partially missing writethrough cache volume vg/lv might destroy your data.
      Flushing 0 blocks for cache vg/lv.
      Logical volume "cache_vol" successfully removed
      Logical volume vg/lv is not cached.
    [root@sf ~]# vgreduce --removemissing vg
      WARNING: Device for PV YpvOB5-PZLO-POFL-3Cf4-G1IB-gep8-6eU10R not found or rejected by a filter.
      Wrote out consistent volume group vg.
    [root@sf ~]# pvs
      PV         VG Fmt  Attr PSize    PFree
      /dev/sdb   vg lvm2 a--  <500.00g <100.00g
    
    • 4

relate perguntas

  • Como desabilitar o cache do tomcat? Estou tendo problemas estranhos com arquivos estáticos

Sidebar

Stats

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

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 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