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 / user-395920

Frederik Hoeft's questions

Martin Hope
Frederik Hoeft
Asked: 2025-01-19 01:25:14 +0800 CST

procedimento para atualização do RAID5 para RAID6 no local do mdadm

  • 6

Tenho um host debian configurado como NAS usando 6 discos em uma configuração RAID 5. A configuração atual é a seguinte:

# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Fri Mar 12 11:42:23 2021
        Raid Level : raid5
        Array Size : 19534424640 (18.19 TiB 20.00 TB)
     Used Dev Size : 3906884928 (3.64 TiB 4.00 TB)
      Raid Devices : 6
     Total Devices : 6
       Persistence : Superblock is persistent

     Intent Bitmap : Internal

       Update Time : Sat Jan 18 17:44:06 2025
             State : clean
    Active Devices : 6
   Working Devices : 6
    Failed Devices : 0
     Spare Devices : 0

            Layout : left-symmetric
        Chunk Size : 64K

Consistency Policy : bitmap

              Name : data:0
              UUID : 2265a382:cb20817f:de0f543b:a830605c
            Events : 547472

    Number   Major   Minor   RaidDevice State
       9       8       33        0      active sync   /dev/sdc1
       8       8       17        1      active sync   /dev/sdb1
      10       8       81        2      active sync   /dev/sdf1
      11       8       97        3      active sync   /dev/sdg1
       6       8       65        4      active sync   /dev/sde1
       7       8       49        5      active sync   /dev/sdd1

sdbe sddsão discos de 8 TB, todos os outros membros RAID são de 4 TB. Agora, quero substituir os quatro discos de 4 TB por novos discos de 16 TB, converter a configuração RAID5 atual para RAID6 e aumentar o tamanho do dispositivo usado para 8 TB (o novo máximo, até que eu possa substituir os dois discos de 8 TB restantes por outros de 16 TB).

Agora estou procurando um procedimento para fazer isso com segurança, sem perda de dados e o mais livre de problemas possível. Durante o procedimento, o tempo de inatividade é aceitável, a perda de dados não. Como todos os slots SATA estão em uso no momento, não posso adicionar os novos discos enquanto os antigos ainda estiverem online. Terei que substituir um após o outro. Como tal, acho que seria sensato converter o RAID5 existente para RAID6 primeiro e, em seguida, trocar os discos um por um. Isso adicionaria outra camada de redundância durante o processo de reconstrução.

Depois de pesquisar online, o seguinte é o procedimento que eu criei. Alguém pode confirmar se essa é a maneira mais sensata de fazer isso, ou há etapas que estou esquecendo / há maneiras mais fáceis de fazer isso, dadas minhas restrições (atualização no local).

Meu plano atual:

  1. faça backup de todos os dados de /mnt/md0
  2. verificar integridade do backup
  3. desmontar /mnt/md0
  4. reduza o sistema de arquivos em /dev/md0 para o tamanho mínimo possível, veja https://access.redhat.com/articles/1196333 para o procedimento
    1. e2fsck -f /dev/md0verificar sistema de arquivos, -f força a verificação mesmo se estiver limpo
    2. resize2fs -P /dev/md0estimar tamanho mínimo
    3. resize2fs -p -M /dev/md0reduzir ao tamanho mínimo (-M) e imprimir o progresso (-p)
    4. e2fsck -f /dev/md0verifique o sistema de arquivos novamente para ter certeza de que está limpo
  5. verifique o novo tamanho atual do sistema de arquivos:dumpe2fs -h /dev/md0 |& awk -F: '/Block count/{count=$2} /Block size/{size=$2} END{print count*size}'
  6. falha em um dos discos de 8 TB no array RAID5:
    mdadm /dev/md0 --fail /dev/sdd
    
    falhamos em um disco de 8 TB porque isso garante que o mdadm não decidirá que a unidade é muito pequena (por algum motivo) quando a adicionarmos novamente mais tarde
  7. Estime o novo tamanho do array RAID5, tentando executar este comando e verificando a mensagem de erro:
mdadm --grow /dev/md0 --raid-devices=5
  1. Verifique se o sistema de arquivos é pequeno o suficiente para caber. Então, encolha o dispositivo de bloco:
mdadm --grow /dev/md0 --array-size [new_size]
  1. reduzir a matriz RAID5 de 6 para 5 discos
mdadm --grow /dev/md0 --raid-devices=5 --backup-file=/root/md0_raid5_shrink.bak
  1. aguarde o RAID5 terminar a reconstrução
  2. adicione o disco removido como um hotspare
mdadm --add /dev/md0 /dev/sdd
  1. aumentar a matriz RAID5 para RAID6 com 6 discos
mdadm --grow /dev/md0 --raid-devices 6 --level 6 --backup-file=/root/md0_raid5_to_raid6.bak
  1. aguarde o RAID6 terminar a reconstrução
  2. substitua cada disco de 4 TB um por um por discos de 16 TB, esperando que o RAID6 termine de reconstruir a cada vez, isso deve nos permitir manter a redundância durante a migração
    1. mdadm --fail /dev/md0 /dev/sdX
    2. mdadm --remove /dev/md0 /dev/sdX
    3. desligar e substituir disco
    4. mdadm --add /dev/md0 /dev/sdX
    5. aguarde o RAID6 terminar a reconstrução
  3. aumentar o array RAID6 até o tamanho máximo (limitado pelos dois discos de 8 TB)
mdadm --grow /dev/md0 --size=max
  1. aumentar o sistema de arquivos em /dev/md0 para o tamanho máximo
resize2fs /dev/md0
  1. remontar /mnt/md0

Minhas perguntas são as seguintes:

  1. Esta é a maneira recomendada de atualizar um array RAID5 para RAID6?
  2. Já que quero evitar fazer uma pergunta sim/não: Se meu procedimento faz sentido, há maneiras de melhorá-lo para evitar o risco de perda de dados/ter que restaurar do backup? Há uma maneira mais rápida de fazer isso?
  3. Tenho um arquivo de configuração gerado automaticamente no /etc/mdadm/mdadm.conf. Terei que alterá-lo de alguma forma? Isso acontecerá automaticamente ou não tem relação com todo o processo?

Mais algum contexto / outras informações:

  • O sistema de arquivos em /dev/md0 é ext4.
  • A raiz do sistema / está em /dev/sda, que não é impactada pela migração
  • A maioria dos guias fala sobre adicionar um novo spare primeiro e depois migrar de RAID5 para RAID6. Isso não é (facilmente) possível neste caso porque todos os slots SATA já estão em uso.
debian
  • 1 respostas
  • 75 Views

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