Ao usar o RAID10 + BBWC, por que é melhor separar os arquivos de dados do PostgreSQL dos logs de transações e do sistema operacional do que mantê-los todos no mesmo array?

2

Eu vi os conselhos em todos os lugares (incluindo aqui e aqui ): mantenha sua partição OS, arquivos de dados DB e logs de transações DB em discos / matrizes separados. A recomendação geral é usar RAID1 para OS, RAID10 para dados (ou RAID5 se a carga for muito tendenciosa para leitura) e RAID1 para logs de transação.

No entanto, considerando que você precisará de pelo menos 6 ou 8 drives para construir essa configuração, um RAID10 com mais de 6-8 unidades com o BBWC não funcionaria melhor? E se as unidades forem SSDs?

Estou falando aqui sobre unidades de servidor internas, não sobre SAN.

    
por Vlad 01.10.2012 / 16:32

4 respostas

3

A razão deste conselho é evitar sobrecarregar um grupo de discos. Considere o seguinte conjunto de eventos simultâneos:

  1. Uma conexão de banco de dados executa um SELECT em uma tabela grande
  2. Uma segunda conexão de banco de dados executa um grande INSERT ou UPDATE em uma tabela diferente
  3. Várias pessoas fazem login na máquina de uma só vez (SSH)

Se o seu sistema estava rodando em um único disco, a cabeça agora precisa se movimentar entre a localização da tabela da qual estamos SELECT , onde /var vive (para registrar os logins), a localização do Write-Ahead Log (para registrar o INSERT ou UPDATE ), os vários locais em /home e /bin precisavam iniciar as novas sessões do usuário e, por fim, as tabelas que estavam em INSERT ed ou UPDATE d.

Toda essa viagem de cabeça de disco leva tempo - à medida que o número de solicitações conflitantes acumula o tempo necessário, torna-se mensurável e possivelmente perceptível como um impacto no desempenho.

Se cada um desses três itens estivesse acontecendo em um grupo de discos separado ( SELECT s para o grupo de dados, INSERT s e UPDATE s para o grupo WAL e material do sistema operacional para o grupo OS) os três itens acima poderiam, teoricamente, acontecer em paralelo (e a eventual liberação do Write-Ahead-Log poderia ser feita quando for conveniente para o grupo de dados).

A chave é que isto é baseado em um número teoricamente pequeno de fusos - um único disco, ou um pequeno grupo RAID de 2-4 drives. Como você e ewwhite apontam, em certo ponto ter mais fusos atenua as solicitações de viagens de cabeça conflitantes e, eventualmente, o ganho supera a possível penalidade de desempenho para a maioria das cargas de trabalho.

A chave aqui é o benchmarking de sua carga de trabalho (tanto quanto você praticamente pode). Também como foi apontado, os SSDs invalidam a principal suposição subjacente (SSDs são acesso em tempo constante para qualquer "setor" - não há atraso rotacional ou de posicionamento da cabeça), então você deve ter isso em mente se estiver usando SSDs em seu design: você provavelmente verá mais benefícios de separar SSDs do que de separá-los para isolar a atividade com base na suposição de que solicitações de disco conflitantes exigem mais tempo para reposicionar cabeçotes e pratos mecânicos.

    
por 01.10.2012 / 18:10
3

Eu realmente não me importo em separar o sistema operacional das unidades de dados nas configurações de disco interno, já que o benefício de ter mais eixos (nessa escala) supera os ganhos de ter conjuntos de discos distintos.

A melhor maneira de descobrir é testar sua configuração e seus dados ...

Lembre-se, você está em um controlador HP. Controladores Smart Array podem pegar um conjunto (array) de 8 discos e dividi-lo em várias unidades lógicas de diferentes níveis de RAID. Então você pode dividir isso em 200 GB de RAID 5, 36 GB de RAID 1 + 0, 100 GB de RAID 1 + 0 e 50 GB de RAID 0, se você quiser ... É melhor aproveitar mais discos se puder.

O SSD muda as coisas um pouco. Com um controlador P410, você realmente não deve ir mais de 6 discos. Retornos decrescentes acima desse nível .

    
por 01.10.2012 / 16:56
1

As respostas acima são boas, mas há outro motivo para separar o SO dos dados e / ou logs. Torna mais fácil definir políticas diferentes para antivírus. Também é uma prática recomendada / requisito de segurança para bancos de dados e servidores da Web manterem os dados separados do sistema operacional. Uma última coisa é que você pode limpar e reconstruir o sistema operacional sem precisar se preocupar com os dados.

    
por 01.10.2012 / 18:47
0

Isso provavelmente depende das suas taxas de IO. Um array RAID 10 de 4 discos pode provavelmente chegar perto de 500 ops por segundo. Seus melhores dados virão de um teste de desempenho em que você monitora a taxa de E / S, o tamanho da fila de disco e o% de disco ocupado. Se tudo parece bom, não há necessidade de mudar as coisas.

Para SSDs, é uma história diferente. Um disco será capaz de lidar com grandes cargas de IO. Um array RAID 1 pode executar quase 2x melhor; depende de quão bom é o seu cartão RAID e se ele faz leituras de ambos os discos (o mais provável é que o faça). Minha preocupação com SSDs e logs de banco de dados seria o grande número de gravações e se reduziria a vida útil da unidade. Eu não vi muitos dados sobre isso.

    
por 01.10.2012 / 16:44