Configurar o RAID de Software no Linux

É um cenário comum utilizar o RAID de software em máquinas virtuais do Linux no Azure para apresentar vários discos de dados anexados como um único dispositivo RAID. Normalmente, isto pode ser utilizado para melhorar o desempenho e permitir um débito melhorado em comparação com a utilização de apenas um único disco.

Anexar discos de dados

São necessários dois ou mais discos de dados vazios para configurar um dispositivo RAID. O principal motivo para criar um dispositivo RAID é melhorar o desempenho da E/S do disco. Com base nas suas necessidades de E/S, pode optar por anexar discos armazenados no nosso Armazenamento Standard, com até 500 E/S/ps por disco ou o nosso armazenamento Premium com até 5000 E/S por disco. Este artigo não explica detalhadamente como aprovisionar e anexar discos de dados a uma máquina virtual do Linux. Veja o artigo do Microsoft Azure anexar um disco para obter instruções detalhadas sobre como anexar um disco de dados vazio a uma máquina virtual do Linux no Azure.

Importante

Não misture discos com tamanhos diferentes, o que o faria faria com que o desempenho do conjunto de raids fosse limitado ao do disco mais lento.

Instalar 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 partições de disco

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

  1. Começar fdisk a criar partições

    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. Prima "n" na linha de comandos para criar uma partição new:

    Command (m for help): n
    
  3. Em seguida, prima "p" para criar uma partição de aro p:

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

    Partition number (1-4): 1
    
  5. Selecione o ponto de partida da nova partição ou prima <enter> para aceitar a predefiniçã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. Em alternativa, prima <enter> Criar uma única partição que abranja 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 formato tda partição do ID predefinido '83' (Linux) para o ID 'fd' (linux raid auto):

    Command (m for help): t
    Selected partition 1
    Hex code (type L to list codes): fd
    
  8. Por fim, escreva a tabela de partições na unidade e saia do fdisk:

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

Criar a matriz RAID

  1. O exemplo seguinte irá "riscar" (nível RAID 0) três partições localizadas em três discos de dados separados (sdc1, sdd1, sde1). Depois de executar este comando, é criado um novo dispositivo RAID denominado /dev/md127 . Tenha também em atenção que, se estes discos de dados fizermos anteriormente parte de outra matriz RAID extinta, poderá 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 – ativar 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 após efetuar estas alterações nos sistemas SUSE. Este passo não é necessário no SLES 12.

Adicionar o novo sistema de ficheiros a /etc/fstab

Importante

Editar incorretamente o ficheiro /etc/fstab pode resultar num sistema inotáveis. Se não tiver a certeza, consulte a documentação de distribuição para obter mais informações sobre como editar corretamente este ficheiro. Também é recomendado que seja criada uma cópia de segurança do ficheiro /etc/fstab antes de editar.

  1. Crie o ponto de montagem pretendido para o 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 do 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 se 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, execute o mount comando para garantir que o sistema de ficheiros está montado:

    mount
    .................
    /dev/md127 on /data type ext4 (rw)
    
  5. (Opcional) Parâmetros de Arranque De Segurança Pós-falha

    configuração do fstab

    Muitas distribuições incluem os nobootwait parâmetros de montagem ou nofail que podem ser adicionados ao ficheiro /etc/fstab. Estes parâmetros permitem falhas ao montar um sistema de ficheiros específico e permitem que o sistema Linux continue a arrancar, mesmo que não seja possível montar corretamente o sistema de ficheiros RAID. Veja 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 do Linux

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

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

Suporte TRIM/UNMAP

Alguns kernels do Linux suportam operações TRIM/UNMAP para eliminar blocos não utilizados no disco. Estas operações são sobretudo úteis no armazenamento padrão para informar o Azure de que as páginas eliminadas já não são válidas e podem ser eliminadas. Eliminar páginas pode poupar custos se criar ficheiros grandes e, em seguida, eliminá-los.

Nota

O RAID poderá não emitir comandos de eliminação se o tamanho do segmento da matriz estiver definido como inferior à predefinição (512 KB). Isto acontece porque a granularidade unmap no Anfitrião também é de 512 KB. Se modificou o tamanho do segmento da matriz através do parâmetro mdadm --chunk= , os pedidos TRIM/unmap poderão ser ignorados pelo kernel.

Existem duas formas de ativar o suporte TRIM na VM do Linux. Como habitualmente, 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 de desempenho. Em alternativa, pode executar o comando manualmente a fstrim partir da linha de comandos ou adicioná-lo ao crontab para ser executado regularmente:

    Ubuntu

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

    RHEL/CentOS

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