Eu tenho um servidor com três controladores de disco conectados diretamente. Cada um deles pode fornecer redundância interna e IO-striping em discos, mas estou me perguntando qual é a melhor maneira de configurar todo o sistema.
Seria sensato alocar três arquivos de dados para cada espaço de tabela, sendo cada arquivo de dados criado em uma montagem fornecida por um único controlador? O Oracle parece distribuir os dados de maneira um tanto uniforme entre os arquivos de dados ao fazer inserções, mas isso seria suficiente para consultas?
Estamos principalmente preocupados com o desempenho de leitura para consultas de agregação única (armazém de dados) e queremos ler os dados em paralelo de cada controlador.
Uma resposta seria usar ASM ou LVM para fazer o striping, o Oracle veria apenas um ponto de montagem onde armazenar arquivos de dados. Temos uma configuração com ASM + número de discos JBOD; ele funciona razoavelmente bem, mas o ASM tem seus próprios problemas e estamos considerando alternativas.
Seu plano de adicionar três arquivos de dados em montagens diferentes não funcionará bem. O Oracle não distribui de maneira otimizada dentro dos tablespaces. Apenas aloca extensões de maneira razoavelmente eficiente. O método que você sugeriu é distribuído melhor do que um disco, mas não está nem perto do ideal. Basicamente, você não pode ter um striping realmente bom sem ASM ou um sistema de gerenciamento de disco externo.
O outro problema é que ter três arrays redundantes independentes vai desperdiçar muito espaço em disco ou criar três pontos separados de falha. Pense nisso - se você estiver mantendo uma cópia de cada bloco de dados em cada controlador, dentro desse controlador você terá várias cópias dos dados novamente. Você terminará com 4, 6 ou 9 cópias de cada bloco. Isso é um enorme desperdício de recursos. Por outro lado, sem redundância entre os controladores, você está transformando cada controlador em um SPOF (ponto único de falha).
Basicamente você tem duas opções:
Deixe a Oracle gerenciar totalmente a funcionalidade RAID. Desligue a redundância nos três controladores, configure o ASM com redundância normal/alta. Crie seus diskgroups usando um número igual de discos de cada controlador. Crie três grupos de falha, um para cada controlador. Isso alcançará a redundância e distribuição que você deseja.
Gerencie a redundância totalmente sem Oracle. Use o LVM ou um sistema semelhante para apresentar um disco completamente redundante e devidamente distribuído ao Oracle. Isso provavelmente também envolverá desligar a redundância em cada controlador e permitir que o LVM gerencie a redundância entre os controladores. O resultado é o mesmo.
TL:DR - Sua redundância em discos dentro de cada controlador é inútil quando você tem vários controladores. Desative-o e crie redundância nos controladores.