IT技術互動交流平臺

SQLServer虛擬化(1)虛擬化簡介

來源:IT165收集  發布日期:2016-12-26 20:23:14

本文屬于SQL Server虛擬化系列

前言:

現代系統中,虛擬化越來越普遍,如果缺乏對虛擬化工作原理的理解,那么DBA在解決性能問題比如降低資源爭用、提高備份還原速度等操作時就會出現盲點。所以基于本人工作環境的情況和大時代的趨勢,同時根據個人經驗,絕大部分的IT人員都對虛擬化持有懷疑或者保留意見的態度。所以這里開始一個系列文章,介紹SQL Server虛擬化的內容,內容來自 Stairway to Server Virtualizaion ,如后續有更新或者本人有其他內容,也會添加進去。 目前本系列包含以下小節,第一節即本文:SQL Server 虛擬化(1)虛擬化簡介
SQL Server 虛擬化(2)理想的SQL Server虛擬機架構SQL Server 虛擬化(3)在Vmware上搭建SQL ServerSQL Server 虛擬化(4)在HyperV上搭建SQL Server

下面開始第一節,虛擬化簡介 http://www.sqlservercentral.com/articles/Stairway+Series/112555/

簡介:

虛擬化在很長的一段事件里面,是企業數據中心化過程中最具破壞性又非常有益的技術之一。通過虛擬化技術,企業鞏固了它們的服務器基礎架構,并在過去的十多年中,為數據中心節省了大量的資金,虛擬化已經無處不在。 如果此時此刻還沒有虛擬化你的SQL Server,那么對于你的企業來說,這只是時間上的問題。不行的是,從經驗來看,很多企業的管理規范中,虛擬層只對基礎設施管理員可見,而DBA幾乎被完全隔離,對虛擬化平臺一無所知。所以,DBA往往會猶豫是否適合把關鍵服務器放在這個新平臺上面。 即使服務器進行了虛擬化,通常來說,DBA也沒有被包含在虛擬化過程中,所以也導致了DBA對這個新加入的層了解甚少。就像一個“黑盒”,充滿了未知和風險。 如果缺乏對虛擬化工作原理的了解,DBA在嘗試解決很多問題,如性能問題(比如降低資源爭用、提升備份還原性能)時,就會出現盲點。他們通常不會意識到,可以通過調整虛擬化層中內置的一些特性和功能,就可以解決一些如不穩定的備份策略或者長時間運行的任務這類問題。 本節首先介紹虛擬化是什么,為什么需要理解它的概念,為什么作為DBA需要參與在其中,和如何在虛擬基礎設施中運行你的關鍵SQL Server任務。在后續的文章中,會覆蓋關鍵的虛擬化特定的提示和技巧從而最大化虛擬化平臺的SQL Server效率和靈活性。

從物理化到虛擬化:

為了對比虛擬化,首先需要先了解其對應的一方物理化,下面是傳統的服務器基礎設施示意圖:

 

在傳統服務器基礎設施中,每個SQL Server都需要進行下面操作:

 

采購和部署一臺物理服務器。配置本地或類似SAN存儲等。安裝和配置操作系統。安裝和配置SQL Server。部署數據庫,然后配置應用程序訪問。 此時,服務器的物理資源是固定且有限的。而且需要分配比預期資源消耗對象所產生的預期負載還要多的CPU、I/O、內存資源。因此,對于服務器運行過程中的大部分時間而言,資源往往沒有被充分利用(上圖中百分比) 。 因此,虛擬化應運而生,從功能上來說,虛擬化是一個建立在硬件智商的,允許在同一個物理服務器上運行多個獨立操作系統的新的層。雖然他們實際上還是共享物理服務器上的可用物理資源,但是他們都是完全獨立,互不感知地在同一臺物理服務器上運行。

多個獨立的操作系統(也就是虛擬機)可以獨立地、同時地運行在同一個物理服務器上,并且每個操作系統不再依賴于特定的物理機器。虛擬層使用隊列,讓每個虛擬機及其內部應用可以申請相同的計算資源,如CPU或內存。通過合適的隊列申請,使得資源請求可以合理地被物理機響應。 最后,虛擬化可以把一臺或多臺物理服務器組成一個總的計算資源池,同樣可以使用隊列,讓虛擬機和上面的應用訪問這個資源池。配置完成后,管理員可以通過創建虛擬服務器切分和分配資源,每個虛擬服務器分配獨有的資源。

 

 

 

 

虛擬化技術:

系統管理員都傾向于使用相同的基礎設施專用術語來引用棧的不同部分。如下圖:

 

Hypervisor:安裝和配置在每臺物理機器上的虛擬化層。用于處理虛擬機資源請求隊列和實現物理機上的資源交付。Host:指在集群或者由一群主機按照相同規則組成的一組機器組內的一臺物理機器。Independent Management System:用于控制host群組中的操作和規則,監控所有基礎設施中的組件中斷、環境自動化協同情況,并且為管理員提供一個集中的管理環境。Guest:在虛擬化“集群”中的一臺虛擬機,可以位于物理機(host)集群中的任何一臺之上。但是某一時刻僅能位于一臺host之上,所以虛擬機的規模會受限于單臺host的可用資源情況。Interconnects:通過不同的網絡和存儲連接方式把host連在一起。并且共享存儲組件。

 

市面上主流的虛擬化管理程序有:

 

VMware vSphereMicrosoft HyperVOpenStackOracle VMRed Hat Enterprise VirtualizationCitrix XenServer

 

從概念層面而言,他們的功能一樣:允許多臺虛擬機,有各自的操作系統,獨立、協同地運行在相同的物理服務器,并且共享一臺或多臺物理服務器的計算資源。但是不同的廠商對軟件有不同的實現方式,所以他們也有自己的特點,但是都是大同小異。因為這個系列關注在SQL Server的虛擬化,所以我們把精力放在架構、性能和特定管理細節上。

 

虛擬化如何幫助DBA?

我們經常聽說要從企業的觀點去看問題:節省資金、能源、時間等等。但是到底虛擬化對DBA有什么好處?如果使用合理,那么虛擬化平臺可以在DBA的工作生涯的幾乎所有地方都能起效。

降低成本:

SQL Server的許可證成本相對于很多DBMS而言非常可觀(當然跟Oracle沒得比),但是如果被恰當地與虛擬化許可模式搭配,可以降低一定的成本。

獨立整合:

通常來說,當DBA考慮整合的時候,頭痛的是多個實例合并到一個實例,或者多個應用程序的數據庫合并到一個實例的過程所帶來的麻煩和挑戰。通過虛擬化,可以通過改進資源消耗來合并,使得多個虛擬機可以在一個host上協同存在。從而不需要合并實例或者應用。從另外一個方向來看,在資源消耗觀點中,多個操作系統的開銷可以忽略不急,所以如果許可證允許,分離實例成為多個獨立的宿主機更加可取。

 

高可用:

虛擬層可以直接和間接地加入到SQL Server的高可用和風險最小化策略(risk minimization strategy)中。如果沒有虛擬化,創建高可用的SQL Server環境需要很多復雜的技術。某些情況下,虛擬機的虛擬化高可用性保護可以用一個非常簡單而且透明的HA解決方案來替換一個復雜的高可用方案。

比如,在VMware高可用方案中,提供了針對硬件計劃外停機的一個復選框,提供了一旦物理機器故障,可以在4分鐘內恢復的功能。

 

即使在一個嚴格的以虛擬機為中心的HA方案中配置不合理,虛擬機層面的高可用也能對傳統SQL Server服務器的穩定性做補充,從而減少因為物理組件故障導致的嚴重事件。

 

災難恢復:

虛擬化后的SQL Server在災難恢復方面表現得更加好。通常情況下,在災難恢復站點的SQL Server應該和源服務器幾乎完全一樣,否則在故障轉移過程中可能會出現資源不足以應對壓力的情況從而導致異常或轉移失敗。在物理環境下,進行災難恢復測試是不可省略的。而在虛擬化的SQL Server環境中,虛擬機不在依賴于物理服務器的細微差別和不同的復雜度。可以在不對特定設備依賴的情況下恢復和提升服務器到活動狀態。虛擬化技術可以用來簡化、補充甚至替代傳統SQL Server災難恢復技術。

 

敏捷性和靈活性:

由于消除了對硬件的依賴,使得系統的變化變得相對容易。只要集群中的單個主機能夠容納你的虛擬機,就可以動態調整CPU、內存、網絡和硬盤配置。如果虛擬機超過了主機限制,可以購買更高配置的主機,把虛擬機遷移到新的主機上,這個過程可以不影響正在運行的業務。這個過程同樣適用于硬件升級。添加新的主機到集群,講虛擬機遷移到新的設備,然后停止使用舊的硬件。

 

標準化:

在你的環境中,由多少臺服務器組成?其模型如何?BIOS和驅動程序的版本?硬盤配置?文件存放位置如何?通過合適的設計虛擬基礎設施,并使用預配置的標準的SQL Server虛擬機模版用于部署。這樣你的SQL Server環境就成為一個標準化環境并可以文檔化。同時節省了時間。



組織壁壘和優先事項的差異:

虛擬化是一個相對漫長而艱巨的過程,最初,虛擬化用于快速和大規模整合中。早期的虛擬化管理程序整體性能開銷遠高于現在,使得性能影響非常明顯。但是由于早期的虛擬化用于簡單的預生產環境負載中,所以性能問題并不非常重要。 隨著時間的發展。管理程序持續改進,變得越來越高效,可以支持大型的虛擬機。更多的生產環境被虛擬化。可以說 ,這些平臺已經做好了應付整個地球上的生產環境。 但是,不要忘記虛擬化的原始目的大規模整合。虛擬化管理員被迫盡可能多地把虛擬機擠進他們的環境。整合過程第一個考慮因素性能。回到現在,在大量環境中,這個問題依舊存在。 現在,DBA有了不同的任務,普通的DBA以數據可用為開始,然后數據一致性,然后性能。前兩個和虛擬化管理的目標相同。但是兩邊的核心沖突性能和整合依舊存在。回顧一下開始的時候說過,虛擬化真的只有資源和資源隊列嗎?當你的環境中,越多的資源請求,那么資源爭用就越明顯。物理服務器的資源爭用意味著虛擬機的性能損耗。越多的資源爭用,越多的性能損耗。 性能和整合之間的沖突是大多數SQL Server虛擬化過程中的主要問題。SQL Server虛擬化由于虛擬機管理員的不合理創建和管理,導致SQL Server虛擬化的名聲不好。虛擬機管理員并不精通應用程序在虛擬化中的細微差別,也不知道他們應該知道些什么內容。但是,他們的最佳實踐,通常目標是為了使得環境能適應絕大部分的工作負載。但是這個經常又給DBA帶來麻煩。SQL Server是一個延時敏感的應用程序,文件服務器的1~2%性能影響,在大型SQL Server中可能被放大到25%甚至更大的層面。你作為DBA,為了表達這個現象,熟悉虛擬化環境是跟虛擬機管理正常溝通問題的關鍵。 最簡單地表達影響的方式是從概念上理解棧,并且使用對象信息來演示由于基礎設施底層問題所帶來的性能影響。這些客觀的度量標準可能會打破任何進行了虛擬化的應用程序,如果你準備為整個生產系統進行虛擬化,那么對于關鍵的SQL Server的可用性和性能會對你帶來更少的麻煩。

SQL Server虛擬化監控:

監控、收集和對關鍵性能度量指標進行趨勢分析可以幫助DBA跟蹤和分析虛擬化前后的性能趨勢。試想如果不能客觀地證明你的系統在執行虛擬化后性能出現異常,那么如何反饋問題呢?所以簡歷持續的性能統計收集、分析和基礎設施可用性的過程能最大化效率,這在虛擬環境中是關鍵點。

持續性能收集:

持續地對Windows Server和SQL Server進行性能度量收集是非常關鍵的。幸運的是,這個配置和維護相對簡單。如果你有類似System Center或者其他收集器,那么確保你的全部關鍵計數器已經被添加。如果沒有,可以使用Windows性能計數器。使其不影響Windows和SQL Server運行前提下進行24*7的收集。這部分可以參考作者的博客里面的文章:Ongoing Windows Perfmon Collection Setup

基準和基線:

除了系統性能計數器之外,也應該從SQL Server環境中收集性能重要對象的性能統計信息。包括一些可以衡量性能的對象:長時間運行的查詢、備份事件、ETL事件等。 收集的信息應該可以重復執行、結果必須可保存,以便用于趨勢分析。

了解虛擬化層:

當你開始虛擬化環境之后。企業虛擬化背后的管理系統從主機、訪客機和基礎架構下的主機收集如CPU性能、存儲消耗和資源隊列等待事件等關鍵指標。至少你需要有對這些你管理的系統有只讀訪問權。能對這些信息的訪問才能快速地分析這些度量標準,定位性能問題。

總結:

本節介紹了SQL Server虛擬化的一些基礎、關鍵的特性及虛擬化過程中的難點。后續章節會對這些部分進行深入介紹。

下一節: SQL Server 虛擬化(2)理想的SQL Server虛擬機架構
Tag標簽: 簡介  
  • 專題推薦

About IT165 - 廣告服務 - 隱私聲明 - 版權申明 - 免責條款 - 網站地圖 - 網友投稿 - 聯系方式
本站內容來自于互聯網,僅供用于網絡技術學習,學習中請遵循相關法律法規
香港最快开奖现场直播结果