문제

제가 일하는 IT 부서에서는 모든 데이터가 SAN에 저장되어 있는 100% 가상화된 서버로 전환하려고 노력하고 있습니다.아직 완료하지는 않았지만 결국 계획에 따르면 기존 물리적 SQL Server 시스템도 가상 서버로 이동해야 합니다.

몇 달 전 나는 Heroes Happen Here 출시 이벤트에 참석했는데, SQL Server 세션 중 하나에서 발표자는 이것이 프로덕션 시스템에 좋은 아이디어가 아니라고 언급했습니다.

그래서 저는 몇 가지를 찾고 있습니다.

  1. 이것이 좋은 생각이거나 그렇지 않은 구체적인 이유는 무엇입니까?참조가 필요하거나 응답하지 않아도 됩니다.Google을 통해 스스로 모호한 "I/O 바운드" 응답을 생각해 낼 수 있습니다.
  2. HHH 발표자 기억만으로는 IT 부서가 마음을 바꾸도록 설득할 수 없을 것입니다.누구든지 나에게 더 권위 있는 내용을 직접 알려줄 수 있습니까?그리고 "직접"이란 모호한 Books OnLine 의견보다 더 구체적인 것을 의미합니다.조금 좁혀주세요.
도움이 되었습니까?

해결책

나는 우리가 말하는 바로 이 문제를 다루고 있기 때문에 개인적인 경험을 통해 이것을 말할 수 있습니다.제가 현재 계약자로 일하고 있는 곳은 SQL Server 개발 시스템을 위한 이러한 유형의 환경을 갖추고 있습니다.나는 꽤 평범한 B.I를 개발하려고 노력하고 있습니다.이 환경에서는 시스템이 성능 문제로 어려움을 겪고 있습니다.

TLB 누락 및 에뮬레이트된 I/O는 기본 가상 머신에서 매우 느립니다.O/S에 반가상화 지원(Windows에서는 아직 성숙한 기술이 아님)이 있는 경우 반가상화 I/O(기본적으로 VM의 API에 연결되는 장치 드라이버)를 사용합니다.최신 버전의 Opteron은 중첩된 페이지 테이블을 지원하므로 소프트웨어에서 MMU를 에뮬레이트할 필요가 없습니다(정말 느림).

따라서 대규모 데이터 세트를 실행하고 ETL 프로세스와 같은 많은 I/O를 수행하는 애플리케이션은 가상화의 발목을 잡습니다.메모리나 디스크 I/O가 부족한 데이터 웨어하우스 시스템이 있는 경우 다른 것을 고려해야 합니다.간단한 트랜잭션 애플리케이션의 경우 아마도 O.K일 것입니다.

제가 사용하고 있는 시스템은 4x 2gbit F/C 링크가 있는 SAN의 블레이드(IBM 서버)에서 실행되고 있습니다.이것은 미드레인지 SAN입니다.VM에는 4GB의 RAM IIRC와 이제 2개의 가상 CPU가 있습니다.최고 상태일 때(SAN이 조용할 때) 이것은 여전히 ​​내 속도의 절반에 불과합니다. XW9300, U320 버스 1개에 SCSI 디스크 5개(시스템, tempdb, 로그, 데이터, 데이터)와 4GB RAM이 있습니다.

귀하의 마일리지는 다를 수 있지만 SAN의 가상 서버보다 I/O가 많은 개발에 대해 설명한 것과 같은 워크스테이션 시스템을 사용하는 것이 좋습니다.리소스 사용 요구 사항이 이러한 종류의 키트를 벗어나지 않는 한(어쨌든 가상 서버를 훨씬 넘어서는 경우) 이것이 훨씬 더 나은 솔루션입니다.하드웨어는 그렇게 비싸지 않습니다. 확실히 SAN, 블레이드 섀시, VMWare 라이센스보다 훨씬 저렴합니다.SQL Server 개발자 에디션은 V.S.와 함께 제공됩니다.프로 이상.

이는 또한 개발 팀이 처음부터 배포를 처리해야 한다는 이점도 있습니다. '원클릭' 배포가 쉬운 아키텍처를 마련해야 합니다.이것은 들리는 것만큼 어렵지 않습니다. Redgate SQL 비교 프로 당신 친구가 여기 있어요.또한 개발자는 데이터베이스 관리에 대한 기본 실무 지식을 얻습니다.

빠른 여행 HP 웹사이트 쿼드 코어 제온 칩, 4GB RAM, 1x146 및 4x73GB 15k SAS 하드 디스크를 갖춘 XW8600(현재 제온 기반 모델)의 정가는 약 4,600달러였습니다.시중 가격은 아마도 다소 낮을 것입니다.이를 SAN, 블레이드 섀시, VMware 라이센스 가격 및 해당 설정에 대한 백업 비용과 비교해 보십시오.백업의 경우 사람들이 필요에 따라 압축된 DB 백업 파일을 삭제할 수 있는 백업과 함께 네트워크 공유를 제공할 수 있습니다.

편집하다: AMD 웹사이트의 이 백서 VM에 대한 몇 가지 벤치마크에 대해 설명합니다.뒷면의 벤치마크에서 과도한 I/O 및 MMU 워크로드는 실제로 VM 성능을 저하시킵니다.그들의 벤치마크(벤더가 제공한 통계이므로 가볍게 받아들여야 함)는 OLTP 벤치마크에서 3.5배의 속도 저하를 제안합니다.이는 공급업체에서 제공하는 것이지만 다음 사항에 유의해야 합니다.

  • 그것은 순진한 가상화를 벤치마킹하고이를 베어 메탈 성능이 아닌 para-virtualized 솔루션과 비교합니다.

  • OLTP 벤치 마크는 더 랜덤 액세스 I/O 워크로드를 가지며 디스크 추구를 기다리는 데 더 많은 시간을 소비합니다.보다 순차적 인 디스크 액세스 패턴 (데이터웨어 하우스 쿼리의 특성)은 더 높은 페널티를 가지며 메모리가 많은 작업 (예 : SSA는 성서 메모리 호그)이 많은 TLB Misses가 추가 된 추가 처벌을받습니다. .이는 이러한 유형의 처리에 대한 속도가 낮음이 백서에서 인용 된 OLTP 벤치 마크 페널티보다 더 두드러 질 것임을 의미합니다.

여기서 본 것은 TLB 미스 및 I/O가 VM에서 매우 비싸다는 것입니다.MMU의 반가상화 드라이버와 하드웨어 지원을 갖춘 우수한 아키텍처는 이 문제의 일부 또는 전부를 완화할 것입니다.그러나 저는 Windows Server 2003이 반가상화를 전혀 지원하지 않는다고 생각하며 Windows 2008 Server에서 어떤 수준의 지원이 제공되는지 잘 모르겠습니다.ETL 프로세스 및 SSAS 큐브 빌드 작업을 수행할 때 상대적으로 적당한 사양의 베어메탈 하드웨어에 비해 VM이 서버 속도를 급격하게 저하시키는 것은 확실히 내 경험이었습니다.

다른 팁

SAN- 물론, 클러스터링이지만 가상화와 관련하여 성능을 얻을 수 있습니다 (가치가 있거나 가치가 없을 수도 있습니다).

http://blogs.technet.com/andrew/archive/2008/05/07/virtualized-sql-server.aspx

http://sswug.org 최근에 매일 뉴스 레터에 그것에 대한 메모를 받았습니다.

Brent Ozar 의이 기사를 추가하고 싶었습니다.

정확히 아닙니다 권위 있는 나는 (서버를 구축하는 팀이나 어떤 종류의 공식 매뉴얼을 구축하는 팀에서 온)를 바랐지만 Brent Ozar는 매우 존경 받고 있으며 여기서 모든 문제를 다루는 훌륭한 일을하고 있다고 생각합니다.

우리는 VMware에서 900 명 이상의 사람들이 문제없이 급여 시스템을 운영하고 있습니다. 이것은 10 개월 동안 생산되었습니다. DB가 진행되는 한 중간 크기의 하중이며, IO 문제를 방지하기 위해 VM에서 드라이브 공간을 사전에 할당했습니다. 허용 가능한 성능을 유지하기 위해 VM 호스트와 VM 슬라이스를 정기적으로 디포해야합니다.

여기에 대한 VMware 테스트가 있습니다 ..http://www.vmware.com/files/pdf/sqlserverworkloads.pdf

물론, 그들은 그것을 물리적 기계와 비교하지 않습니다. 그러나 환경에 사용 된 도구로 유사한 테스트를 수행 할 수 있습니다.

우리는 현재 VMware 환경에서 SQL Server 2005를 운영하고 있습니다. 그러나 매우 가볍게로드 된 데이터베이스이며 훌륭합니다. 문제없이 실행됩니다.

대부분 지적했듯이 데이터베이스로드에 따라 다릅니다.

어쩌면 IT 부서가 맹목적으로 구현하기 전에 좋은 테스트를하도록 설득 할 수 있습니다.

아니요, 특정 테스트 나 그와 비슷한 것을 지적 할 수는 없지만, 가상 컴퓨터에 프로덕션 데이터베이스 서버를 배치하는 것은 특히 큰 부하가있는 경우 나쁜 아이디어라고 경험할 수 있습니다.

개발에 좋습니다. 아마도 테스트 (가상 상자의 하중에서 정상적으로 실행되는 이론에서는 프로덕션에서는 잘 실행될 것이라는 이론).

상식입니다. 하드웨어가 두 운영 체제와 SQL 서버 또는 하나의 운영 체제 및 SQL 서버를 실행하기를 원하십니까?

편집 : 내 경험은 내 응답을 편향시켰다. 나는 일정한 부하로 큰 데이터베이스와 함께 일했습니다. 가벼운 부하에 더 작은 데이터베이스가있는 경우 가상화가 잘 작동 할 수 있습니다.

이에 관한 정보가 있습니다 Conor Cunningham 's 블로그 기사 데이터베이스 가상화 - 더러운 작은 비밀은 아무도 이야기하지 않습니다 .... 인용 :

서버 자체 내에는 성능에 중요한이 분야의 많은 것들에 대한 지식이 거의 없습니다. SQL Server의 핵심 엔진은 다음과 같은 것을 가정합니다.

  1. 모든 CPU는 똑같이 강력합니다
  2. 모든 CPUS 프로세스 지침은 거의 동일한 속도입니다.
  3. 플러시로 디스크는 아마도 경계 시간 내에 발생해야합니다.

그리고 게시물은 이러한 문제를 다소 자세히 설명합니다. 일반적 으로이 문제를 고려할 수있는 가용 정보의 부족을 고려할 때 잘 읽었다고 생각합니다.

VMware와 같은 일반 제품 대신 조사 할 가치가있는 데이터베이스 용으로 제작 된 특수 가상화 제품이 있습니다.

회사 (200 개 이상의 SQL 서버)가 현재 배포 중입니다. HP polyserve 일부 서버에서 :

Microsoft SQL Server 용 HP Polyserve 소프트웨어를 사용하면 여러 Microsoft SQL Server 인스턴스가 실질적으로 적은 수의 서버 및 중앙 집중식 SAN 스토리지에 통합 될 수 있습니다. HP Polyserve의 고유 한 "공유 데이터"아키텍처는 유틸리티 플랫폼에서 엔터프라이즈 클래스 가용성 및 가상화 유연성을 제공합니다.

배포의 주된 이유는 하드웨어 교체를보다 쉽게하기위한 것입니다. 새 상자를 "매트릭스"에 추가하고 각 SQL 인스턴스가있는 위치를 셔플 한 다음 이전 상자를 제거하십시오. SQL 인스턴스 이름이 변경되지 않기 때문에 응용 프로그램 팀에 투명합니다.

오래된 답변이있는 오래된 질문

이 스레드의 답변은 오래되었습니다. 이 전체 스레드의 대부분의 부정적인 점은 기술적으로 정확하지만 훨씬 덜 관련이 있습니다. 가상화와 San 's의 오버 헤드 비용은 예전보다 훨씬 적은 요인입니다. 올바르게 구성된 가상화 호스트, 게스트, 네트워크 및 SAN은 가상으로 만 제공되는 좋은 복구 시나리오를 포함하여 가상화 및 운영 유연성의 이점으로 우수한 성능을 제공 할 수 있습니다.

그러나 실제 세계에서는 모든 것을 무릎에 가져 오기 위해 하나의 작은 구성 세부 사항 만 필요합니다. 실제로 가상 SQL 서버를 사용한 가장 큰 과제는 가상화를 담당하는 사람들과 함께 설득하고 협력하여 올바르게 설정할 수 있습니다.

아이러니는 가상화에서 생산을 중단하여 전용 하드웨어 성능으로 되돌려 놓은 전용 하드웨어의 지붕을 통과 한 경우의 100 %에서 Irony는 전용 하드웨어 성능으로 이동했습니다. 이 모든 경우에는 가상화가 아니라 설정 방식이었습니다. 전용 하드웨어로 돌아 가면 실제로 가상화가 5 개 이상의 요소에 따라 리소스를 훨씬 더 잘 활용했을 것임을 증명했습니다. 최신 소프트웨어는 일반적으로 노드에서 스케일을 확장하도록 설계되므로 가상화는 그 전면에서도 유리하게 작동합니다.

가상화 소프트웨어가 일반적으로 라이센스 일 때 가장 큰 관심사는 나에게 가장 큰 관심사입니다.

다음은 MS SQL에 대한 기사입니다. 당신의 상황이 확실하지 않으므로 두드러진 포인트를 선택할 수 없습니다.

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

SQL Server는 가상 환경에서 지원됩니다. 실제로 라이센스 옵션 중 하나가 소켓 당이라는 것을 보는 것이 좋습니다. 즉, 많은 SQL Server 인스턴스를 가상화 된 (예 : Windows 2008 Server Datacenter) 시스템에 원하는만큼 컴퓨터 소켓 만 지불 할 수 있습니다.

Datacenter가 무제한 가상 머신 라이센스가있는 소켓 당 라이센스가 부여되기 때문에 그보다 낫습니다.

그러나 두 기계에서 Hyper-V를 클러스터링하는 것이 좋습니다.

나는 데이터에 나쁜 일이 발생할 가능성이 너무 클 것이라고 생각합니다.

Dead Simple 예제로서 Virtual Server 2005 R2에서 SQL Server 상자를 실행했고 디스크를 켜지 다됐다고 가정 해 봅시다 (따라서 기본 "디스크"파일은 동일하게 유지되며 모든 변경 사항은 분리 할 수있는 별도의 파일로 이루어집니다. 또는 나중에 병합). 그런 다음 어떤 일이 발생합니다 (보통 128GB 제한 또는 크기가 무엇이든) 밤 중간 중간의 Clueless Admin은 재부팅을해야하며 디스크를 제거 할 때까지 그렇게 할 수 없습니다. 나중에 분석을 위해 실행 취소 디스크 파일을 보관하더라도 데이터를 병합 할 수있는 가능성은 매우 얇습니다.

따라서이 스레드의 다른 게시물을 반향합니다. 개발을 위해서는 훌륭하지만 제작에는 좋은 생각이 아닙니다. 코드를 재건하고 재배치 할 수 있습니다 (또 다른 것은 소스 제어 용 VM도 좋은 아이디어가 아닙니다) 그러나 라이브 생산 데이터가 더 중요합니다.

활성화를 처리 할 때 도입 할 수있는 보안 문제도 고려해야합니다. 가상화 보안 Pandalabs의 일부 문제를 다루는 좋은 기사입니다.

당신은 이것을 잘못된 각도에서보고 있습니다. 먼저, 당신은 공급 업체로부터 백서를 찾지 못하면 왜 당신이 "가상화가 아니라고"가상화되어야하는지 또는 왜 가상화 해야하는지.

모든 환경은 다르며 환경에서 작동하는 일을해야합니다. 그 말로, 가상화에 완벽한 일부 서버가 있으며 가상화되어서는 안되는 일부 서버가 있습니다. 예를 들어, SQL Server/S가 초당 수백만 및 수백만 건의 거래를 수행하는 경우 서버가 NYSE 또는 NASDAQ에 있고 수백만 달러와 수백만 달러가 의존하는 경우와 같이 가상화해서는 안됩니다. SQL 서버 가상화의 파급 효과를 이해해야합니다.

가상화가 시원하기 때문에 사람들이 SQL을 계속해서 가상화하는 것을 보았습니다. 그런 다음 나중에 VM 서버가 예상대로 수행하지 않을 때 불만을 제기합니다.

당신이해야 할 일은 벤치 마크를 설정하고 배포하려는 솔루션을 완전히 테스트하고 할 수있는 것과 할 수없는 것을 보여 주므로 놀라움에 빠지지 않습니다. 가상화는 훌륭하고, 장판에 좋고 통합을 통해 저장하지만, 상사자가 왜 SQL 서버를 가상화해서는 안되고이를 수행 할 수 없는지 보여 주어야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top