Como posso convencer o RHEL / CentOS / SL 7 a inicializar normalmente com RAID de software degradado 1

3

Eu configurei um novo servidor (meu primeiro com esta versão do Linux). Instalei um par de HDDs SATA de 160 GB em branco (um Seagate e um WDC, mas com exatamente o mesmo número de setores LBA) em uma máquina antiga, e decidi instalar o Scientific Linux 7.0 (remarcado RHEL) em um RAID 1 espelhada).

O primeiro problema foi que eu não consegui descobrir como instalar o SL / RHEL (Anaconda) para configurar as duas unidades para o RAID1. Então inicializei de um CD do PartedMagic e usei-o para fazer o particionamento.

Eu particionei as duas unidades de forma idêntica. Cada unidade possui uma grande partição para que o RAID1 + ext4 seja montado em / , uma pequena partição (atualmente não usada) para RAID1 + ext3 seja montada em /safe e uma partição de 3GB Linux Swap. Eu usei fdisk para alterar os tipos de partições RAID em cada unidade para FD e mdadm para criar as matrizes RAID:

mdadm --create --verbose /dev/md0 --raid-devices=2 --level=1 /dev/sda1 /dev/sdb1
mdadm --create --verbose /dev/md1 --raid-devices=2 --level=1 /dev/sda2 /dev/sdb2

Depois encerrei a inicialização do SL DVD e tentei instalar novamente. Desta vez, o instalador reconheceu os arrays RAID1, formatou-os para ext4 & ext3, respectivamente, e instalado sem problemas.

Neste ponto, tudo parecia bem. Eu desliguei, liguei de novo, e tudo deu certo. Até aí tudo bem.

Então eu testei a funcionalidade RAID1: desliguei o computador, removi uma das unidades e tentei inicializá-lo. Eu esperava que ele exibisse algumas mensagens de erro sobre a degradação da matriz RAID e, em seguida, viesse para a tela de login normal. Mas não funcionou. Em vez disso eu peguei:

Welcome to emergency mode! After logging in, type "journalctl -xb" to view
system logs, "systemctl reboot" to reboot, "systemctl default" to try again
to boot into default mode.
Give root password for maintenance
(or type Control-D to continue):

A mesma coisa acontece independentemente de qual unidade está faltando.

Isso não é bom! A finalidade das unidades espelhadas é garantir que o servidor continue em execução se uma das unidades falhar.

Ctrl-D só me faz voltar a repetir a mesma tela " Welcome to emergency mode ". O mesmo acontece ao digitar minha senha de root e, em seguida, " systemctl default ".

Então eu tentei uma experiência. No menu de inicialização eu pressionei e para editar os parâmetros de inicialização do kernel, e mudei " rhgb quiet " para " bootdegraded=true " e então inicializei. Sem alegria.

Isso me permite ver mais mensagens de status voando, mas não permitiu que a máquina inicializasse normalmente quando faltava uma unidade. Ele ainda parou na mesma tela " Welcome to emergency mode ". A seguir, vi a unidade Seagate removida e a unidade WDC restante. As últimas linhas se parecem com as seguintes (exceto que "...." denota onde me cansei de digitar):

[  OK  ] Started Activation of DM RAID sets.
[  OK  ] Reached target Encrypted Volumes.
[  14.855860] md: bind<sda2>
[  OK  ] Found device WDC_WD1600BEVT-00A23T0.
         Activating swap /dev/disk/by-uuid/add41844....
[  15.190432] Adding 3144700k swap on /dev/sda3.  Priority:-1 extents:1 across:3144700k FS
[  OK  ] Activated swap /dev/disk/by-uuid/add41844....
[ TIME ] Timed out waiting for device dev-disk-by\x2duuid-a65962d\x2dbf07....
[DEPEND] Dependency failed for /safe.
[DEPEND] Dependency failed for Local File Systems.
[DEPEND] Dependency failed for Mark the need to relabel after reboot.
[DEPEND] Dependency failed for Relabel all file systems, if necessary.
[  99.299068] systemd-journald[452]: Received request to flush runtime journal from PID 1
[  99.3298059] type=1305 audit(1415512815.286:4): audit_pid=588 old=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:auditd_t:s0 res=1
Welcome to emergency mode! After logging in, type "journalctl -xb" to view
system logs, "systemctl reboot" to reboot, "systemctl default" to try again
to boot into default mode.
Give root password for maintenance
(or type Control-D to continue):

Portanto, parece que a instalação em unidades espelhadas RAID1 apenas dobrará a chance de uma falha de unidade derrubar o servidor (já que há duas unidades em vez de uma). Isso não é o que eu esperava conseguir com drives espelhados.

Alguém sabe como fazer o boot & executar "normalmente" (com uma matriz RAID1 degradada) quando uma unidade de disco rígido falhar?

Duas outras notas:

  1. Sou novo no RHEL / SL / CentOS 7, portanto, na tela "Software Selection", durante a instalação do SL, tive que fazer algumas suposições. Eu escolhi: "General Purpose System" + Servidor FTP, Servidor de Arquivo e Armazenamento, Office Suite e Produtividade, Hypervisor de virtualização, Ferramentas de virtualização e Ferramentas de desenvolvimento

  2. Estou vendo alguns erros aparentemente inócuos:

    ATA x : softreset failed (device not ready)

O " x " depende de quais unidades estão instaladas. Eu recebo mais desses erros com duas unidades instaladas do que com apenas uma.

    
por Dave Burton 09.11.2014 / 23:43

1 resposta

3

Acontece que o problema não era a partição principal do RAID1, eram as outras partições.

Em primeiro lugar, eu não deveria ter usado partições swap. Isso foi apenas idiota. Mesmo se isso tivesse funcionado, ainda assim, o sistema ficaria vulnerável a uma falha se uma unidade de disco tivesse desenvolvido um bloco defeituoso dentro da partição swap. Obviamente, é melhor usar um arquivo de troca na partição RAID1; Eu não sei o que eu estava pensando.

No entanto, a partição "extra" ext3 md1 também foi um problema. Eu não sei porque.

Depois de remover as referências às outras partições (as duas partições de troca e a partição ext3 md1 ) de /etc/fstab , o sistema inicializaria bem com uma unidade, executando a matriz RAID1 em modo degradado, como Eu queria isso.

Depois de desligar e reinstalar a unidade ausente, iniciei a máquina novamente e ela ainda estava sendo executada com apenas uma unidade. Mas eu fiz " mdadm --add " para adicionar a unidade ausente de volta, e seu estado foi para " spare rebuilding " por um tempo, e depois para " active ."

Em outras palavras, está funcionando perfeitamente.

    
por 21.11.2014 / 04:06