É bastante comum ver conselhos para desativar o cache de gravação em discos individuais usados para bancos de dados, porque, caso contrário, alguns discos reconhecerão gravações que ainda não foram feitas na superfície do disco.
Isso implica que alguns discos não reconhecem gravações até chegarem à superfície do disco (atualização: ou relatam com precisão quando solicitados a liberar o cache. Onde posso encontrar esses discos ou onde posso procurar informações autorizadas? de onde encontrar esses discos?
Estou configurando alguns servidores de banco de dados que realmente se beneficiariam do uso do cache de gravação, mas o aplicativo é sensível ao preço e prefiro não dobrar o custo do meu subsistema de disco para alguns controladores RAID em cache, porque não tenho informações suficientes para saber se posso confiar no cache em cada unidade.
Respostas:
De um modo geral, em resposta direta à sua pergunta, não conheço nenhuma das principais marcas de unidades SATA de que a própria unidade teve erros em relação à operação adequada com o cache de gravação ativado. Ou seja, somente da perspectiva da unidade, a unidade faz o que deve fazer da perspectiva do armazenamento em cache. Eu também observaria que, mesmo quando o cache de gravação está ativado, o atraso de uma gravação em disco no cabo SATA para a mídia rotativa fisicamente atualizada ainda é muito curto (~ 50 a 100ms normalmente). Não é como se os dados do cache sujo estivessem parados por alguns segundos ... a unidade está tentando continuamente obter dados sujos do cachena mídia física assim que possível. Não se trata apenas de segurança de dados, mas de estar pronto para aceitar gravações futuras sem demora (por exemplo, postagem de gravação).
O problema que surge quando o armazenamento em cache está ativado é que a ordem de gravação na unidade pelo cabo SATA e a ordem de gravação na mídia rotativa não são as mesmas. Isso nunca pode causar um problema, a menos que você tenha uma falta de energia ou uma falha no sistema antes que todo o conteúdo do cache chegue ao disco. Por quê? ->
O problema que pode surgir aqui é relativo à robustez da transação do sistema de arquivos e / ou do conteúdo do arquivo de banco de dados para essas gravações perdidas fora de ordem. De fato, aquelas gravações potencialmente perdidas fora de ordem podem teoricamente corromper a integridade da lógica da transação que, de outra forma, seria garantida pelas gravações em disco que ocorrem em uma ordem muito específica para a mídia.
Agora, é claro, os projetistas do sistema de arquivos, bancos de dados, controladores RAID etc. estão cientes (ou certamente devem estar cientes) desse fenômeno em relação ao cache de gravação. O cache de gravação é extremamente desejável do ponto de vista de desempenho na maioria dos cenários de E / S de acesso aleatório. De fato, ter o cache de gravação disponível é um elemento-chave para poder ter algum benefício real para o mais avançado Native Command Queuing ( NCQ)) que é suportado em SATA mais recente e nas últimas gerações de implementações de PATA. Portanto, para garantir o pedido à mídia física em determinados momentos críticos, o sistema de arquivos e / ou o aplicativo etc. podem solicitar especificamente uma liberação dos caches de gravação para a mídia. Na conclusão dessa solicitação de sincronização - tudo o que está pendente de (potencialmente) buffers de arquivo, cache do disco do SO, cache físico do disco etc. está na mídia de acordo com o design do sistema de transações nas operações críticas certas. Ou seja, isso acontece corretamente se os programadores fizerem as chamadas corretas no topo E todos os elementos dessa cadeia de camadas de software e hardware fizeram seu trabalho corretamente. ou seja: não há erros nesse sentido na unidade, nos controladores RAID, nos drivers de disco, nos caches do SO, no sistema de arquivos, no mecanismo de banco de dados etc. É um monte de software que tudo precisa funcionar exatamente da maneira certa. Além disso, verificar a correção a esse respeito é muito difícil, porque em quase todas as situações normalmente a ordem de gravação não importa ... e os cenários de falha de energia e falha são testes difíceis de construir. Portanto, no final, "desativando o cache de gravação" em uma ou mais das várias camadas e / ou significados deste termo ... tem a reputação de "corrigir" certos tipos de problemas. De fato, desligar os comportamentos de armazenamento em cache de gravação do controlador RAID ou dos caches de disco do sistema operacional, ou da unidade etc. está evitando um ou mais erros no sistema ..... e a origem desse conhecimento. e cenários de falha de energia e falha são testes difíceis de construir. Portanto, no final, "desativando o cache de gravação" em uma ou mais das várias camadas e / ou significados deste termo ... tem a reputação de "corrigir" certos tipos de problemas. De fato, desligar os comportamentos de armazenamento em cache de gravação do controlador RAID ou dos caches de disco do sistema operacional, ou da unidade etc. está evitando um ou mais erros no sistema ..... e a origem desse conhecimento. e cenários de falha de energia e falha são testes difíceis de construir. Portanto, no final, "desativando o cache de gravação" em uma ou mais das várias camadas e / ou significados deste termo ... tem a reputação de "corrigir" certos tipos de problemas. De fato, desligar os comportamentos de armazenamento em cache de gravação do controlador RAID ou dos caches de disco do sistema operacional, ou da unidade etc. está evitando um ou mais erros no sistema ..... e a origem desse conhecimento.
De qualquer forma, voltando ao cerne da questão: no SATA, o tratamento específico de todos os comandos de leitura / gravação de disco e os comandos de cache de descarga são bem definidos pelas especificações SATA . Além disso, os fabricantes de unidades devem ter documentação detalhada para cada modelo ou família de unidades, descrevendo sua implementação e conformidade com essas regras, como neste exemplo para unidades Seagate Barracuda . Em particular, ver detalhes das SATA funções definirO comando que controla o modo operacional da unidade e, especificamente, a opção 82h pode ser usado para desativar o cache do disco no nível da unidade, porque o padrão é certamente o cache de gravação ativado em todas as unidades que eu conheço. Se você realmente deseja desativar o cache, esse comando deve ser executado no início de cada reinicialização ou inicialização de cada unidade e geralmente está sob o controle dos drivers de disco do seu sistema operacional. Você pode incentivar o driver do SO a definir esse modo por meio de um tipo de IOCTL e / ou de Configuração do Registro, mas isso varia muito.
fonte
Foi minha experiência que um controlador de disco com armazenamento em cache com bateria desabilitará o cache na unidade. Não conheço uma maneira de desativar o cache no disco. Mesmo se você pudesse desativar o cache do disco, o desempenho sofreria significativamente.
Para uma opção de baixo custo, você pode usar um no-break barato que pode sinalizar seu sistema para um desligamento ordenado.
fonte
Eu uso um sistema RAID com um supercapacitor em vez de uma bateria para manter o cache. As baterias se desgastam, devem ser monitoradas, devem ser substituídas e representam um possível ponto de falha nesses aspectos. Um capacitor é carregado na inicialização, libera o cache quando a energia do no-break falha, dura virtualmente para sempre, não requer monitoramento etc. No entanto, a menos que você esteja executando um negócio na linha de pobreza (não é incomum atualmente), você deve ter um no-break e software que desliga o sistema de maneira limpa em caso de falha - normalmente dou de 5 a 15 minutos (dependendo da carga do no-break e, portanto, da bateria disponível) antes do desligamento, caso a energia volte a funcionar.
Durante uma tempestade, você pode (ou pode ter - os sistemas de energia estão melhorando) ver as luzes piscarem, às vezes antes de se apagarem. Este é um dispositivo chamado religador. É um disjuntor que, quando disparado, tenta fechar o interruptor aberto, caso a sobrecarga seja transitória, o que é mais. Se ele não permanecer fechado depois, digamos três tentativas, ele permanecerá aberto. O pobre rapaz tem que sair na chuva e lidar com isso. Não sinta muito por ele, enquanto faz apenas o dobro do que você e eu fazemos e o dobro de que, se for hora extra, é um trabalho perigoso.
fonte
Um dos equívocos se o cache de gravação em disco é que eles apenas perdem dados com a perda de energia. Isso nem sempre é o caso, especialmente em dispositivos sATA. Se um dispositivo sATA apresentar um erro (como um bug do FW na caixa de canto ou um bug do controlador) e ele redefinir ou redefinir externamente, não há garantia de que os dados no cache de write-back ainda estejam disponíveis após a interrupção.
Isso pode levar a cenários em que um dispositivo apresenta um erro transitório, é redefinido, a perda de dados ocorre na perda de qualquer cache sujo e isso é silencioso acima do nível do bloco de drivers.
Pior ainda, a desativação do cache da unidade por meio de ferramentas do SO também será perdida nas redefinições do dispositivo; portanto, mesmo que o dispositivo tenha seu cache desativado no início do dia, se o dispositivo for redefinido, ele reativará o cache de write-back. Em outra redefinição, o dispositivo perderá dados.
As unidades SCSI / SAS e algumas unidades sATA têm a capacidade de salvar o estado do perfil de write-back para garantir que a redefinição entre as propriedades não seja perdida - mas, na prática, isso raramente é usado.
Os controladores RAID que integram a camada de bloco nas camadas superiores podem notar redefinições de unidade e desativar o cache de write-back novamente - mas os controladores sATA e SAS padrão não fazem isso.
Essa limitação também vale para outros SET FEATURE e parâmetros semelhantes configurados para desempenho e confiabilidade.
fonte
Como você diz, um controlador RAID adequado com bateria é caro, mas você pode encontrar os controladores Dell Perc5 / i no eBay por £ 100 (US $ 150) e, especialmente com o RAID5, a velocidade de um controlador como o Perc5 / i surpreenderá você. Eu tenho vários servidores com Perc5 / is e seis matrizes RAID5 de disco, e eles estão entre os discos mais rápidos que eu já vi. Especialmente para aplicativos de banco de dados, os discos rápidos realmente melhorarão o desempenho.
Eu morderia a bala e compraria um controlador RAID.
JR
fonte
Tanto quanto eu entendo, o fsync () faking é uma propriedade dos controladores RAID suportados por bateria, não das unidades. O controlador RAID contém uma bateria que pode alimentar seu cache de gravação até que a energia seja restaurada na unidade e a gravação possa ser confirmada com segurança no disco. Isso permite que o controlador retorne imediatamente ao sistema operacional, pois garante algum nível de garantia de que a gravação será gravada no disco.
Deve-se observar que, se o cache de write-back das unidades ficar cheio, as gravações serão bloqueadas até que o cache seja gravado de volta na unidade. Isso significa que o cache geralmente não é tão eficaz em gravações sustentadas.
Quantos IOPS seu aplicativo requer? Tem certeza de que está sendo limitado pelo cache de gravação das unidades ou que um pequeno (comparado à memória do servidor) na unidade será benéfico?
fonte