SharedIT | 묻고 답하기(AMP)

가상서버에 메모리할당

안녕하세요. 가상서버를 구성하는데 있어 궁금한 사항이있는데

DB서버를 한 호스트서버에 2개의 게스트 서버로 올리려고합니다.

(이미 운영중인 DB서버 2대를 다른센터에 DR구축)

호스트서버 스펙은 cpu : intel gold 5217 8c x 2 

                         memory : 256gb x 2 입니다.

가상 디비 2대에 동일하게 cpu, 메모리를 할당하려는데

가상서버로 올리면 물리서버에 비해 아무래도 처리능력이 떨어진다고하는데

메모리는 256gb 씩 할당할 예정인데 호스트는 그럼 남는게 없는데 어느정도 남겨놔야할까요?

가상서버의 메모리에 어느정도 맞춰서 호스트서버를 남겨놔야하는지도 궁금합니다.

또한 cpu는 16c씩 할당예정인데 안정성있을까요? 최대 얼마나 할당가능하며 16코어씩이 아닌 물리코어만큼(8코어씩) 할당해야하는지 알고 싶습니다.  

Tags : 태그가 없습니다.

6개의 답변이 있습니다.

낭만생선
  0 추천 | 일 년 이상 전

데이터 용량과 어느정도 무거운 작업을 하는지도 궁금하네요.(메모리 사이즈를 보면 대용량 일것 같기도 한데 코어를 신경 안쓴것 보면 엔터프라이즈급은 아닌걸로 보이네요)

전문 DBA는 아니지만 장기간 MSSQL 운영했던 경험과 HyperV로 MSSQL을 올려본 경험을 토대로 말씀 드리면..

  • 1.가상서버의 CPU는 각각 16Core 할당, 메모리는 각각 248로 잡으시면 됩니다.(나머지는 물리서버에서 사용하는 최소한의 메모리)

  • 2.VM DB 서버에 MSSQL 설정 보시면 디폴트 설정은 무제한이라 무한대로 할당되는데 제한 설정을 해두시는게 좋습니다.(75%~85% 정도로 설정)

https://ryean.tistory.com/30


3. 제 경험상 트랜잭션이 아주아주 많은 헤비한 엔터프라이즈급의 DB가 아니라면 가상화 했을때 성능이 올라갑니다. 인덱스 설정이 엉망이고 풀스캔으로 도는 DB라면 답이 없지만.. 어느정도 관리가 되고 있는 서버라면 오히려 성능이 개선된것을 느낄수 있을겁니다.


4. 가상화 구성후에 MSSQL의 통계 정보는 다시한번 생성해주시고 가장 오래걸리던 쿼리로 운영서버와 가상화 서버에서 테스트 해보시면 좋을듯 하네요.

낭만생선 | 일 년 이상 전

성능상에 중요한것 한가지를 깜빡했는데 

DISK 구성은 신경을 좀 쓰셔야 합니다.

OS영역과 데이터 영역을 디스크단에서 분리 해줘야 합니다.(성능에 있어서 이 부분이 아주 중요합니다.)

물리 서버에서도 OS와 DIsk 영역을 물리적으로 분리해서 할당 했듯이

Raid 구성에서 부터 OS와 데이터를 분리해야 합니다.

제일 좋은것은 총 4개의 Raid 그룹을 생성해서

VM당 OS와 Data 각각의 그룹의 볼륨을 생성하는것입니다.(IO 간섭 방지용)

그리고 Raid5는 가급적 피해주세요. 

가상화라고 해서 볼륨 통으로 잡고 VHD 파일만 나누어 생성하면 당연히 성능이 나오지 않습니다.

topkslee
  0 추천 | 일 년 이상 전

가상 서버의 CPU는 각각 16c씩 할당하셔도 됩니다.

가상 서버의 CPU는 보통 산출할때 물리서버의 core의 4배정도 봅니다.

물리 서버 1core와 가상 서버 1core는 같지 않다는 것이죠.

위와 같이 설정 한 뒤에 cpu 사용 추이를 모니터링해서 상황에 맞게 증감하시면 됩니다.

현재 256GB에 80~90% 사용한다고 하셨는데요. 

DB 서버는 DB 구동시 메모리를 확보해서 사용하는 구조이기때문에

MSSQL DB 설정을 보셔야 합니다. MSSQL 설정에 많이 설정해놓았다면

약간 조정하셔도 됩니다.

가상 DB 서버에는 바로 256GB 바로 할당하시지 마시고 128GB씩 할당한 뒤에

모니터링 후 단계별로 늘려주시는게 안전합니다.

호스트 서버에 최소 32GB정보는 여유로 확보해놓는게 좋을 것 같습니다. 

빨간신발
  0 추천 | 일 년 이상 전

메모리를 256이나 사용하는 디비서버라면 그냥 물리서버로 유지하세요

시퓨도 30프로나 점유할 정도이면 처리량이 매우 높을 것으로 생각되네요.

가상화해서 원하시는 퍼포먼스가 나올지 모르겠네요

그리고 mssql은 특별히 메모리 설정을 안하고 있으면 메모리의 90프로 정도는 선점하고 있습니다. 256의 80~90프로가 실사용량이 아니고 메모리가 있으니 선점해서 os상에서는 사용중으로 나오는 것일수도 있습니다

wansoo
  0 추천 | 일 년 이상 전

하이퍼 바이저에 따라 차이도 있겠고, 호스트 컴퓨터에서 다른 어플리케이션을 실행시키는지 여부, 어떤 어플리케이션, 서비스 소프트웨어를 실행시키는지 여부 등에 따라서도 차이가 있겠고요.

그리고, 구동하는 가상 컴퓨터 대수의 많고 적음에도 영향을 받을 수 있을 걸로 보여지고요.

호스트 컴퓨터에서 다른 어플리케이션을 수행하지 않고, 가상 컴퓨터 전용으로 하이퍼 바이저만 구동하는 상황이라면 최소 1~2 기가 정도의 메모리를 남겨 두면 되지 않을까 싶어 보이네요.

Genghis Khan
  0 추천 | 일 년 이상 전

모든 서버구성을 할땐 여유율을 잡아 놔야 합니다

가상화는 물리서버와 다르게 성능이슈가 발생되니

물리서버대비 가상화 구성 시 좀 더 여유있게 할당해주세요


미생
  0 추천 | 일 년 이상 전

가상서버의 호스트가 해야 할 일을 고려하여 남기는 것이 정상적인데 호스트서버가 사용해야 할 최대 메모리를 고려하시는게 맞을 것으로 보이고.

사실 이 부분은 호스트서버가 뭘 얼마나 할것인가에 대한 사용량 측정이 필요할 거로 보입니다. 물론 저라면 16GB정도를 제외하고 나머지를 분배할 것으로 생각이 들구요.

마찬가지로 할당의 영역도 사용량 고려하셔서 하면 됩니다. 오히려 반대로 가는 방법도 있는데, 적당한 코어와 메모리를 부여하면서 점차 사용량을 확정지으셔도 됩니다. 물론 현 케이스라면 이미 사용량을 해당 가상서버 두개가 쓰려고 계산해두신거로 보이기 때문에 문제는 없을것 같네요.

근데 실제 DB의 데이터가 얼마나 될 거로 예상치가 없는데 어느정도를 예상하실까요? 가상서버 한대당 256GB 할당할 정도면 양이 꽤 되어야 할텐데요.

치동이야 | 일 년 이상 전

이미 운영준인 DB서버에서는 256gb 

운영시간기준 메모리 80~90%, cpu는 10~30% 정도 사용하고있습니다.

호스트서버는 아무행위도 하지않고 오직 가상화서버를 올리는 용도로만 사용합니다.

이떄 메모리는 16gb정도만 남겨 두면 될까요?

미생 | 일 년 이상 전

호스트서버가 메모리를 얼마나 먹는지는 가상화 솔루션을 쓰시는게 뭐냐 따라도 다를거고 gui와 console mode 등으로도 차이가 나기 때문에 해당 솔루션의 공급업체에 문의하시는게 그나마 정답에 가까우실겁니다.

제 기준 16GB는 일반적인 서버OS 설치하고 혹시모를 잡다한 무언가를 설치하고 그럼에도 불구하고 발생할 수 있는 메모리의 사용량 한계를 매우 넉넉하게 잡아둔 기준입니다.

이미 운영시간 기준으로 256GB서버의 메모리가 80-90%잡혀있다는 이야기면 더 잡아두시고 서버사양을 올리시는건 어떨까 생각이 들면서도, DB서버의 DB타입이 뭔지 모르겠으나, MSSQL같은경우는 메모리가 적정하게 남으면 사용량을 최대로 쓴다는 기억이 있어서 이거도 좀 찾아보셔야 할 것 같아요. 실제 풀타임 80-90이 운영되진 않을 확률이 있을것 같습니다.

DB의 전체 파일크기를 보시면 감이 좀 오실법도 할거구요.

치동이야 | 일 년 이상 전

Hiper -V 사용 예정이고 DB는 MSSQL 사용하고있습니다!