Install Arch Linux with Fake RAID (Português)
O objetivo deste guia é permitir o uso de um conjunto RAID criado pelo controlador RAID BIOS integrado e, assim, permitir a inicialização dupla do Linux e do Windows a partir de partições dentro do conjunto RAID usando o GRUB. Ao usar o chamado fake RAID ou host RAID, os conjuntos de discos são alcançados em /dev/mapper/nome-do-chipset_nome-aleatório
e não em /dev/sdX
.
O que é "Fake RAID"
Segundo a Wikipedia:
- O RAID baseado em sistema operacional nem sempre protege o processo de inicialização e geralmente é impraticável em versões de desktop do Windows. Os controladores RAID de hardware são caros e proprietários. Para preencher essa lacuna, foram introduzidos "controladores RAID" baratos que não contêm um chip controlador RAID, mas simplesmente um chip controlador de disco padrão com firmware e drivers especiais. Durante a inicialização do estágio inicial, o RAID é implementado pelo firmware. Quando um kernel de sistema operacional em modo protegido, como Linux ou uma versão moderna do Microsoft Windows, é carregado, os drivers assumem o controle.
- Esses controladores são descritos por seus fabricantes como controladores RAID, e raramente fica claro para os compradores que o ônus do processamento RAID é suportado pela unidade de processamento central do computador host - e não pelo próprio controlador RAID - introduzindo assim a sobrecarga de CPU acima mencionada que controladores de hardware não sofrem. Os controladores de firmware geralmente só podem usar certos tipos de discos rígidos em suas matrizes RAID (por exemplo, SATA para Intel Matrix RAID, pois não há suporte SCSI nem PATA em pontes sul Intel ICH modernas; no entanto, os fabricantes de placas-mãe implementam controladores RAID fora da ponte sul em alguns placas-mãe). Antes de sua introdução, um "controlador RAID" implicava que o controlador fazia o processamento, e o novo tipo tornou-se conhecido em círculos com conhecimento técnico como "fake RAID", embora o próprio RAID seja implementado corretamente. Adaptec os chama de "host RAID".
Veja também Guia de FakeRaid - Documentação Comunitária do Ubuntu para mais informações.
Apesar da terminologia, "fake RAID" via dmraid é uma implementação robusta de software RAID que oferece um sistema sólido para espelhar ou distribuir dados em vários discos com sobrecarga insignificante para qualquer sistema moderno. dmraid é comparável a mdadm (RAID de software Linux puro) com o benefício adicional de poder reconstruir completamente uma unidade após uma falha antes do sistema ser inicializado. No entanto, esteja ciente de que nem todas as implementações de BIOS RAID suportam a reconstrução de unidade. Em vez disso, eles contam com software não-linux para realizar a reconstrução. Se o seu sistema não puder reconstruir uma unidade no utilitário de configuração do BIOS RAID, você é fortemente encorajado a usar mdraid (puro Linux Software Raid via mdadm - veja RAID) em vez de dmraid, ou você não conseguirá reconstruir uma matriz em caso de uma falha de unidade - ou incapaz de recuperar informações de sua matriz em caso de falha de placa-mãe sem muito trabalho adicional.
História
No Linux 2.4, a estrutura do kernel ATARAID forneceu suporte para fake RAID (RAID de software assistido pelo BIOS). Para Linux 2.6, o framework device-mapper pode, entre outras coisas legais como LVM e EVMS, fazer o mesmo tipo de trabalho que ATARAID em 2.4. Embora o novo código que lida com a E/S RAID ainda seja executado no kernel, o mapeador de dispositivos geralmente é configurado por um aplicativo de espaço do usuário. Ficou claro que ao usar o mapeador de dispositivos para RAID, a detecção iria para o espaço do usuário.
Heinz Maulshagen criou a ferramenta dmraid para detectar conjuntos RAID e criar mapeamentos para eles. Os controladores suportados são (na maioria baratos) controladores RAID IDE/SATA falsos que contêm funções do BIOS. Exemplos comuns incluem: controladores Promise FastTrak; High Point HPT37x; Intel Matriz RAID; Silicon Image Medley; e NVIDIA nForce.
Preparação
- Abra quaisquer guias necessários do (Guia de instalação) em outra máquina. Se você não tiver acesso a outra máquina, imprima-os.
- Baixe a imagem de instalação do Arch Linux mais recente.
- Faça backup de todos os arquivos importantes, pois tudo nas partições de destino será destruído.
Configure conjuntos de RAID
- Entre na configuração do BIOS e ative o controlador RAID.
- O BIOS pode conter uma opção para configurar unidades SATA como "IDE", "AHCI" ou "RAID"; certifique-se de que "RAID" esteja selecionado.
- Salve e saia da configuração do BIOS. Durante a inicialização, entre no utilitário de configuração RAID.
- O utilitário RAID geralmente é acessível através do menu de inicialização (geralmente F8, F10 ou CTRL+I) ou enquanto o controlador RAID está inicializando.
- Use o utilitário de configuração RAID para criar conjuntos de faixas/espelhos (stripe/mirror) preferidos.
Inicialize o instalador
Consulte Guia de instalação#Pré-instalação para obter detalhes.
Exemplo de instalação do MBR usando mdadm e Intel FakeRAID
Isso aqui porque passei horas fazendo isso funcionar, porque há muita informação por aí sobre diferentes maneiras de fazê-lo, além de informações desatualizadas. Ele pode precisar ser integrado a esta página melhor, com mais explicações e sintaxe da wiki do Arch, mas estou encerrando isso neste momento. Este é um dump de linha de comando básico que mostra uma configuração RAID bem-sucedida usando a estrutura de partição MBR.
Parece que, uma vez que você cria o array no Intel util, ele grava os metadados do raid. Portanto, a montagem/criação de um array não precisa acontecer. Chamei meu array de ZERO no Intel util e você pode vê-lo neste exemplo.
Estou deixando todo o exemplo de instalação, pois mostra quando configurar as coisas durante a instalação. Você vai ter que modificar algumas coisas para que funcionem, não copie e cole!
ls /dev/md/ parted /dev/md/ZERO_0 mklabel msdos mkpart primary ext4 1MiB 100MiB set 1 boot on mkpart primary ext4 100MiB 16.5GiB mkpart primary linux-swap 16.5GiB 100%
Só para ver as mudanças:
fdisk -l /dev/md/ZERO_0
Crie o sistema de arquivos, o swap e ative-o
mkfs.ext4 /dev/md/ZERO_0p1 mkfs.ext4 /dev/md/ZERO_0p2 mkswap /dev/md/ZERO_0p3 swapon /dev/md/ZERO_0p3 mount /dev/md/ZERO_0p2 /mnt mkdir -p /mnt/boot mount /dev/md/ZERO_0p1 /mnt/boot/ nano /etc/pacman.conf
Descomente multilib em x64 (por que não) (faça depois do chroot também)
pacstrap -i /mnt base base-devel genfstab -U /mnt > /mnt/etc/fstab cat /mnt/etc/fstab nano /mnt/etc/fstab
Substitua UUIDs por (isso pode ser opcional):
/dev/md/ZERO_0p1 /dev/md/ZERO_0p2 /dev/md/ZERO_0p3 mdadm --detail --scan >> /mnt/etc/mdadm.conf
Entre em chroot para configuração
arch-chroot /mnt /bin/bash nano /etc/locale.gen
pt_BR.UTF-8 UTF-8
nano /etc/locale.conf
LANG=pt_BR.UTF-8
locale-gen pt-BR pt_BR.UTF-8 tzselect ln -sf /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime
Trabalhe em algumas coisas do GRUB
pacman -Sv grub nano /etc/default/grub
- Descomente GRUB_DISABLE_LINUX_UUID=true
Coisas do RAID
cat /etc/mdadm.conf nano /etc/mkinitcpio.conf
Adicione mdadm_udev em HOOKS
HOOKS="base udev autodetect modconf block mdadm_udev filesystems keyboard fsck"
Adicione /sbin/mdmon em BINARIES<ref>https://bbs.archlinux.org/viewtopic.php?id=137058</ref>
BINARIES="/sbin/mdmon"
Regenere-o
mkinitcpio -p linux
grub-install --recheck /dev/md/ZERO_0 grub-mkconfig -o /boot/grub/grub.cfg
cat /boot/grub/grub.cfg
echo seu_hostname > /etc/hostname nano /etc/hosts systemctl enable dhcpcd@enp13s0.service exit umount -R /mnt reboot
Remova o CD live
Inicie o dmraid
Inicie o "device-mapper" e procure os arranjos RAID:
# modprobe dm_mod # dmraid -ay # ls -la /dev/mapper/
Exemplo de saída:
/dev/mapper/control <- Criado pelo device-mapper; se presente, o mapeador de dispositivo provavelmente está funcionando /dev/mapper/sil_aiageicechah <- O arranjo RAID na controladora Silicon Image /dev/mapper/sil_aiageicechah1 <- Primeira partição nesse arranjo RAID
Se houver apenas um arquivo (/dev/mapper/control
), verifique se o módulo do seu chipset está carregado com lsmod
. Se estiver carregado, então o dmraid não suporta essa controladora, ou não existem arranjos RAID no sistema (verifique a BIOS RAID novamente). Se tudo estiver correto, então você será forçado a utilizar Software RAID (não será possível fazer Dual Boot com essa controladora).
Se o módulo do seu chipset não foi carregado, faça-o agora. Como no exemplo:
# modprobe sata_sil
Veja /lib/modules/`uname -r`/kernel/drivers/ata/
para os drivers disponíveis.
Para testar os arranjos raid:
# dmraid -tay
GRUB2
Consulte GRUB2 para obter detalhes sobre como configurar o GRUB2. grub-bios funciona fora da caixa com partições dm-raid:
$ grub-install --target=i386-pc --recheck --debug /dev/mapper/sil_aiageicechah
GRUB_DISABLE_LINUX_UUID=true
não estiver definido, GRUB2 irá gerar linhas com root=UUID=...
resultando na montagem de um lado de um array RAID 1 espelhado.(Opcional) Instale o os-prober se você tiver outro sistema operacional como o Windows.
$ grub-mkconfig -o /boot/grub/grub.cfg
Isso é tudo, grub-mkconfig irá gerar o configure automaticamente. Você pode editar /etc/default/grub
para modificar a configuração (tempo limite, cor, etc) antes do grub-mkconfig.
Solução de problemas
Iniciando com um arranjo corrompido
Uma desvantagem do uso de Fake RAID no GNU/Linux é que o dmraid é, atualmente, incapaz de lidar com arranjos degradados e se recusa a ativar. Nesse cenário, é preciso resolver o problema através de outro sistema operacional (por exemplo o Windows) ou através do utilitário do chipset RAID.
Como alternativa, se estiver usando um array espelhado (RAID 1), os usuários podem ignorar temporariamente o dmraid durante o processo de inicialização e inicializar a partir de uma única unidade:
- Edite a linhe kernel no menu do GRUB
- Remova as referencias aos dispositivos dmriad (exemplo mude
/dev/mapper/raidSet1
para/dev/sda1
) - Acrescente
disablehooks=dmraid
para prevenir um kernel panic se o dmraid descobrir o arranjo degradado
- Remova as referencias aos dispositivos dmriad (exemplo mude
- Inicie o sistema
Erro: Não foi possível determinar o número principal/menor do dispositivo raiz
Se ocorrer uma falha de inicialização após a atualização do kernel, onde o processo de inicialização não consegue determinar o número principal/menor do dispositivo raiz, isso pode ser apenas um problema de tempo (ou seja, dmraid -ay
pode ser chamado antes de /dev/sd* estar totalmente configurado e detectado). Isso pode afetar as imagens de kernel normal e LTS. A inicialização da imagem do kernel 'Fallback' deve funcionar. O erro será algo assim:
Activating dmraid arrays... no block devices found Waiting 10 seconds for device /dev/mapper/nvidia_baaccajap5 Root device '/dev/mapper/nvidia_baaccajap5' doesn't exist attempting to create it. Error: Unable to determine major/minor number of root device '/dev/mapper/nvidia_baaccajap5'
Para contornar este problema:
- inicialize o kernel Fallback
- insira o hook
sleep
na linhaHOOKS
de/etc/mkinitcpio.conf
após o hookudev
, assim:
HOOKS="base udev sleep autodetect block dmraid filesystems"
- reconstrua a imagem do kernel e reinicie.
Espelho dmraid falha ao ativar
Tudo acima funciona corretamente na primeira vez, mas quando você reinicia o dmraid não consegue encontrar o array?
Isso ocorre porque o software raid do Linux (mdadm) já tentou montar o array fake RAID durante a inicialização do sistema e o deixou em um estado desmontável. Para evitar que mdadm seja executado, remova a regra do udev responsável:
# cd /lib/udev/rules.d # mkdir disabled # mv 64-md-raid.rules disabled/ # reboot
Nenhum dispositivo de bloco para partições na matriz RAID existente
Se o seu array existente, configurado antes de tentar instalar o Arch, aparece em /dev/mapper/nome_do_raid
, mas não tem partições (nome_do_raid1
, etc) verifique novamente o status de suas partições RAID.
O Arch pode não criar dispositivos de bloco para partições que funcionem em outro sistema operacional se houver certos problemas, mesmo pequenos.
gparted é útil para diagnosticar e reparar a maioria dos problemas. Infelizmente, você pode ter que reparticionar do zero.