標籤:position 協助 pos windows ora 經驗 不能 fill 保護
本文屬於SQL Server虛擬化系列
前言:現代系統中,虛擬化越來越普遍,如果缺乏對虛擬化工作原理的理解,那麼DBA在解決效能問題比如降低資源爭用、提高備份還原速度等操作時就會出現盲點。所以基於本人工作環境的情況和大時代的趨勢,同時根據個人經驗,絕大部分的IT人員都對虛擬化持有懷疑或者保留意見的態度。所以這裡開始一個系列文章,介紹SQL Server虛擬化的內容,內容來自 Stairway to Server Virtualizaion ,如後續有更新或者本人有其他內容,也會添加進去。目前本系列包含以下小節,第一節即本文:
- SQL Server 虛擬化(1)——虛擬化簡介
- SQL Server 虛擬化(2)——理想的SQL Server虛擬機器架構
- SQL Server 虛擬化(3)——在Vmware上搭建SQL Server
- SQL Server 虛擬化(4)——在Hyper-V上搭建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 vSphere
- Microsoft Hyper-V
- OpenStack
- Oracle VM
- Red Hat Enterprise Virtualization
- Citrix 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虛擬機器架構
SQL Server 虛擬化(1)——虛擬化簡介