Configurando um multi-dispositivo inicializável (RAID 1) usando Linux Software RAID

5

Eu estou tentando configurar um RAID de software inicializável que irá conter o sistema de arquivos raiz e inicializar o Linux Mint Qiana. Ele será usado para executar alguns aplicativos de monitoramento gráfico em um pequeno datacenter, bem como um terminal simples para acessar outros nós da LAN.

Eu tenho duas unidades SATA de 500 GB ( /dev/sda e /dev/sdb ) que serão usadas para construir o RAID 1 Array. Parece haver muitas maneiras de fazer isso, mas não está claro como criar um dispositivo md0 inicializável.

Minha primeira abordagem foi inicializar usando um CD de instalação do Live Linux Mint. Eu passaria então para um prompt bash e particionaria manualmente /dev/sda usando sfdisk . Eu criei uma tabela de partições simples que incluía uma única partição primária, junto com uma partição swap. Eu então simplesmente copiei a tabela de partições de /dev/sda para /dev/sdb :

sfdisk -d /dev/sda | sfdisk /dev/sdb

Ok, agora tenho duas unidades prontas para serem montadas em uma matriz RAID. Eu primeiro crie o array dizendo:

mdadm --create --verbose --metadata=0.90 /dev/md0 --level=mirror 
   --raid-devices=2 /dev/sda /dev/sdb

Cerca de uma hora depois, a matriz termina de sincronizar.

Agora posso inicializar /dev/md0 dando a ele um sistema de arquivos:

mke2fs -t ext4 /dev/md0

Ok, agora tudo parece bom. Então, volto para a instalação do Live CD e instalo o Linux em /dev/md0 . Tudo funciona até o instalador tentar executar grub-install , após o qual recebe um erro fatal.

Então, pesquisei tentando entender a causa aqui. Eu não sei exatamente por que isso acontece, mas o meu entendimento é que isso tem algo a ver com o fato de que "não se inicializa simplesmente a partir de /dev/md0 ". Parece que, para criar um array RAID 1 de vários dispositivos inicializável, você precisa criar uma partição não-RAID /boot separada ou usar initramfs .

Infelizmente, não entendo exatamente o que isso implica. Em primeiro lugar, eu não quero criar uma partição separada não-RAID /boot , porque a inicialização completa da inicialização de md0 é para a redundância. Em segundo lugar, meu entendimento é que a abordagem initramfs é necessária para carregar mdadm no rootfs no momento da inicialização. Mas, quando eu inicializo do Live CD e crio minha matriz RAID, mdadm já está carregado na memória, então não entendo porque o instalador sempre recebe um erro fatal ao executar grub-install .

Alguém pode explicar quais etapas estão faltando aqui ou fornecer uma descrição de como configurar uma montagem para vários dispositivos que pode ser inicializada?

    
por Siler 08.10.2014 / 18:22

1 resposta

3

A inicialização com o Software RAID quase sempre requer uma partição / boot separada, especialmente com versões mais antigas do GRUB. Especificar "--metadata = 0.90" ao criar a partição RAID-1 para / boot também é necessário.

/ boot deve ser a primeira partição e mantida pequena. Principalmente por razões de inicialização do BIOS legado. A outra razão pela qual / boot deve ser uma partição separada é que normalmente deve ser montado em modo somente leitura em / etc / fstab. Você deve apenas montá-lo novamente como leitura-gravação antes de fazer uma atualização do kernel.

A configuração típica da unidade que uso é:

/dev/sda1 + /dev/sdb1 = /dev/md0 Software RAID-1 with metadata 0.90
/dev/sda2 + /dev/sdb2 = /dev/md### Software RAID-1 with LVM on top

Eu sempre uso / dev / md0 para a partição / boot. Para a área LVM, eu uso um número aleatório abaixo de 125 para o dispositivo mdadm #, principalmente para evitar que as coisas quebrem se essa unidade já estiver conectada a um servidor diferente na inicialização (ou seja, via USB durante a recuperação).

Depois de configurar seu RAID-1 em / boot, você precisa instalar o GRUB em cada unidade no array RAID-1.

Como inicializar após falha de RAID (software RAID )?

Este exemplo específico mostra como configurar um espelho RAID-1 de 3 vias para que todas as três unidades sejam inicializáveis com o GRUB.

# grub
grub> find /grub/stage1
 (hd0,0)
 (hd1,0)
 (hd2,0)
grub> device (hd0) /dev/sda
grub> root (hd0,0)
grub> setup (hd0)
grub> device (hd0) /dev/sdb
grub> root (hd0,0)
grub> setup (hd0)
grub> device (hd0) /dev/sdc
grub> root (hd0,0)
grub> setup (hd0)
grub> quit
    
por 02.07.2015 / 13:10