Configure software RAID no Linux

É um cenário comum usar o SOFTWARE RAID em máquinas virtuais Linux em Azure para apresentar vários discos de dados anexados como um único dispositivo RAID. Normalmente, isto pode ser usado para melhorar o desempenho e permitir uma melhor produção em comparação com a utilização de apenas um disco.

Anexação de discos de dados

São necessários dois ou mais discos de dados vazios para configurar um dispositivo RAID. A principal razão para criar um dispositivo RAID é melhorar o desempenho do seu IO de disco. Com base nas suas necessidades de IO, pode optar por anexar discos que estejam armazenados no nosso Standard Armazenamento, com até 500 IO/ps por disco ou o nosso armazenamento Premium com até 5000 IO/ps por disco. Este artigo não entra em detalhes sobre como fornecer e anexar discos de dados a uma máquina virtual Linux. Consulte o artigo Microsoft Azure anexar um disco para obter instruções detalhadas sobre como anexar um disco de dados vazio a uma máquina virtual Linux no Azure.

Importante

Não misture discos de diferentes tamanhos, o que resultaria num desempenho do raidset a limitar-se ao do disco mais lento.

Instale o utilitário mdadm

  • Ubuntu

    sudo apt-get update
    sudo apt-get install mdadm
    
  • CentOS & Oracle Linux

    sudo yum install mdadm
    
  • SLES e openSUSE

    zypper install mdadm
    

Criar as divisórias de disco

Neste exemplo, criamos uma única partição de disco em /dev/sdc. A nova partição do disco será chamada de /dev/sdc1.

  1. Comece fdisk a criar divisórias

    sudo fdisk /dev/sdc
    Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
    Building a new DOS disklabel with disk identifier 0xa34cb70c.
    Changes will remain in memory only, until you decide to write them.
    After that, of course, the previous content won't be recoverable.
    
    WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
                    switch off the mode (command 'c') and change display units to
                    sectors (command 'u').
    
  2. Pressione 'n' no pedido para criar uma divisória new:

    Command (m for help): n
    
  3. Em seguida, prima 'p' para criar uma divisória rária:

    Command action
            e   extended
            p   primary partition (1-4)
    
  4. Prima '1' para selecionar o número de partição 1:

    Partition number (1-4): 1
    
  5. Selecione o ponto de partida da nova partição ou pressione <enter> para aceitar o padrão para colocar a partição no início do espaço livre na unidade:

    First cylinder (1-1305, default 1):
    Using default value 1
    
  6. Selecione o tamanho da partição, por exemplo, escreva '+10G' para criar uma partição de 10 gigabytes. Ou, pressione <enter> criar uma única divisória que abrange toda a unidade:

    Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): 
    Using default value 1305
    
  7. Em seguida, altere o ID e o tipo da partição do ID '83' (Linux) por defeito para ID 'fd' (Linux raid auto):

    Command (m for help): t
    Selected partition 1
    Hex code (type L to list codes): fd
    
  8. Finalmente, escreva a mesa de partição para a unidade e saída fdisk:

    Command (m for help): w
    The partition table has been altered!
    

Criar a matriz RAID

  1. O exemplo seguinte será "stripe" (RAID nível 0) três divisórias localizadas em três discos de dados separados (sdc1, sdd1, sde1). Após a execução deste comando é criado um novo dispositivo RAID chamado /dev/md127 . Note também que se estes discos de dados fizermos parte de outra matriz RAID extinta, pode ser necessário adicionar o --force parâmetro ao mdadm comando:

    sudo mdadm --create /dev/md127 --level 0 --raid-devices 3 \
        /dev/sdc1 /dev/sdd1 /dev/sde1
    
  2. Criar o sistema de ficheiros no novo dispositivo RAID

    CentOS, Oracle Linux, SLES 12, openSUSE e Ubuntu

    sudo mkfs -t ext4 /dev/md127
    

    SLES 11

    sudo mkfs -t ext3 /dev/md127
    

    SLES 11 - capacitar boot.md e criar mdadm.conf

    sudo -i chkconfig --add boot.md
    sudo echo 'DEVICE /dev/sd*[0-9]' >> /etc/mdadm.conf
    

    Nota

    Pode ser necessário reiniciar depois de esjogá-las nos sistemas SUSE. Este passo não é exigido no SLES 12.

Adicione o novo sistema de ficheiros a /etc/fstab

Importante

A edição indevida do ficheiro /etc/fstab pode resultar num sistema inobrável. Se não tiver a certeza, consulte a documentação de distribuição para obter mais informações sobre como editar corretamente este ficheiro. Recomenda-se também que seja criada uma cópia de segurança do ficheiro /etc/fstab antes da edição.

  1. Crie o ponto de montagem desejado para o seu novo sistema de ficheiros, por exemplo:

    sudo mkdir /data
    
  2. Ao editar /etc/fstab, o UUID deve ser utilizado para referenciar o sistema de ficheiros em vez do nome do dispositivo. Utilize o blkid utilitário para determinar o UUID para o novo sistema de ficheiros:

    sudo /sbin/blkid
    ...........
    /dev/md127: UUID="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" TYPE="ext4"
    
  3. Abra /etc/fstab num editor de texto e adicione uma entrada para o novo sistema de ficheiros, por exemplo:

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults  0  2
    

    Ou no SLES 11:

    /dev/disk/by-uuid/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext3  defaults  0  2
    

    Em seguida, guarde e feche /etc/fstab.

  4. Teste que a entrada /etc/fstab está correta:

    sudo mount -a
    

    Se este comando resultar numa mensagem de erro, verifique a sintaxe no ficheiro /etc/fstab.

    Em seguida, executar o mount comando para garantir que o sistema de ficheiros é montado:

    mount
    .................
    /dev/md127 on /data type ext4 (rw)
    
  5. (Opcional) Parâmetros de arranque de falha

    configuração fstab

    Muitas distribuições incluem os nobootwait parâmetros ou nofail montagem que podem ser adicionados ao ficheiro /etc/fstab. Estes parâmetros permitem falhas na montagem de um determinado sistema de ficheiros e permitem que o sistema Linux continue a arrancar mesmo que não seja capaz de montar corretamente o sistema de ficheiros RAID. Consulte a documentação da sua distribuição para obter mais informações sobre estes parâmetros.

    Exemplo (Ubuntu):

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults,nobootwait  0  2
    

    Parâmetros de arranque Linux

    Além dos parâmetros acima referidos, o parâmetro do núcleo "bootdegraded=true" pode permitir o arranque do sistema mesmo que o RAID seja visto como danificado ou degradado, por exemplo se uma unidade de dados for removida inadvertidamente da máquina virtual. Por padrão, isto também pode resultar num sistema não inicializável.

    Consulte a documentação da sua distribuição sobre como editar corretamente os parâmetros do núcleo. Por exemplo, em muitas distribuições (CentOS, Oracle Linux, SLES 11) estes parâmetros podem ser adicionados manualmente ao ficheiro "/boot/grub/menu.lst". Em Ubuntu este parâmetro pode ser adicionado à GRUB_CMDLINE_LINUX_DEFAULT variável em "/etc/predefinição/comida".

Suporte TRIM/UNMAP

Alguns núcleos Linux suportam operações TRIM/UNMAP para descartar blocos não reutilizados no disco. Estas operações são principalmente úteis no armazenamento padrão para informar a Azure que as páginas eliminadas já não são válidas e podem ser descartadas. Descartar páginas pode economizar custos se criar ficheiros grandes e depois eliminá-los.

Nota

O RAID não pode emitir comandos de devoluções se o tamanho do pedaço da matriz for definido para menos do que o padrão (512KB). Isto porque a granularidade unmapapularidade no Hospedeiro também é 512KB. Se modificar o tamanho do pedaço da matriz através do parâmetro do --chunk= Mdadm, então os pedidos DE TRIM/unmap podem ser ignorados pelo núcleo.

Existem duas formas de ativar o suporte TRIM no seu Linux VM. Como sempre, consulte a sua distribuição para obter a abordagem recomendada:

  • Utilize a opção discard de montagem em /etc/fstab, por exemplo:

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults,discard  0  2
    
  • Em alguns casos, a opção discard pode ter implicações no desempenho. Em alternativa, pode executar o fstrim comando manualmente a partir da linha de comando ou adicioná-lo ao crontab para executar regularmente:

    Ubuntu

    # sudo apt-get install util-linux
    # sudo fstrim /data
    

    RHEL/CentOS

    # sudo yum install util-linux
    # sudo fstrim /data