Algumas placas-mãe e placas de expansão adicionam um hardware simples, geralmente apenas uma ROM, que permite que o computador inicialize a partir de um array RAID. Após a inicialização, o acesso ao array RAID é feito pelo software em execução no processador principal do computador. Este “RAID via software assistido por hardware” fornece arrays RAID que não dependem de nenhum sistema operacional em particular, e que são funcionais antes mesmo de um sistema operacional ser carregado.
Vários níveis de RAID são suportados, dependendo do hardware em uso. Veja graid(8) para uma lista completa.
O graid(8) requer o módulo do kernel geom_raid.ko
, que está incluído no kernel GENERIC
a partir do FreeBSD 9.1. Se necessário, ele pode ser carregado manualmente com o comando graid load
.
Os dispositivos de RAID via software geralmente têm um menu que pode ser acessado pressionando teclas especiais quando o computador está inicializando. O menu pode ser usado para criar e excluir arrays RAID. O graid(8) também pode criar arrays diretamente a partir da linha de comando.
O graid label
é usado para criar um novo array. A placa-mãe usada neste exemplo tem um chipset RAID da Intel, portanto, o formato de metadados da Intel é especificado. A nova matriz recebe um rótulo de gm0
, é um espelhamento (RAID1) e usa as unidades ada0
e ada1
.
Algum espaço nas unidades será sobrescrito quando elas forem transformadas em um novo array. Faça o backup dos dados existentes primeiro!
#
graid label Intel gm0 RAID1 ada0 ada1
GEOM_RAID: Intel-a29ea104: Array Intel-a29ea104 created. GEOM_RAID: Intel-a29ea104: Disk ada0 state changed from NONE to ACTIVE. GEOM_RAID: Intel-a29ea104: Subdisk gm0:0-ada0 state changed from NONE to ACTIVE. GEOM_RAID: Intel-a29ea104: Disk ada1 state changed from NONE to ACTIVE. GEOM_RAID: Intel-a29ea104: Subdisk gm0:1-ada1 state changed from NONE to ACTIVE. GEOM_RAID: Intel-a29ea104: Array started. GEOM_RAID: Intel-a29ea104: Volume gm0 state changed from STARTING to OPTIMAL. Intel-a29ea104 created GEOM_RAID: Intel-a29ea104: Provider raid/r0 for volume gm0 created.
Uma verificação de status mostra que o novo espelhamento está pronto para uso:
#
graid status
Name Status Components raid/r0 OPTIMAL ada0 (ACTIVE (ACTIVE)) ada1 (ACTIVE (ACTIVE))
O dispositivo de array aparece em /dev/raid/
. O primeiro array é chamado de r0
. Arrays adicionais, se presentes, serão r1
, r2
e assim por diante.
O menu da BIOS em alguns desses dispositivos pode criar arrays com caracteres especiais em seus nomes. Para evitar problemas com esses caracteres especiais, os arrays recebem nomes numerados simples como r0
. Para mostrar os rótulos reais, como gm0
no exemplo acima, use o sysctl(8):
#
sysctl kern.geom.raid.name_format=1
Alguns dispositivos de RAID via software suportam mais de um volume em um array. Os volumes funcionam como partições, permitindo que o espaço nas unidades físicas seja dividido e usado de diferentes maneiras. Por exemplo, os dispositivos RAID via software Intel suportam dois volumes. Este exemplo cria um espelho de 40G para armazenar com segurança o sistema operacional, seguido por um volume de 20G RAID0 (stripe) para armazenamento temporário rápido:
#
graid label -S 40G Intel gm0 RAID1 ada0 ada1
#
graid add -S 20G gm0 RAID0
Os volumes aparecem como entradas adicionais r
em X
/dev/raid/
. Um array com dois volumes mostrará r0
e r1
.
Veja graid(8) para o número de volumes suportados por diferentes dispositivos RAID via software.
Sob certas condições específicas, é possível converter uma única unidade existente em um array graid(8) sem reformatar. Para evitar a perda de dados durante a conversão, a unidade existente deve atender a esses requisitos mínimos:
A unidade deve ser particionada com o esquema de particionamento MBR. O GPT ou outros esquemas de particionamento com metadados no final da unidade serão sobrescritos e corrompidos pelos metadados do graid(8).
Deve haver espaço não particionado e não utilizado o suficiente no final da unidade para conter os metadados do graid(8). Esses metadados variam em tamanho, mas o maior ocupa 64M, então pelo menos este espaço livre é recomendado.
Se a unidade atender a esses requisitos, comece fazendo um backup completo. Em seguida, crie um espelhamento de unidade única com essa unidade:
#
graid label Intel gm0 RAID1 ada0 NONE
Os metadados do graid(8) foram gravados no final da unidade no espaço não utilizado. Uma segunda unidade pode agora ser inserida no espelhamento:
#
graid insert raid/r0 ada1
Os dados da unidade original começarão imediatamente a ser copiados para a segunda unidade. O espelhamento operará em status degradado até que a cópia seja concluída.
As unidades podem ser inseridas em uma matriz como substitutos de unidades que falharam ou estão faltando. Se não houver unidades com falha ou ausentes, a nova unidade se tornará uma reserva. Por exemplo, inserir uma nova unidade em um espelhamento de duas unidades de trabalho resulta em um espelhamento de duas unidades com uma unidade sobressalente, não em um espelhamento de três unidades.
No array de espelho do exemplo, os dados começam a ser copiados imediatamente para a unidade recém-inserida. Qualquer informação existente na nova unidade será substituída.
#
graid insert raid/r0 ada1
GEOM_RAID: Intel-a29ea104: Disk ada1 state changed from NONE to ACTIVE. GEOM_RAID: Intel-a29ea104: Subdisk gm0:1-ada1 state changed from NONE to NEW. GEOM_RAID: Intel-a29ea104: Subdisk gm0:1-ada1 state changed from NEW to REBUILD. GEOM_RAID: Intel-a29ea104: Subdisk gm0:1-ada1 rebuild start at 0.
Discos individuais podem ser permanentemente removidos de um array e seus metadados apagados:
#
graid remove raid/r0 ada1
GEOM_RAID: Intel-a29ea104: Disk ada1 state changed from ACTIVE to OFFLINE. GEOM_RAID: Intel-a29ea104: Subdisk gm0:1-[unknown] state changed from ACTIVE to NONE. GEOM_RAID: Intel-a29ea104: Volume gm0 state changed from OPTIMAL to DEGRADED.
Um array pode ser interrompido sem remover os metadados das unidades. O array será reiniciado quando o sistema for inicializado.
#
graid stop raid/r0
O status do array pode ser verificado a qualquer momento. Depois que um disco foi adicionado ao espelho no exemplo acima, os dados estarão sendo copiados do disco original para o novo disco:
#
graid status
Name Status Components raid/r0 DEGRADED ada0 (ACTIVE (ACTIVE)) ada1 (ACTIVE (REBUILD 28%))
Alguns tipos de arrays, como RAID0
ou CONCAT
, podem não ser mostrados no relatório de status se os discos falharem. Para ver esses arrays com falhas parciais, adicione -ga
:
#
graid status -ga
Name Status Components Intel-e2d07d9a BROKEN ada6 (ACTIVE (ACTIVE))
Arrays são destruídos, excluindo todos os volumes deles. Quando o último volume presente é excluído, o array é interrompido e os metadados são removidos dos discos:
#
graid delete raid/r0
Os discos podem conter metadados graid(8) inesperados, originados no seu uso anterior ou em testes do fabricante. O graid(8) detectará estes discos e criará um array, interferindo no acesso ao disco individual. Para remover os metadados indesejados:
Inicialize o sistema. No menu de inicialização, selecione 2
para o prompt do utilitário de boot. Entre:
OKset kern.geom.raid.enable=0
OKboot
O sistema inicializará com o graid(8) desativado.
Fazer backup de todos os dados na unidade afetada.
Como solução alternativa, a detecção de arrays graid(8) pode ser desativada incluindo se a variável
kern.geom.raid.enable=0
no arquivo /boot/loader.conf
.
Para remover permanentemente os metadados graid(8) do disco afetado, inicialize uma instalação do FreeBSD usando um CD-ROM ou um memory stick e selecione a opção Shell
. Use o comando status
para encontrar o nome do array, normalmente raid/r0
:
#
graid status
Name Status Components raid/r0 OPTIMAL ada0 (ACTIVE (ACTIVE)) ada1 (ACTIVE (ACTIVE))
Exclua o volume pelo nome:
#
graid delete raid/r0
Se houver mais de um volume exibido, repita o processo para cada volume. Após o último array ter sido excluído, o volume será destruído.
Reinicialize e verifique os dados, restaurando a partir do backup, se necessário. Depois que os metadados forem removidos, a entrada kern.geom.raid.enable=0
no arquivo /boot/loader.conf
também pode ser removida.
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.