가상 머신 내에서 데이터베이스를 실행하면 어떤 단점이 있습니까? 어떻게 극복 할 수 있습니까? [닫은]


66

가상 머신 내에서 실행하면 어느 정도의 성능 저하가 발생하지만 데이터베이스 시스템의 성능에 실제로 어느 정도 영향을 미칩니 까?

이 학술 참고 논문 은 몇 가지 흥미로운 벤치 마크로 발견 되었지만 Xen 및 PostgreSQL 만 사용하는 제한된 테스트였습니다. 결론은 VM을 사용하는 것이 "성능이 높지 않다"는 것입니다 (실제 데이터는 그렇지 않다고 생각할 수 있습니다).

가상 머신 내에서 데이터베이스를 실행하는 것과 관련된 기술, 관리 및 기타 단점은 무엇입니까?

객관적인 사실에 의해 뒷받침 될 수있는 답변을 게시하십시오. 나는 투기 나 다른 반 종교적 주장에 관심이 없습니다 (괴짜 열정은 여러면에서 좋지만 여기서 도움이되지는 않습니다).

그 말은

  • 가상 머신에서 데이터베이스를 실행할 때 어떤 문제가 나타 납니까? (참조를 게시하십시오)
  • 그 문제가 중요합니까?
    • 특정 시나리오에서만 중요합니까?
  • 해결 방법은 무엇입니까?

+1 나는 SQL Server 및 Windows 2008 R2 시나리오에 대한 의견을 듣고 주로 관심
goodguys_activate

4
@Shane Madden-클로저를 설명해 주시겠습니까? 동기 부여는 질문 자체가 아닌 하나의 비특이적 답변 (댓글에서 탈선)에 의해 주도 될 것으로 기대 합니다. 이 질문과 관련하여, 폐쇄 전 약 1 일 이내에 44 개의 투표와 12 개의 즐겨 찾기가 유용한 답변 / 정보 (특히 ServerFault 질문 트래픽에서 일반적으로 보이는 것)와 관련하여 좋은 질문임을 암시합니다. 이것이 다양한 SE 사이트가 목표로하는 것입니다. 느슨한 "얼마나 나쁜가"보다 더 구체적인 질문 문구를 선호하겠습니까?
Russ

1
@ErikA, Shane, Womble, mikeyb, Ben-이 질문을보다 건설적으로 만들 수있는 커뮤니티 편집을했습니다. 이것을 다시 열거 나 새롭거나 깨끗한 질문에 비슷한 질문을 게시하십시오.
goodguys_activate

답변:


41

많은 DB 벤더가이 작업을 수행하는 데 속도가 매우 느 렸지만 거의 모든 벤더는 이제 공식적으로 가상화 된 환경에서 실행되는 소프트웨어를 지원합니다.

ESXi를 기반으로 Linux에서 많은 Oracle 11g 인스턴스를 실행하며 성능이 매우 우수합니다. 모든 하드웨어 확장과 마찬가지로 가상화 호스트 에 많은 리소스 (RAM, CPU)가 있고 디스크 계층이 필요한 IO 성능을 제공 할 수 있는지 확인해야합니다.


7
+1 언급 한 바와 같이, 리소스는 작업에 달려있다. 디스크는 우리에게 큰 병목이었으며 신중한 계획이 필요합니다.
Dave M

2
+1 데이터베이스 사용에 대해 미리 숙제를해야합니다 . 물리적 상자의 사용률이 40 % 이상으로 떨어지면 가상 머신의 장점이 사라지기 시작합니다. 그것은 우리가 아무런 문제없이 VM에서 실행되는 수많은 작은 응용 프로그램 관련 격리 된 SQL을 가지고 있다고 말합니다. 그러나 우리의 대형 중장비 기계에는 이점이 없기 때문에 전용 하드웨어가 있습니다.
Nate

5
확실히 디스크 IO는 가장 큰 범인이며 가상화 된 환경은 색다른 경향이 있습니다.
lynxman

1
@lynxman-합의. 모든 Oracle 인스턴스를 15k SAS 인 Tier 1 SAN 디스크에서 실행합니다. 내가 알 수 있듯이, 우리는 거의 기본 성능에 매우 가까워졌습니다.
EEAA

10
"시험 온스는 1 파운드의 가치가있다."
크리스 비 베렌스

21

ErikA가 말했듯이, 이것은 점점 더 일반화되고 있습니다. 나는 SQL Server 캠프에 있고 개인적으로 VM에서 실행중인 프로덕션 시스템을 가지고 있지 않지만 주저하지는 않을 것입니다. 그러나 적어도 SQL Server의 경우에는 그 길을 가기 전에 고려해야 할 사항이 있습니다. 디스크 IO (다른 사람들이 언급했듯이)와 메모리 할당은 두 가지 예일뿐입니다. 하이퍼 바이저마다 상황이 다를 수 있습니다.

브렌트 오자르 (Brent Ozar)는 SQL Server 가상화, 특히 VMWare의 전문가로 인정 받고 있습니다. 그의 자료를 읽는 것이 좋습니다.

http://www.brentozar.com/community/virtualization-best-practices/


11

하고 있습니다 해야한다 . 코르벳 함은 150mph를 갈 수 있지만 공도에서 가야합니까? 불필요하게 자신을 해칠 수 있습니다.

데이터베이스는 게스트 운영 체제입니다. 설계를 시작할 때 리소스 블록을 잡고 성능상의 이유로 직접 관리합니다. 데이터베이스 서버의 핵심 운영 체제를 가상화 된 호스팅 환경의 게스트로 만들면 디스크와 RAM의 블록 할당 요소와 데이터베이스 서버 사이에 하이퍼 바이저가있는 중재 계층을 배치하게됩니다. 속도가 느려집니다. 비효율적 인 쿼리 일수록 속도가 느려집니다. 이러한 비 효율성은 오늘날 전용 하드웨어에서 숨겨 질 수 있지만 종속 리소스에 중재를 도입하자마자 실제로 빨리 알게 될 것입니다.

가상화를 요구하는 많은 빈 카운터가 인식하지 못하는 것은 게스트 운영 체제 인 데이터베이스 서버가 자체 통합 계층을 제공한다는 것입니다. 이러한 자연스러운 서비스 통합이 가능하도록 IP 주소 이동, 추가 호스트 이름 설정 등 여러 물리적 데이터베이스에서 하나의 물리적 서버에 여러 논리 데이터베이스 인스턴스를 통합 할 수없는 이유는 없습니다. 또한이 모델을 통해 경영진이 물리적 호스트 수를 줄 이도록 추진하는 비용 절감 효과를 유지할 수있을뿐만 아니라 임의의 하이퍼 바이저에 영향을주지 않으면 서 물리적 리소스에 대한 액세스를 차단함으로써 때로는 유리한 결정을 내릴 수 있습니다. 다른 사람.

Java와 같은 다른 게스트 운영 체제에서도 마찬가지입니다. 가상화 솔루션은 일반적으로 사용량이 많은 환경이므로 하이퍼 바이저는 리소스에서 "토큰을 얻는 사람"에 대해 많은 결정을 내려야합니다. 당신이 그 층을 제거 할 수있을 때마다 더 나아질 것입니다.

먼저 자연 게스트 운영 체제 계층을 사용하여 여러 인스턴스를 병합하십시오. 확률은 플랫폼 통합 및 성능 목표를보다 쉽게 ​​달성 할 수 있다는 것입니다.


4
"게스트 운영 체제"에 대한 흥미로운 정의. 순수하고 완벽한 성능과 관련하여 요점을 파악하는 동안 데이터베이스가 실제로 CPU에서 병목 현상을 얼마나 자주 발생합니까? I / O는 훨씬 가능성이 높으며 고성능 응용 프로그램의 경우 이미 SAN에서 I / O 시간을 공유하고 있습니다. 하나의 응용 프로그램에 대한 보안 문제가 모든 통합 데이터베이스의 암호 해시를 손상 시키거나 JVM 내에서 실행되는 하나의 프로세스가 사용 가능한 힙 공간의 모든 바이트를 소비하는 경우 가상화 철학을 재고하십시오.
Shane Madden

5
분명히, 나는 잘 조정되고, 매우 바쁘고, 고성능 데이터베이스 서버에는 자체 물리적 하드웨어가 있어야한다는 것에 완전히 동의합니다. 그러나 이는 표준이 아니며 가상화의 다른 이점은 성능 저하를 능가하는 경향이 있으며, 이는 대부분의 워크로드와 구분할 수 없습니다.
Shane Madden

3
항상 기존 통합 계층으로 이동하는 것에 대한 귀하의 의견에 동의하지 않습니다. 때로는 말이됩니다. 그러나 예를 들어 단일 OS에서 여러 데이터베이스를 통합하고 하이퍼 바이저 위에서 여러 데이터베이스 / OS 조합을 통합하는 사이의 리소스 균형 재조정에 따른 비용 균형을 살펴보십시오. 첫 번째가 더 효율적입니다. 두 번째는 재조정하기가 훨씬 쉽습니다. 데이터베이스를 새 OS로 마이그레이션하는 것보다 새로운 호스트로 OS / 데이터베이스를 마이그레이션하는 것이 훨씬 덜 파괴적입니다.
Jake Oshins

필자의 의견은 지난 10 년 동안 성능 엔지니어로서 가상화 솔루션으로 성공적으로 마이그레이션 및 실패한 마이그레이션을 현장에서 직접 관찰 한 결과입니다. 하드웨어 마스크를 무차별 적으로 사용하여 성능 문제를 해결하는 수많은 나쁜 데이터베이스 앱이 있습니다. 가상화를 추가하면 이러한 문제가 해결됩니다. 타이밍 또는 감사 목적으로 정확한 클록을 요구하는 앱이 있다면 소프트웨어 가상화에서 클록 플로트를 사용하면 추적에서 벗어날 수 있습니다.
제임스 풀리

1
와우, 제임스 만 와우 나는 당신이 당신의 대답과 그 이후의 주석에서 작성한 모든 점들을 버릴 시간이나 인내심이 없지만, 나는이 대답에서 일어날 수있는 누군가를 위해 여기에 의견을 남겨야한다고 느꼈습니다. 제임스의 견해는 그 자신의 견해이며 실제로 가능한 것을 반영하지 않습니다. 초과 구독하면 당연히 성능이 떨어집니다. 초과 구독하지 마십시오. 고성능 가상화 환경을 구축 할 수 있습니다. "성능이 좋지 않기 때문에"담요 추천을하는 것은 어리석은 일입니다.
EEAA

6

여기서 깨달을 두 가지가 있습니다 :

  • 하드웨어 단위당 DB 단위 성능은 가상화 된 DB의 경우 약간 낮습니다. 즉, 동일한 수준의 성능을 얻으려면 하드웨어를 조금 더 구입해야합니다.
  • 그렇다고 동일한 수준이나 원하는 수준의 성능을 얻을 수 없다는 의미는 아닙니다. 종종 향상된 관리 및 (쉽게 HA와 같은) 다른 혜택에서 당신이 얻을 이득 방법 소폭 증가 하드웨어 비용을 상쇄보다.

즉, 우리의 SQL Server 설치 작업은 곧 가상화 할 의도가없는 두 대의 서버 중 하나입니다 (다른 하나는 기본 DC).


4

응용 프로그램을 실행하기 위해 VM에 충분한 리소스를 제공 할 수 있다면 SQL Server를 실행하는 것이 좋습니다. 실제 세계에 24 개의 코어와 256Gi의 RAM이 필요한 경우 가상 세계에 24 개의 vCPU와 256Gi의 RAM을 제공해야합니다.

필자 는 지난달 SQL Server 매거진에서 VMware의 vSphere에서 SQL Server를 실행 하는 방법에 대한 기사썼습니다 .


2

dom0의 가용성이 높은 가상 환경 (Xen)에서 두 개의 데이터베이스 (하나는 PostgreSQL과 다른 MySQL)를 실행합니다. domU 파일 시스템은 모두 iSCSI SAN LUN에 있으며 LVM2 논리 볼륨과 함께 제공됩니다. MySQL 데이터베이스는 Cacti 전용이므로 사용량이 많지 않으며 iSCSI LUN에도 있습니다.

PostgreSQL 데이터베이스는 스테이징 환경을위한 데이터베이스이므로 MySQL db보다 활용도가 높습니다. 이러한 이유로 데이터베이스는 로컬 RAID10 세트에 있으며 DRBD는 두 번째 클러스터 노드에 복제됩니다. 그러나 실제로드 측면에서이 준비 데이터베이스는로드가 전혀 크지 않습니다. 내 의견으로는 가상화하기에 좋은 / 훌륭한 후보입니다.

조직의 이점 중 일부는 전력 소비 감소, 랙 공간 절약 및 하드웨어 관리 오버 헤드 감소입니다.

반면에 우리의 주요 프로덕션 데이터베이스는 가상으로가는 것을 상상할 수 없습니다 ....


2

수많은 서버에서 MSSQL 및 MySQL 서버로 작업합니다. 몇 년 전 VM에서 SQL Server를 실행하는 데 따른 성능 문제에 대해 들었 기 때문에 VM에서 SQL Server를 설치하기를 주저했습니다. 그러나 첫 커플 SQL 서버를 설치 한 후에도 성능에 아무런 변화가 없었습니다. 내가 작업하는 점점 더 많은 서버가 VM에 있으며 내가 작업하는 거의 모든 대기업 클라이언트가 SQL 서버를 가상화했습니다.

예, VM은 약간의 오버 헤드 비용을 추가하며 단일 상자에 여러 개의 VM을 호스팅하려면 강력한 서버가 필요합니다. 찾아야 할 일반적인 리소스 문제는 추가 VM을 추가하고 사용 가능한 리소스를 축소하는 것입니다. 약간의 성장을 계획하는 것이 일반적이지만 일반적으로 서버를 2 개 또는 3 개의 VM을 호스팅하기 위해 구입했으며 이제는 10 개의 VM을 실행하면 성능이 저하 될 수 있습니다.

VM에서 SQL Server를 실행하는 성능 문제를 본 적이 없다고 말하면 거짓말을 할 것입니다. 그러나 성능이 저하되면 환경에 문제가 있음을 알게되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.