Pergunta

O departamento de TI onde eu trabalho está tentando passar para 100% virtualizado servidores, com todos os dados armazenados em uma SAN. Eles não fizeram isso ainda, mas o plano eventualmente chama para mover as máquinas do SQL Server física existentes para servidores virtuais também.

Há alguns meses atrás eu assisti os Heróis Happen Here evento de lançamento, e em uma das sessões do SQL Server o orador mencionou de passagem que esta não é uma boa idéia para sistemas de produção.

Então, eu estou procurando algumas coisas:

  1. Quais são as razões específicas por que isso é ou não é uma boa idéia? Eu preciso referências, ou não se incomodam responder. Eu poderia vir acima com um vago "I / O ligado" a resposta em minha própria via google.
  2. recolhimento orador
  3. O HHH sozinho provavelmente não vai convencer o nosso departamento de TI para mudar as suas mentes. Alguém pode me ponto diretamente para algo mais autoritário? E por "diretamente", eu algo média mais específico do que apenas uma vaga Books comentário OnLine. Por favor, reduzi-lo um pouco.
Foi útil?

Solução

Eu posso dizer isso por experiência pessoal, porque eu estou lidando com este problema muito como nós falamos. O lugar que eu estou trabalhando atualmente como um empreiteiro tem este tipo de ambiente para os seus sistemas de desenvolvimento do SQL Server. Eu estou tentando desenvolver um bastante modesto B.I. sistema neste ambiente e realmente lutando com os problemas de desempenho.

acidentes TLB e emulado I / O são muito lentos em uma máquina virtual ingênuo. Se o seu O / S tem suporte paravirtualização (que ainda não é uma tecnologia madura no Windows) que você usa paravirtualised I / O (essencialmente um driver de dispositivo que ganchos para uma API na VM). As versões recentes do Opteron tem suporte para tabelas de páginas aninhadas, o que elimina a necessidade de emular o MMU em software (que é realmente lento).

Assim, aplicativos que são executados em grandes conjuntos de dados e fazer lotes de I / O como (por exemplo) ETL processa viagem sobre o calcanhar de Aquiles de virtualização. Se você tiver qualquer coisa como um sistema de armazenamento de dados que pode ser difícil em memória ou disco I / O que você deve considerar outra coisa. Para uma aplicação transacional simples são provavelmente O.K.

Coloque em perspectiva os sistemas que estou usando estão funcionando em lâminas (um servidor da IBM) em uma SAN com links 4x 2gbit F / C. Esta é uma mid-range SAN. A VM tem 4GB de RAM IIRC e agora duas CPUs virtuais. No seu melhor (quando o SAN está quieto) isso ainda é apenas metade da velocidade da minha xw9300 , que tem 5 discos SCSI (sistema, tempdb, logs de dados, dados) em 1 U320 ônibus e 4GB de RAM.

Sua milhagem pode variar, mas eu recomendo ir com os postos de trabalho como o que descrito para o desenvolvimento de O pesado em detrimento de servidores virtuais em uma SAN nada I /. A menos que suas necessidades de uso de recursos são para além deste tipo de kit (caso em que eles são bem além de um servidor virtual de qualquer maneira) esta é uma solução muito melhor. O hardware que não é caro - certamente muito mais barato do que uma SAN, chassis blade e licenciamento VMWare. Developer Edition SQL Server vem com V.S. Pro e acima.

Isto também tem a vantagem de sua equipe de desenvolvimento é forçado a lidar com direito implantação da palavra ir - você tem que vir para cima com uma arquitetura que é fácil de implementar 'one-click'. Isto não é tão difícil quanto parece. Redgate SQL Compare Pro é seu amigo aqui. Seus desenvolvedores também obter um conhecimento básico de administração de banco de dados.

Uma viagem rápida para site da HP me tem um preço de lista de cerca de US $ 4.600 para um xw8600 (seu atual modelo baseado em Xeon) com um chip Xeon quad-core, 4GB de RAM e 1x146 e discos rígidos 4x73GB 15k SAS. preço de rua será, provavelmente, um pouco menos. Compare isso com o preço de uma SAN, chassis blade e licenciamento VMware eo custo de backup para que a instalação. Para backup você pode fornecer um compartilhamento de rede com o backup, onde as pessoas podem cair comprimido arquivos de backup de banco de dados, conforme necessário.

EDIT: Este white paper sobre web-site da AMD discute alguns benchmarks em uma VM. A partir dos referenciais nas costas, pesado I / O e MMU carga de trabalho realmente clobber desempenho VM. O seu índice de referência (para ser tomado com um grão de sal, uma vez que é uma estatística fornecido fornecedor) sugere uma penalidade 3,5x velocidade sobre uma referência OLTP. Enquanto isso é fornecido pelo fornecedor deve-se ter em mente:

  • Ele benchmarks virtualização ingênuo e compara-o a um virtualizaram-para solução, não desempenho bare-metal.

  • Um OLTP referência terá um mais de acesso aleatório de E / S carga de trabalho e vontade passar mais tempo esperandog durante disco procura. Um disco mais sequencial padrão de acesso (de característica consultas de data warehouse) terá um maior penalidade, e uma memória-pesado operação (SSAS, por exemplo, é um devorador de memória bíblica) que tem um grande número de erros de TLB também irá incorrer em penalidades adicionais. este significa que o slow-downs nesta tipo de processamento seria provavelmente mais pronunciada do que a OLTP pena de referência citado no documento técnico.

O que vimos aqui é que erra TLB e I / O são muito caros em uma VM. Uma boa arquitetura com motoristas paravirtualised e suporte de hardware no MMU irá atenuar alguns ou tudo isso. No entanto, acredito que o Windows Server 2003 não suporta paravirtualização em tudo, e eu não tenho certeza de qual nível de suporte é entregue em servidor Windows 2008. Foi certamente a minha experiência que a VM vai abrandar radicalmente para baixo um servidor quando se trabalha em um processo de ETL e SSAS cubo constrói em comparação com hardware bare-metal especificação relativamente modesto.

Outras dicas

SAN - é claro, e clustering, mas sobre Virtualização - você vai ter um impacto no desempenho (pode ou não valer a pena para você):

http: //blogs.technet .com / Andrew / Arquivo / 2008/05/07 / virtualizado-sql-server.aspx

http://sswug.org teve algumas notas sobre o assunto em seu boletim diário ultimamente

Eu queria adicionar esta série de artigos de Brent Ozar:

Não é exatamente autoritária , no sentido de que eu estava esperando (vindo da equipe que constrói o servidor, ou um manual oficial de algum tipo), mas Brent Ozar é muito bem respeitado e acho ele faz um grande trabalho cobrindo todas as questões aqui.

Estamos executando um sistema de folha de pagamento para mais de 900 pessoas em VMWare sem problemas. Esta tem sido na produção de 10 meses. É uma carga de tamanho médio, tanto quanto DB vai, e nós pré-afectados no espaço da unidade em VM para evitar problemas de IO. Você tem que desfragmentar tanto a anfitriã VM ea fatia VM em uma base regular, a fim de manter um desempenho aceitável.

Eis alguns testes VMWARE nele .. http://www.vmware.com/files/pdf/SQLServerWorkloads.pdf

Com certeza, eles não compará-lo com máquinas físicas. Mas, você provavelmente poderia fazer o teste similar com as ferramentas utilizadas para o seu ambiente.

No momento não executar o SQL Server 2005 em um ambiente VMware. Mas, é um banco de dados muito levemente carregado e é grande. Corre sem problemas.

Como a maioria tem a pontas, vai depender de sua carga de banco de dados.

Talvez você possa convencer o departamento de TI para fazer algo de bom testar antes cegamente de execução.

Não, eu não posso apontar para quaisquer testes específicos ou qualquer coisa assim, mas posso dizer por experiência que colocar o seu servidor de banco de dados de produção em uma máquina virtual é uma má idéia, especialmente se ele tem uma grande carga.

É bom para o desenvolvimento. Possivelmente até mesmo testar (na teoria de que, se ele funciona muito bem sob carga na caixa virtual, que vai correr bem na prodcution), mas não na produção.

É senso comum realmente. Quer que o seu hardware rodando dois sistemas operacionais e seu servidor SQL ou um sistema operacional e sql server?

Edit: Minha experiência tendenciosa a minha resposta. Eu tenho trabalhado com grandes bases de dados sob carga constante pesado. Se você tem um banco de dados menor sob carga leve, a virtualização pode funcionar bem para você.

Há algumas informações sobre isso em artigo no blog do Conor Cunningham Banco de Dados virtualização - O Ninguém Dirty Little Secret está falando ... . Para citar:

Dentro do próprio servidor, há surpreendentemente pouco conhecimento de um monte de coisas nesta área que são importantes para o desempenho. motor principal do SQL Server assume coisas como:

  1. todas as CPUs são igualmente poderosos
  2. todas as instruções de processo CPUs mais ou menos na mesma taxa.
  3. um flush no disco provavelmente deve acontecer em uma quantidade limitada de tempo.

E o post continua elaborando estas questões um pouco mais também. Eu acho que uma boa leitura, considerando a escassez de informações disponíveis considerando esta questão em geral.

Nota existem alguns produtos de virtualização especialidade lá fora, que são feitos para bancos de dados que pode valer a pena olhar em vez de um produto geral, como VMWare.

Nossa empresa (mais de 200 servidores SQL) está atualmente no processo de implantação de HP PolyServe em alguns dos nossos servidores:

HP PolyServe Software para Microsoft SQL Server permite que várias instâncias do Microsoft SQL Server para ser consolidados em substancialmente menos servidores e de armazenamento SAN centralizada. "Dados compartilhados" exclusivas da HP PolyServe arquitetura proporciona disponibilidade de classe empresarial e virtualização como flexibilidade em uma plataforma de serviço público.

A nossa principal razão para implantá-lo é fazer substituição de hardware mais fácil: adicionar a nova caixa para a "matriz", baralhar em torno de onde cada instância do SQL reside (sem problemas), em seguida, remover a caixa de idade. Transparente para as equipes de aplicativos, porque os nomes de instância SQL não mudam.

Old Pergunta com respostas velhos

As respostas neste tópico são anos de idade. A maioria dos pontos negativos em toda esta discussão são tecnicamente ainda correto, mas muito menos relevante. O custo geral de virtualização e SAN de é muito menos um fator de agora do que costumava ser. Um host de virtualização configurados corretamente, convidado, rede e SAN pode proporcionar um bom desempenho com os benefícios da virtualização e flexibilidade operacional, incluindo bons cenários de recuperação que só são fornecidos por ser virtual.

No entanto, no mundo real, ele só tem um pequeno detalhe de configuração para trazer a coisa toda de joelhos. Na prática, o seu maior desafio com servidores SQL virtuais é convincente e trabalhar com as pessoas responsáveis ??pela virtualização para obtê-lo configurado apenas para a direita.

A ironia, em 100 por cento dos casos em que tomamos a produção fora da virtualização e se mudou de volta para o desempenho do hardware dedicado atravessou o telhado sobre o hardware dedicado. Em todos esses casos, não era a virtualização, mas a forma como ele foi instalado. Voltando ao hardware dedicado que realmente provou que a virtualização teria sido uma melhor utilização tanto de recursos por fatores de 5 ou mais. O software moderno é geralmente concebido para escalar entre os nós de modo virtualização obras para a sua vantagem nessa frente também.

A maior preocupação para mim quando virtualizar software é normalmente licenciamento.

Aqui está um artigo sobre ele para MS SQL. Não tenho certeza sobre a sua situação, portanto, não pode escolher nenhum pontos mais importantes.

http://www.microsoft.com/sql/howtobuy/virtualization.mspx

SQL Server é suportado em um ambiente virtual. Na verdade, eu recomendo ver que uma das opções de licenciamento é por soquete. Isto significa que você pode colocar como muitos instâncias do SQL Server em um sistema virtualizado (por exemplo, o Windows Server 2008 Datacenter) como você gosta e pague apenas por soquete do processador da máquina tem.

É melhor do que isso porque DataCenter é licenciada por soquete com licenças de máquinas virtuais ilimitadas também.

Eu recomendo agrupamento seu Hyper-V em duas máquinas no entanto de modo que se um falhar, o outro pode pegar a folga.

Gostaria de pensar que a possibilidade de algo ruim acontecendo com os dados seria muito grande.

Como um exemplo simples morto, digamos que você executou uma caixa de SQL Server no Virtual Server 2005 R2 e desfazer discos foram ligado (assim, os principais "disco" estadias de arquivo da mesma e todas as alterações são feitas para um arquivo separado que pode ser purgado ou fundida mais tarde). Então algo acontece (geralmente, você topar com o limite de 128 GB ou qualquer que seja o tamanho é) e alguns meio do administrador noite nora tem que reiniciar e descobre que ele não pode fazê-lo até que ele remove os discos de desfazer. Você está ferrado -. Mesmo que ele mantém os arquivos do disco de desfazer para posterior análise as possibilidades de fusão dos dados em conjunto é muito pequena

Assim, ecoando as outras mensagens nesta discussão - para o desenvolvimento é grande, mas para a produção não é uma boa idéia. Seu código pode ser reconstruído e reimplantado (que é outra coisa, é para o controle de origem VM não são uma boa idéia também), mas os dados de produção ao vivo é muito mais importante.

Os problemas de segurança que podem ser introduzidos quando se lida com Vitalização também devem ser considerados. Virtualização de Segurança é um bom artigo pelo PandaLabs, que abrange alguns dos as preocupações.

Você está olhando para isso a partir do ângulo errado. Primeiro, você não vai encontrar White Papers dos vendedores por isso que você deve "não" Virtualizar ou porque você deve Virtualizar.

Cada ambiente é diferente e você precisa fazer o que funciona no seu ambiente. Com isso dito, existem alguns servidores que são perfeitos para a virtualização e há alguns que não deve ser virtualizado. Por exemplo, se o seu SQL Server / s estão fazendo milhões e milhões de transações por segundo, como se o servidor foi localizado na NYSE ou Nasdaq e milhões e milhões de dólares dependem dele, você provavelmente não deve virtualizar-lo. Certifique-se de entender as ramificações de virtualizar um servidor SQL.

Eu vi onde as pessoas Virtualizar SQL mais e mais só porque virtualização é legal. Em seguida, reclamar mais tarde, quando o servidor VM não funcionar como esperado.

O que você precisa fazer é definir um ponto de referência, totalmente testar a solução que deseja implantar e mostrar o que ele pode e não pode fazer para que você não correr em quaisquer surpresas. A virtualização é grande, é bom para o envronment e salva através da consolidação, mas você precisa mostrar por seus supervisores porque você não deve virtualizar seus servidores SQL e só você pode fazer isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top