『壹』 虛擬化有哪些應用
伺服器虛擬化主要的有三種
Citrix XenServer
微軟 Windows Server 2008 Hyper-V
VMware ESX Server 這是最常用的
總特點:
將伺服器物理資源抽象成邏輯資源,讓一台伺服器變成幾台甚至上百台相互隔離的虛擬伺服器,或者讓幾台伺服器變成一台伺服器來用,我們不再受限於物理上的界限,而是讓CPU、內存、磁碟、I/O等硬體變成可以動態管理的「資源池」,從而提高資源的利用率,簡化系統管理,實現伺服器整合,讓IT對業務的變化更具適應力
VMware ESX ServerESX Server
運行在伺服器裸機上,是基於硬體之上的架構。屬於企業級應用。用同一台伺服器底層硬體,劃分出若干虛機,集中管理,很方便的做集群,負載均衡,熱遷移等功能。
XenCenter是Citrix的虛擬化圖形介面管理工具,可在同一界面,管理多台的XenServer伺服器。管理上,通常會先在XenCenter建立一個伺服器群組(Pool),然後將位於同一機房內的XenServer伺服器加入。
和大多數伺服器半虛擬化產品相同的是,當數台XenServer伺服器連接到同一台共享磁碟驅動器,且將虛擬檔案放置於此的前提下,可以通過Xen-Motion這項功能,將虛擬機以手動方式在線轉移到其它的XenServer伺服器,從事主機的維護,或者降低硬體資源的消耗。
我是從IT號外知道的。
『貳』 雲存儲的核心技術:虛擬化存儲,究竟虛擬是怎樣實現的
虛擬化改變了計算機使用存儲的方式。就像物理機器抽象成虛擬機(VM:Virtual Machine)一樣,物理存儲設備也被抽象成虛擬磁碟(Virtual Disk)。今天我們就來聊聊虛擬化存儲(Storage Virtualization)技術,究竟虛擬磁碟是怎樣實現的?
虛擬磁碟的實現
我們知道,伺服器擴展存儲的手段主要有直連存儲(DAS)、存儲區域網路(SAN)和網路附加存儲(NAS)這三種類型。那麼哪種存儲類型可以用來實現虛擬磁碟呢?
在虛擬化環境中,類似VMWare這樣的虛擬機管理程序hypervisor,要同時給很多VM分配存儲空間。這個過程中,我們需要先把物理存儲資源重新劃分成虛擬磁碟,然後再分配給VM。
顯然我們不能用DAS方式把物理磁碟直連到VM上,如果這樣,需要的物理磁碟就太多了。SAN是以邏輯單元(LUN:Logic Unit)的形式提供存儲資源,但是虛擬環境中VM的數量是很大的,而且倫的數量不足以支持這么多虛擬磁碟。
更重要的是,虛擬磁碟是為大量VM共享的,由於VM需要隨時創建、刪除或遷移,所以需要在遷移VM時共享存儲空間,只有原始數據不會丟失。DAS還是SAN,都不適合共享存儲。
考慮到資源分配以及共享的問題,虛擬機管理程序以NAS的方式實現虛擬磁碟。VMware通常使用VMFS(虛擬機文件系統)或NFS協議實現虛擬磁碟,VMFS文件系統是專門針對虛擬機環境協議。
每一個虛擬機的數據實際上是一堆文件,及最重要的文件的虛擬磁碟文件(VMDK文件),也有交換分區文件(VSWP文件,等價交換),非易失性存儲器(NVRAM的文件相當於BIOS),等等。每個VM對虛擬磁碟的IO操作實際上是對虛擬磁碟文件的讀寫操作。
設計、施工、和虛擬伺服器環境和優化,允許多個虛擬機訪問集成的集群存儲池,從而大大提高了資源的利用率。使用和實現資源共享,管理員可以直接從更高的效率和存儲利用率中獲益。
那麼我們如何在雲計算中使用虛擬磁碟呢?
實例存儲
最主要的一種使用虛擬磁碟的方式就是實例存儲,每個VM都是虛擬機的一個實例,虛擬機管理程序在每個實例中提供一個模擬硬體環境,它包括CPU、內存和磁碟。這樣,虛擬磁碟就是虛擬機實例的一部分,就像物質世界。刪除VM後,虛擬磁碟也將被刪除。
在這個實例存儲模型中,虛擬磁碟與虛擬機之間的存儲關系,事實上,它是DAS存儲。但是虛擬磁碟的底層實現,我們說,它是以NAS的方式實現的。虛擬機管理程序的作用是存儲VM層的存儲模型,這是從實施協議分離(VMFS或NFS)的虛擬機的低層。
VMFS協議實現了存儲資源的虛擬化,再分配各VMs
卷存儲
實例存儲有它的限制,開發人員通常希望分離實例數據,例如OS和安裝的一些伺服器應用程序和用戶數據,這樣重建VM的時候可以保留用戶的數據。
這個需求衍生出另外一種存儲模型:卷存儲。卷是存儲的主要單元,相當於虛擬磁碟分區。它不是虛擬機實例的一部分,它可以被認為是虛擬機的外部存儲設備。
該卷可以從一個VM卸載,然後附加到另一個VM。通過這種方式,我們實現了實例數據與用戶數據的分離。OpenStack的煤渣是一個體積存儲的實現。
除了實例存儲和卷存儲之外,最後我們還提到另一種特殊的虛擬存儲:對象存儲。
對象存儲
很多雲應用需要在不同的VM之間共享數據,它常常需要跨越多個數據中心,而對象存儲可以解決這個問題。在前一篇文章中的雲計算IaaS管理平台的基本功能是什麼?》中曾經提到過對象存儲。
在對象存儲模型中,數據存儲在存儲段(bucket)中,桶也可以被稱為「水桶」,因為它字面意思。我們可以用硬碟來類推,對象像一個文件,而存儲段就像一個文件夾(或目錄)。可以通過統一資源標識符(URI:統一資源標識符)找到對象和存儲段。
對象存儲的核心設計思想實際上是虛擬化,它是文件的物理存儲位置,如卷、目錄、磁碟等,虛擬化是木桶,它將文件虛擬化為對象。對於應用層,簡化了對數據訪問的訪問,屏蔽了底層存儲技術的異構性和復雜性。
對象存儲模型
NAS與對象存儲各有所長
當然你也許會問,NAS存儲技術也是一個可以解決數據共享的問題嗎?由於對象存儲的大小和成本優勢,許多雲環境使用對象存儲而不是NAS。
因為對象存儲將跨多個節點傳播,最新數據並不總是可用的 因此,對象存儲的數據一致性不強。如果有強一致性的要求,然後你可以使用NAS。目前,在雲計算環境中,NAS和對象存儲是共存的。
和NAS一樣,對象存儲也是軟體體系結構,而不是硬體體系結構。應用程序通過REST API直接訪問對象存儲。公共對象存儲包括:Amazon S3和OpenStack的Swift。
結語
在實際的雲平台應用中,我們需要根據自己的實際情況來合理運用不同的虛擬化存儲技術。
對於非結構化的靜態數據文件,如音視頻、圖片等,我們一般使用對象存儲。
對於系統鏡像以及應用程序,我們需要使用雲主機實例存儲或者卷存儲。
對於應用產生的動態數據,我們一般還需要利用雲資料庫來對數據進行管理。
『叄』 什麼是雲儲存有什麼優點呢
雲存儲是一種網路在線存儲(Onlinestorage)的模式,即把數據存放在通常由第三方託管的多台虛擬伺服器,而非專屬的伺服器上。託管(hosting)公司營運大型的數據中心,需要數據存儲託管的人,則通過向其購買或租賃存儲空間的方式,來滿足數據存儲的需求。數據中心營運商根據客戶的需求,在後端准備存儲虛擬化的資源,並將其以存儲資源池(storagepool)的方式提供,客戶便可自行使用此存儲資源池來存放文件或對象。主要有下面幾點優勢:
1、存儲管理可以實現自動化和智能化,所有的存儲資源被整合到一起,客戶看到的是單一存儲空間。
2、提高了存儲效率,通過虛擬化技術解決了存儲空間的浪費,可以自動重新分配數據,提高了存儲空間的利用率,同時具備負載均衡、故障冗餘功能。
3、雲存儲能夠實現規模效應和彈性擴展,降低運營成本,避免資源浪費。隱患與缺點:1、對於較為機密的數據,雲存儲服務提供商如何保證用戶數據的安全性。2、由於帶寬和其他因素,雲端訪問性能可能比本地端儲存設備的性能低。
3、當用戶有特殊的數據使用記錄追蹤需求時(如公務部門依據規章和條例的要求,而需留存某些電磁記錄時),使用雲計算及雲存儲將使工作復雜度增加。
4、雖然可以一次提供給多人數據,或是傳遞數據給位於不同地方的人,但單人在轉移數據的時候(例如文件由手機發送至電腦,或是由電腦發送至手機)因為需要重新「上傳」與「下載」,會像是在繞遠路一般,不如使用傳輸線的來的快。
『肆』 【重識雲原生】第2.3節——主流虛擬化技術之Xen
Xen知識地圖:
Xen是由劍橋大學計算機實驗室開發的一個開源項目,是一個開源的可直接運行於硬體層之上的虛擬化軟體,它屬於type-I型虛擬化系統,支持萬貫虛擬化和超虛擬化,以高性能、佔用資源少著稱,贏得了IBM、AMD、HP、Red Hat和Novell等眾多世界級軟硬體廠商的高度認可和大力支持,已被國內外眾多企事業用戶用來搭建高性能的虛擬化平台。
Xen僅對CPU和Memory直接接管,而其它IO硬體驅動則由其上運行的第一個虛擬機來提供支持,它能夠在計算機硬體上並發的運行多個客戶操作系統(Guest OS)。支持x86、x86-64、安騰( Itanium)、Power PC和ARM多種處理器,因此Xen可以在大量的計算設備上運行,目前Xen支持Linux、NetBSD、FreeBSD、Solaris、 Windows和其他常用的操作系統作為客戶操作系統在其管理程序上運行。
Xen默認認為自己是直接運行於硬體層之上的虛擬化軟體(即Xen Hypervisor層),並且可以直接驅動CPU和內存,需注意CPU和內存是所有想要運行的操作系統必須能直接支持的,但Xen為保證自身的小巧,它並沒有提供虛擬機的管理介面,因此它採用了一種獨特的方式,先運行一台特權虛擬機(即Domain 0),且這台VM必須支持Kernel的修改,因此選擇開源的Linux做為特權VM是最合適的,這樣也可方便採用Linux所支持的方式來開發虛擬機管理介面,實現與Xen Hypervisor層直接交互來完成為VM分配CPU和內存資源及創建、刪除、停止、啟動VM的管理介面。通常這台特權虛擬機一定會採用當前比較流行的Linux發行版,因為它能支持更多IO硬體設備,如:網卡,磁碟,顯卡,音效卡等;到目前為止,NetBSD,GNU/Linux,FreeBSD和Plan 9,OpenSolaris等系統已經支持已半虛擬化方式運行在Xen的DomU中。目前Xen已經支持x86、x86_64和ARM等平台,並正在向IA64、PPC移植。移植到其他平台從技術上是可行的,未來有可能會實現。
Xen虛擬機支持在不停止的情況下在多個物理主機之間實時遷移。在操作過程中,虛擬機在沒有停止工作的情況下內存被反復地復制到目標機器。虛擬機在最終目的地開始執行之前,會有一次60-300毫秒的非常短暫的暫停以執行最終的同步化,給人無縫遷移的感覺。類似的技術被用來暫停一台正在運行的虛擬機到磁碟,並切換到另外一台,第一台虛擬機在以後可以恢復。
如上圖所示,Xen虛擬環境由三部分組件組成:
XEN Hypervisor
Xen Hypervisor 是介於操作系統和硬體之間的一個軟體抽象層。它負責在各個虛擬機之間進行CPU調度和內存分配。Xen Hypervisor不僅抽象出虛擬機的硬體,同時還控制著各個虛擬機的執行。Xen Hypervisor不會處理網路、存儲設備、視頻以及其他 I/O。
Domain 0 Guest
Domain 0是特權域,是一個修改過的Linux kernel,是唯一運行在 Xen Hypervisor之上的虛擬機,它擁有訪問物理 I/O 資源的許可權,同時和系統上運行的其他虛擬機(Domain U: PV and HVM Guest)進行交互。Domain 0需要在其它Domain啟動之前啟動。
Domain 0 中有兩個驅動 Network Backend Driver 和 Block Backend Driver,它們分別用來處理來自 Domain U 的網路和本地磁碟請求。 Network Backend Driver與本地網路硬體直接通信,以此來處理來自於Domain U所有虛擬機訪問網路設備的請求;Block Backend Drive與本地存儲設備進行通信,以此來處理來自於Domain U的磁碟數據讀寫的請求。
Domain U Guest(Dom U)
Domain U沒有直接訪問物理硬體的許可權(Domain U的"U"是來自於英文單詞 unprivileged,是指沒有許可權的),但Domain 0有。
運行在 Xen Hypervisor 上的所有半虛擬化(paravirtualized)虛擬機被稱為「Domain U PV Guests」,其上運行著被修改過內核的操作系統,如 Linux、Solaris、FreeBSD 等其它 UNIX 操作系統。
所有的全虛擬化虛擬機被稱為「Domain U HVM Guests」,其上運行著不用修改內核的操作系統,如 Windows 等。
Domain U PV Guest 中也包括兩個驅動「PV Network Driver」和「PV Block Driver」,它們分別也是用來處理發送網路和本地磁碟請求用的,這與 Domain 0 中的兩個驅動是相對應的。
Xen對虛擬機的虛擬化分為兩大類,半虛擬化(Para virtualization)和完全虛擬化(Hardware VirtualMachine)。
半虛擬化(Paravirtualization)有些資料稱為「超虛擬化」,簡稱為PV,是Xen主導的虛擬化技術。這種技術允許虛擬機操作系統感知到自己運行在Xen Hypervisor上而不是直接運行在硬體上,同時也可以識別出其他運行在相同環境中的客戶虛擬機。
在Xen Hypervisor上運行的半虛擬化的操作系統,為了調用系統管理程序(Xen Hypervisor),要有選擇地修改操作系統,然而卻不需要修改操作系統上運行的應用程序。由於 Xen 需要修改操作系統內核,所以您不能直接讓當前的 Linux 內核在 Xen 系統管理程序中運行,除非它已經移植到了Xen 架構。不過,如果當前系統可以使用新的已經移植到 Xen 架構的Linux 內核,那麼您就可以不加修改地運行現有的系統。
完全虛擬化(Hardware Virtual Machine)又稱「硬體虛擬化」,簡稱HVM,是指運行在虛擬環境上的虛擬機在運行過程中始終感覺自己是直接運行在硬體之上的,並且感知不到在相同硬體環境下運行著其他虛擬機的虛擬技術。此種虛擬化需要藉助於Intel的VT-x 或 AMD的AMD-v 等硬體輔助虛擬化技術(詳細技術原理參見1.5.1節)及Qemu的IO硬體模擬技術,才能支持GuestOS的kernel不修改,就可直接被DomU支持。
在Xen Hypervisor運行的完全虛擬化虛擬機,所運行的操作系統都是標準的操作系統,即:無需任何修改的操作系統版本。同時也需要提供特殊的硬體設備。
值的注意的是,在Xen上虛擬的Windows虛擬機必須採用完全虛擬化技術。
為了提高性能,完全虛擬化的Guests可以使用特殊的半虛擬設備驅動程序(PVHVM或PV-on-HVM驅動)。這些驅動程序在HVM環境下優化你的 PV驅動,模擬的磁碟和網路IO旁路運行,從而讓你的PV在HVM中有更好的性能。這意味著你在用戶窗口操作方面可以得到最佳的性能。
注意,Xen項目PV(半虛擬化)的Guest自動使用PV驅動,因此不需要這些驅動程序,因為你已經自動使用優化的驅動程序。PVHVM只會在HVM(全虛擬化)guest虛擬機中需要。
Xen 的 VMM ( Xen Hypervisor ) 位於操作系統和硬體之間,負責為上層運行的操作系統內核提供虛擬化的硬體資源,負責管理和分配這些資源,並確保上層虛擬機(稱為域 Domain)之間的相互隔離。Xen採用混合模式,因而設定了一個特權域用以輔助Xen管理其他的域,並提供虛擬的資源服務,該特權域稱為Domain 0,而其餘的域則稱為Domain U。
Xen向Domain提供了一個抽象層,其中包含了管理和虛擬硬體的API。Domain 0內部包含了真實的設備驅動(原生設備驅動),可直接訪問物理硬體,負責與 Xen 提供的管理 API 交互,並通過用戶模式下的管理工具來管理 Xen 的虛擬機環境。
Xen2.0之後,引入了分離設備驅動模式。該模式在每個用戶域中建立前端(front end)設備,在特權域(Dom0)中建立後端(back end)設備。所有的用戶域操作系統像使用普通設備一樣向前端設備發送請求,而前端設備通過IO請求描述符(IO descripror ring)和設備通道(device channel)將這些請求以及用戶域的身份信息發送到處於特權域中的後端設備。這種體系將控制信息傳遞和數據傳遞分開處理。
在Xen體系結構設計中,後端設備運行的特權域被賦予一個特有的名字---隔離設備域(Isolation Device Domain, IDD),而在實際設計中,IDD 就處在Dom0中。所有的真實硬體訪問都由特權域的後端設備調用本地設備驅動 (native device driver)發起。前端設備的設計十分簡單,只需要完成數據的轉發操作,由於它們不是真實的設備驅動程序,所以也不用進行請求調度操作。而運行在IDD中的後端設備,可以利用Linux的現有設備驅動來完成硬體訪問,需要增加的只是IO請求的橋接功能---能完成任務的分發和回送。
1)半虛擬化技術實現原理
採用半虛擬化技術的虛擬機操作系統能夠識別到自己是運行在Xen Hypervisor而非直接運行於硬體之上,並且也可以識別到在相同的機器上運行的其他虛擬機系統。而且運行的操作系統都需要進行相應的修改。
半虛擬化客戶機(Domain U PV Guests)包含兩個用於操作網路和磁碟的驅動程序,PV Network Driver 和PV Block Driver。
PV Network Driver負責為Domain U提供網路訪問功能。PV Block Driver負責為Domain U提供磁碟操作功能。
2)完全虛擬化技術實現原理
完全虛擬化客戶機(Domain U HVM Guests)運行的是標准版本的操作系統,因此其操作系統中不存在半虛擬化驅動程序(PV Driver),但是在每個完全虛擬化客戶機都會在Domain 0中存在一個特殊的精靈程序,稱作:Qemu-DM,Qemu-DM幫助完全虛擬化客戶機(Domain U HVM Guest)獲取網路和磁碟的訪問操作。
完全虛擬化客戶機必須和在普通硬體環境下一樣進行初始化,所以需要在其中加入一個特殊的軟體Xen virtual firmware,來模擬操作系統啟動時所需要的BIOS。
開源社區中將一系列的Linux精靈程序分類為「管理」和「控制」兩大類。這些服務支撐著整個虛擬環境的管理和控制操作,並且存在於Domain 0虛擬機中。
下面將對直接服務進行詳細的描述。
註:為了清晰的描述Xen的運行流程,畫圖時將精靈程序放在Domain 0外部來描述,但事實上所有精靈程序都存在於Domain 0 之中。
1)Xend
Xend精靈線程是一個Python應用程序,它作為Xen環境的系統管理員。它利用Libxenctrl類庫向Xen Hypervisor發出請求。
所有Xend處理的請求都是由XM工具使用XML RPC介面發送過來的。
2)Xm
用於將用戶輸入通過XML RPC介面傳遞到Xend中的命令行工具。
3)Xenstored
Xenstored精靈程序用於維護注冊信息,這些信息包括內存和在連接Domain 0和所有其他Domain U之間的事件通道。Domain 0虛擬機利用這些注冊信息來與系統中其他虛擬機建立設備通道,即幫助Domain U虛擬機訪問硬體資源。
4)Libxenctrl
Libxenctrl是C程序類庫,用於讓Xend具有通過Domain 0與Xen Hypervisor進行交互的能力。在Domain 0中存在一個特殊的驅動程序稱作privcmd,它將請求發送給Hypervisor。
5)Qemu-DM
在Xen環境下,每個完全虛擬化虛擬機都需要擁有自己的Qemu精靈程序。Qemu-DM處理在Xen環境下完全虛擬化客戶機所能允許執行的所有關於網路 和磁碟請求和操作。Qemu程序必須存在於Hypervisor之外同時又需要訪問網路和I/O,所以Qemu-DM必須存在於Domain 0 中(參見前面章節對Domain 0 的描述)。
未來版本的Xen中,一種新的工具Stub-DM將會提供一系列對所有完全虛擬化客戶機都可用的服務,以此來替代需要在每個虛擬機上都生成一個Qemu的邏輯。
6)Xen Virtual Firmware
Xen Virtual Firmware是被嵌入到所有完全虛擬化客戶機中的虛擬BIOS系統,來確保所有客戶操作系統在正常啟動操作中接收到標準的啟動指令集並提供標準的軟體兼容環境。
根據前幾章節所述,Xen Hypervisor不負責處理網路和磁碟請求,因此半虛擬化客戶機(Domain U PV)必須通過Domain 0 與Xen Hypervisor進行通信,從而完成網路和磁碟的操作請求。下面以半虛擬化客戶機(Domain U PV)執行向本地磁碟寫入數據為例描述Domain 0與Domain U PV的交互過程。
半虛擬化客戶機(Domain U PV)的PV Block Driver接收到要向本地磁碟寫入數據的請求,然後通過Xen Hypervisor將與Domain 0共享的本地內存中的數據寫入到本地磁碟中。在Domain 0 和半虛擬化Domain U之間存在事件通道,這個通道允許它們之間通過存在於Xen Hypervisor內的非同步中斷來進行通信。Domain 0將會接收到一個來自於Xen Hypervisor的系統中斷,並觸發Domain 0中的Block Backend驅動程序去訪問本地系統內容,並從與半虛擬化客戶機的共享內存中讀取適合的數據塊。從共享內存中讀取的數據隨後被寫入到本地磁碟的指定位置中。
上圖中所顯示的事件通道是直接連接Domain 0 和Domain U PV是為了清晰和簡單的描述系統是如何運行的。但事實上,事件通道(Event Channel)運行於Xen Hypervisor中,並在Xenstored中注冊特定的系統中斷,以此來讓Domain 0 和Domain U PV能夠通過本地內存快速的共享信息。
Xen在給VM提供CPU的虛擬化時,它採用的也是在Xen hypervisor層啟動一個線程,並將這些線程映射到某個物理核心上,當然通過DomU的配置文件中的cpus可以指定將這些模擬CPU的線程綁定到某幾個物理核心上;而內存的虛擬化則是內存頁的映射,將物理內存上多個連續或不連續的內存頁映射給VM,讓VM看來這就是一個完整的連續的內存空間。
當啟動一個用戶VM(DomU)時,該VM所需的CPU和內存都由Xen Hypervisor提供,而它若需要使用IO設備時,則向特權VM(即Dom0)發起請求,特權VM會為該用戶VM創建一個模擬的硬體設備線程,並運行於特權VM的用戶空間,當用戶VM向該IO硬體發起調用時,特權VM上相應的模擬設備接收請求並將其轉化為特權VM對IO硬體的操作,交給特權VM的內核來代為完成其操作。這里需注意這些虛擬IO硬體需要由Qemu來模擬,Xen本身並沒有提供相應的模擬功能。(註:特權VM的CPU和內存也是有Xen Hypervisor提供)
1)Qemu模擬IO設備(完全虛擬化方式)
Qemu模擬IO設備(完全虛擬化方式):假如用戶VM向特權VM請求磁碟,特權VM可以將一個分區、文件等,通過Qemu將其模擬成一個磁碟設備,就拿文件來說,特權VM先創建一個映像文件,再通過Qemu為該文件模擬一個磁碟控制器晶元;然後,將其映射到用戶VM上,當然模擬的這個磁碟控制器晶元一定是一個最常見的,用戶VM的Kernel一定支持的,但需注意:模擬的磁碟可能會與實際的物理磁碟不同,因為要盡可能兼容。這樣一來用戶VM假如要寫數據到磁碟的過程如下:
用戶VM-APP--->用戶VM-Kernel調用虛擬磁碟的驅動進行寫數據前的准備(如:數據寫入到磁碟中的扇區位置/數據編碼等)--->
用戶VM-Kernel將編碼後的信息發給特權VM的模擬磁碟進程--->
特權VM的模擬磁碟進程再將編號信息還原後發給特權VM-kernel--->
特權VM-kernel調用真實物理磁碟的驅動對數據進行寫前准備--->最後磁碟驅動調度磁碟完成寫入
摘錄補充:( http://my.oschina.net/davehe/blog/94039?fromerr=mOuCyx6W )
Xen向Domain提供了一個抽象層,其中包含了管理和虛擬硬體的API。Domain 0內部包含了真實的設備驅動(原生設備驅動),可直接訪問物理硬體,Xen 提供的管理 API 可與其交互,並通過用戶模式下的管理工具(如:xm/xend、xl等)來管理 Xen 的虛擬機環境。
2)半虛擬化IO設備
半虛擬化的IO設備:它與模擬最大不同是DomU知道自己是運行在虛擬化環境中的,並且知道這個磁碟不是真正的磁碟,它只是Xen模擬的一個磁碟前端驅動(Disk Frontend),它要寫數據時,直接將數據交給Disk Frontend,而不再去調用磁碟驅動進行數據編碼,當特權VM端的Disk backend收到來自DomU的數據時,也是直接轉給特權VM-Kernel,由其直接調用物理磁碟驅動來對這些原始數據進行處理並寫入磁碟。
摘錄補充:( http://my.oschina.net/davehe/blog/94039?fromerr=mOuCyx6W )
Xen2.0之後,引入了分離設備驅動模式。該模式在每個用戶域中建立前端(front end)設備,在特權域(Dom0)中建立後端(back end)設備。所有的用戶域操作系統像使用普通設備一樣向前端設備發送請求,而前端設備通過IO請求描述符(IO descripror ring)和設備通道(device channel)將這些請求以及用戶域的身份信息發送到處於特權域中的後端設備。這種體系將控制信息傳遞和數據傳遞分開處理(類似雲計算中常說的控制面與數據面分離設計)。
半虛擬化客戶機(Domain U PV)的PV Block Driver接收到要向本地磁碟寫入數據的請求,然後通過Xen Hypervisor將自己與Domain 0共享的本地內存中的數據寫入到本地磁碟中。在Domain 0 和半虛擬化Domain U之間存在事件通道,這個通道允許它們之間通過存在於Xen Hypervisor內的非同步中斷來進行通信。Domain 0將會接收到一個來自於Xen Hypervisor的系統中斷,並觸發Domain 0中的Block Backend驅動程序去訪問本地系統內容,並從自己與半虛擬化客戶機的共享內存中讀取適合的數據塊後,隨即被寫入到本地磁碟的指定位置中。
但無論採用模擬或半虛擬化最終都是對物理磁碟的操作,假如當前只有一個物理磁碟,眾多用戶VM都在進行大量的讀寫請求,此時,為了避免用戶VM無限制的向特權VM發起請求,特權VM中採用一個環狀緩存區,每到一個IO請求,就先將其塞入這個環狀緩沖區的槽位中,若緩沖區滿了,就會告訴用戶VM IO設備繁忙。當然其它各種IO設備大致都採用這種機制來控制。
在虛擬化環境中虛擬網路是十分重要但又比較難,需要特別注意;
在Linux中實現虛擬網路的方法中比較常用的工具有兩個:bridge-utils 和 openvswitch,它們創建的虛擬網路設備是不能相互使用的,比如:bridge-utils創建的橋設備,openvswitch是無法識別的。
用下圖來做簡單說明:
1)Bridge模式
Xend啟動時流程:
1、創建虛擬網橋 xenbr0;
2、停止物理網卡 eth0;
3、物理網卡 eth0 的 MAC 地址和 IP 地址被復制到虛擬網卡 veth0;
4、物理網卡 eth0 重命名為 peth0;
5、Veth0 重命名為 eth0;
6、Peth0 的 MAC 地址更改( FE:FF:FF:FF:FF:FF ),ARP 功能關閉;
7、連接 peth0、vif0.0 到網橋 xenbr0
8、啟動 peth0、vif0.0、xenbr0
Domain U 啟動時的流程:
1、vif<domainID>.0 連接到 xenbr0
2、啟動vif<domainID>.0
2)Route 模式
Xend啟動時的流程:
1、開啟Domain 0的IP Forward。
Domain U啟動時的流程:
1、創建 vif<domainID>.0 ,dom U eth0的IP地址被拷貝到vif<domainID>。
2、啟動 vif<domainID>.0。
3、為domU的配置文件中指向虛擬介面vif.0分配的IP地址增加靜態路由。
3)NAT模式
NAT 模式會使用虛擬區域網 virbr0
安裝了Xen的Linux機器,在Dom 0中能看到以下幾類網卡(網路介面設備 ):
(X ,Y都為數字)
pethY
ethY
xenbrY
virbrY
vifX.Y(X為DomaiID,Y表示該虛擬網卡是該Domain的第幾塊虛擬網卡)
vethY (一般在Xend啟動完成以後就不存在了)
xend : 這是Xen Hypervisor的Dom0上運行的服務,此服務用來監控xm命令發來的指令,並完成相應的動作。
xm : Xen Management,用來管理VM的創建、刪除、啟動、快照、刪除、停止等的管理工具。
xl : 這是一個基於libxenlight庫的一個輕量級VM管理工具,它從Xen4.1開始出現,從4.3以後,它被作為主要的VM管理工具,而xm這個重量級管理工具開始被提示廢棄.以下為xm、xl的對比圖:
xl 和 xm都需要調用libxenlight,但xl不需要運行任何服務,它可直接調用libxenlight完成相關操作。
xe/XAPI,是xend的一個API管理介面,通常用於Xen Cloud環境中:Xen Server, XCP
virsh/ libvirt : 這是Redhat發起開發的一套用於管理眾多不同類別的VM的管理工具。
virsh : 這是一個命令行工具
libvirt: 則是一個lib庫, libvirtd守護進程用於監聽virsh命令操作,並調用lbvirt完成相關操作.
10年4月Xen4.0.0發布,改進後Xen的DomU最大可支持虛擬CPU 64顆,Xen主機可支持1TB內存和128顆物理CPU,磁碟可支持快照和克隆;HVM客戶機支持虛擬內存頁共享;
11年4月發布的Xen4.1版後,xm/xend開始被提示廢棄,xl這個更輕量級的Xen VM管理工具逐漸成為主流。
15年為止已經發布Xen4.5版本,目前yum源可用的最新版Xen是4.6.1版的(http://mirrors.skyshe.cn/centos/6.7/virt/x86_64/xen-46/)。
Linux2.6.37:kernel開始對Xen進行支持,並加其加入到Kernel中。
Linux3.0:Kernel開始對Xen的關鍵部分進行優化。
RHEL對Xen的支持概況:
Redhat系列對Xen的支持情況:
RHEL5.7 ~ 及以前版本:默認的企業虛擬化技術為Xen。
但Redhat提供了兩種內核:
kernel-... :這是僅允許RHEL系統的內核,不能運行在DomU中。
kernel-xen.. :這是需要部署XenServer時,使用的Kernel版本。
RHEL6 ~ 及以後版本:默認支持KVM(收購自以色列的一款虛擬化工具),並且不在對Xen做任何支持,但允許自己運行在DomU中。
Linux內核態、用戶態簡介與IntelCPU特權級別--Ring0-3_weixin_30784501的博客-CSDN博客
雲計算技術 — 雲計算技術發展編年史_煙雲的計算-CSDN博客_雲計算編年史
虛擬化技術原理(CPU、內存、IO)_joneslee的博客-CSDN博客_虛擬化原理
五種主流的虛擬化技術_遠有青山-CSDN博客_虛擬化技術
Xen原理
Xen原理 - 張朝鋒 - 博客園
Xen虛擬化技術原理_IT人生活的技術博客_51CTO博客
Xen虛擬化基本原理詳解
Xen虛擬化基本原理詳解 - stardsd - 博客園
Xen工作原理_為幸福寫歌的博客-CSDN博客_xen原理
Xen_網路
『伍』 用戶在程序中試圖讀某文件的第100個邏輯塊,使用操作系統的什麼介面
1 虛擬存儲技術產
虛擬化技術並件新技術,發展,應該說隨著計算機技術發展發展起,早始於70代.由於存儲容量,特別內存容量本非高,容量,於型應用程序或程序應用受限制.克服限制,採用虛擬存儲技術,典型應用虛擬內存技術.隨著計算機技術及相關信息處理技術斷發展,存儲需求越越.需求刺激各種新技術現,比磁碟性能越越,容量越越.量型信息處理系統,單磁碟能滿足需要,情況存儲虛擬化技術發展起.發展程由幾階段幾種應用.首先磁碟條帶集(RAID,帶容錯)技術,物理磁碟通定邏輯關系集合起,容量虛擬磁碟.隨著數據量斷增加數據用性要求斷提高,種新存儲技術應運,存儲區域網路(SAN)技術.SAN廣域化則旨存儲設備實現種公用設施,任何員,任何主機都隨隨獲取各自想要數據.目前討論比較包括iSCSI,FC Over IP 等技術,由於些相關標准沒終確定,存儲設備公用化,存儲網路廣域化逆轉潮流.
2 虛擬存儲概念
所謂虛擬存儲,存儲介質模塊(硬碟,RAID)通定手段集管理起,所存儲模塊存儲池(Storage Pool)統管理,主機工作站角度,看硬碟,區或者卷,象超容量(1T)硬碟.種種,存儲設備統管理起,使用者提供容量,高數據傳輸性能存儲系統,稱虛擬存儲.
虛擬存儲類
目前虛擬存儲發展尚統標准,虛擬化存儲拓撲結構講主要兩種式:即稱式與非稱式.稱式虛擬存儲技術指虛擬存儲控制設備與存儲軟體系統,交換設備集整體,內嵌網路數據傳輸路徑;非稱式虛擬存儲技術指虛擬存儲控制設備獨立於數據傳輸路徑外.虛擬化存儲實現原理講兩種式;即數據塊虛擬與虛擬文件系統.具體:
A.稱式虛擬存儲
圖1
圖1稱式虛擬存儲解決案示意圖
圖1所示稱式虛擬存儲結構圖,存儲控制設備 High Speed Traffic Directors(HSTD)與存儲池系統Storage Pool集起,組SAN Appliance.看該案存儲控制設備HSTD主機與存儲池數據交換程起核作用.該案虛擬存儲程:由HSTD內嵌存儲管理系統存儲池物理硬碟虛擬邏輯存儲單元(LUN),並進行埠映射(指定某LUN能哪些埠所見),主機端各見存儲單元映射操作系統識別盤符.主機向SAN Appliance寫入數據,用戶需要數據寫入位置指定自映射盤符(LUN),數據經HSTD高速並行埠,先寫入高速緩存,HSTD存儲管理系統自完目標位置由LUN物理硬碟轉換,程用戶見虛擬邏輯單元,關每LUN具體物理組織結構.該案具主要特點:
(1)採用容量高速緩存,顯著提高數據傳輸速度.
緩存存儲系統廣泛採用位於主機與存儲設備間I/O路徑間介質.主機存儲設備讀取數據,與前數據存儲位置相連數據讀緩存,並調用數據保留緩存;主機讀數據,幾率能夠緩存找所需要數據.直接緩存讀.緩存讀取數據速度受電信號傳播速度影響(等於光速),高於硬碟讀數據碟片機械轉速度.主機向存儲設備寫入數據,先數據寫入緩存,待主機端寫入作停止,再緩存數據寫入硬碟,同高於直接寫入硬碟速度
(2)埠並行技術,消除I/O瓶頸.
傳統FC存儲設備控制埠與邏輯盤間固定關系,訪問塊硬碟能通控制控制器埠.稱式虛擬存儲設備,SAN Appliance存儲埠與LUN關系虛擬,說台主機通存儲埠(8)並發訪問同LUN;光纖通道100MB/帶寬前提,並行工作埠數量越,數據帶寬越高.
(3)邏輯存儲單元提供高速磁碟訪問速度.
視頻應用環境,應用程序讀寫數據固定數據塊單位(512byte1MB間).存儲系統保證應用程序帶寬需求,往往設計傳輸512byte數據塊才能達其佳I/O性能.傳統SAN結構,容量需求增,唯解決辦塊磁碟(物理或邏輯)綁定帶區集,實現容量LUN.稱式虛擬存儲系統,主機提供真超容量,高性能LUN,用帶區集式實現性能較差邏輯卷.與帶區集相比,Power LUN具優勢,塊I/O block真存儲系統所接受,效提高數據傳輸速度;並且由於沒帶區集處理程,主機CPU解除負擔,提高主機性能.
(4)HSTD系統容錯性能.
稱式虛擬存儲系統,HSTD數據I/O必經,存儲池數據存放.由於存儲池數據具容錯機制保障安全,用戶自想HSTD否容錯保護.象許型存儲系統,熟稱式虛擬存儲系統,HSTD配製,每HSTD間通SAN Appliance內嵌網路管理服務實現緩存數據致相互通信.
(5)SAN Appliance便連接交換設備,實現超規模Fabric結構SAN.
系統保持標准SAN結構,系統擴展互連提供技術保障,所SAN Appliance便連接交換設備,實現超規模Fabric結構SAN.
B.非稱式虛擬存儲系統
圖2
圖2非稱式虛擬存儲系統示意圖
圖2所示非稱式虛擬存儲系統結構圖,網路每台主機虛擬存儲管理設備均連接磁碟陣列,其主機數據路徑通FC交換設備達磁碟陣列;虛擬存儲設備網路連接磁碟陣列進行虛擬化操作,各存儲陣列LUN虛擬邏輯帶區集(Strip),並網路每台主機指定每Strip訪問許可權(寫,讀,禁止訪問).主機要訪問某Strip,首先要訪問虛擬存儲設備,讀取Strip信息訪問許可權,再通交換設備訪問實際Strip數據.程,主機識別邏輯strip,直接識別物理硬碟.種案具特點:
(1)同物理硬碟陣列容量進行邏輯組合,實現虛擬帶區集,陣列控制器埠綁定,定程度提高系統用帶寬.
(2)交換機埠數量足夠情況,網路內安裝兩台虛擬存儲設備,實現Strip信息訪問許可權冗餘.
該案存些足:
(1)該案本質帶區集——磁碟陣列結構,旦帶區集某磁碟陣列控制器損壞,或者陣列交換機路徑銅纜,GBIC損壞,都導致虛擬LUN離線,帶區集本身沒容錯能力,LUN損壞意味著整Strip面數據丟失.
(2)由於該案帶寬提高通陣列埠綁定實現,普通光纖通道陣列控制器效帶寬僅40MB/S左右,要達幾百兆帶寬意味著要調用十幾台陣列,佔用幾十交換機埠,兩台交換機型網路,實現.
(3)由於各種品牌,型號磁碟陣列其性能完全相同,於虛擬化目同品牌,型號陣列進行綁定,帶問題:即數據寫入或讀各並發數據流速度同,意味著原數據包順序傳輸完畢打亂,系統需要佔用間資源重新進行數據包排序整理,嚴重影響系統性能.
4 數據塊虛擬與虛擬文件系統
拓撲結構角度析稱式與非稱式虛擬存儲案異同,實際虛擬化存儲實現原理講兩種式;即數據塊虛擬與虛擬文件系統.
數據塊虛擬存儲案著重解決數據傳輸程沖突延問題.交換機組型Fabric結構SAN,由於台主機通交換機埠訪問存儲設備,延數據塊沖突問題非嚴重.數據塊虛擬存儲案利用虛擬埠並行技術,台客戶機提供極高帶寬,限度減少延與沖突發,實際應用,數據塊虛擬存儲案稱式拓撲結構表現形式.
虛擬文件系統存儲案著重解決規模網路文件共享安全機制問題.通同站點指定同訪問許可權,保證網路文件安全.實際應用,虛擬文件系統存儲案非稱式拓撲結構表現形式.
虛擬存儲技術門課結合點
本期門課,所涉及虛擬存儲技術,實際虛擬存儲技術面,特指CPU間外存空間換取昂貴內存空間操作系統資源轉換技術
基本思想:程序,數據,堆棧超內存,操作系統程序前使用部保留內存,其部保存磁碟,並需要內存磁碟間態交換,虛擬存儲器支持道程序設計技術
目:提高內存利用率
管理式
A 請求式頁存儲管理
進程始運行前,裝入全部頁面,裝入或零頁面,根據進程運行需要,態裝入其頁面;內存空間已滿,需要裝入新頁面,則根據某種算淘汰某頁面,便裝入新頁面
B 請求式段存儲管理
能實現虛擬存儲,段式邏輯址空間程序段運行並全部裝入內存,同請求式頁存儲管理,首先調入或若干程序段運行,運行程調用哪段,根據該段度內存配連續區給使用.若內存沒足夠空閑區,則考慮進行段緊湊或某段或某些段淘汰,種存儲管理技術稱請求式段存儲管理
現團IDC網45元/美空間團購,便宜口碑
2.批處理、操作系統、實操作系統各特徵 3.道程序設計與重處理何區別 4.討論操作系統哪些角度發何統起 5.現代操作系統運行環境何要求 3 2 1.說進程由偽處理機執行程序 2.比較進程與程序聯系區別 3.我說程序並發執行導致終結失封閉性所程序都立試舉例說明 4.臨界區舉臨界區例 5.線程線程進程何區別 6.某高校計算機系設網路課並安排機實習假設機房共2m台機器2n 名選該課規定: ① 每2 組組各佔台機器協同完機實習; ② 組2 齊並且機房空閑機器該組才能進入機房; ③ 機實習由名教師檢查檢查完畢組同離機房 試用P、V操作模擬機實習程 7.今三並發進程RMP共享循環使用緩沖區B緩沖區B 共N單元進程R 負責輸入設備讀信息每讀字元存放緩沖區B 單元;進程M負責處理讀入字元若發現讀入字元空格符則改;進程P負責處理字元取並列印輸緩沖區單元字元進程P 取則用存放讀入字元請用PV操作同步機制寫能確並發執行程序 8.寫Reader-Writer 問題算避免由於斷Reader 現使Writer 限期等待 9. 設計C 程序(嵌入匯編語言)忙等待式實現信號量P、V操作 10. 設計C 程序實現產者-消費者問題 說明:8-10 課外實踐練習 4 3 1.進程調度功能哪些 2.進程調度機哪幾種 3.說進程文切換程文切換程序能破壞進程文結構 4.比較用幾種調度算 5.假設四道作業進入刻與執行間所示: 作業號 進入刻() 執行間() 1 10.00 0.4 2 10.10 1.0 3 10.20 0.6 4 10.30 0.2 單道程序環境別採用先先服務短作業優先調度算試說明調度順序及平均周轉間 5 4 1.虛擬存儲器其特點 2.態區管理用內存配算哪幾種比較各自優缺點 3.頁式管理靜態頁式管理實現虛存 4.請求頁式管理哪幾種用頁置換算比較優缺點 5.段式管理與頁式管理何區別 6.請求頁系統採用LRU 頁面置換算假進程頁面訪問順序4 32143543215配給該進程物理塊數M 別3 4 請計算訪問程發缺頁數缺頁率比較所結 7.設計算機4 頁框裝入間、近訪問間每頁訪問位、修改位所示(間鍾周期單位): 頁 裝入間 近訪問間 訪問位A 修改位M 0 126 279 0 0 1 230 260 1 0 2 120 272 1 1 3 160 280 1 1 1)NRU 置換哪頁 2)LRU 置換哪頁 3)FIFO 置換哪頁 8.已知段表: 段號 基址 度 合(0)/非(1) 0 219 600 0 1 2300 14 0 2 90 100 1 3 1327 580 0 4 1952 96 0 段存儲管理系統運行列邏輯址物理址 (1)0430 (2)110 (3)111 (4)2500 (5)3400 (6)4112 6 5 1.系統調用系統調用與般程調用何區別 2.Linux 操作系統引起進程調度機哪些 3.簡述 shell 命令Linux 實現程 4.Linux 系統進程候處理接收軟斷信號進程接收軟斷信號放 5.Windows 2000/xp 哪些情況進行線程優先順序提升 6.試描述使用Win32 API 實現線程同步般 7 6 1.文件、文件系統文件系統哪些功能 2.文件物理結構哪幾種說串聯文件結構適合隨機存取 3.文件目錄文件目錄包含哪些信息 4.實現文件系加快文件目錄檢索速度利用文件控制塊解假設目錄文件存放磁碟每盤塊512 位元組文件控制塊佔64 位元組其文件名佔8 位元組通文件控制塊解兩部第部佔10 位元組(包括文件名文件內部號)第二部占 56 位元組(包括文件內部號文件其描述信息) ① 假設某目錄文件共254 文件控制塊試別給採用解前解查找該目錄文件某文件控制塊平均訪問磁碟數 ② 般若目錄文件解前佔用 n 盤塊解改用 m 盤塊存放文件名文件內部號部請組訪問磁碟數減少條件 5.創建文件能發哪幾種情況應何處理 6.文件存取控制式哪幾種比較優缺點 7.文件系統採用級索引結構搜索文件內容設塊512 位元組每塊號3 位元組考慮邏輯塊號物理塊所佔位置別求二級索引三級索引定址文件度 8 7 1.設備管理目標功能 2.I/O 緩沖要引入I/O 緩沖 3.設備驅程序要設備驅程序用戶進程使用設備驅程序 4.單緩沖與雙緩沖情況系統塊數據處理間別 max(C,T)+M max(C,T)其C:CPU 計算間T:數據I/O 控制器緩沖區傳輸間M:數據緩沖區用戶工作區傳輸間 5.要引入設備獨立性何實現設備獨立性 6.某移臂磁碟柱面由外向順序編號假定前磁停100 號柱面且移臂向向現表1 所示請求序列等待訪問磁碟: 表1 訪問磁碟請求序列 請求序 1 2 3 4 5 6 7 8 9 10 柱面號 190 10 160 80 90 125 30 20 140 25 答面問題: ① 寫別採用短查找間優先算電梯調度算實際處理述請求序 ② 針本題比較述兩種算移臂所花間(忽略移臂改向間)言哪種算更合適簡要說明 9 8 1.ext2 文件系統磁碟I 節點內存I 節點 2.Linux 系統用於打文件系統調用open 格式 fd = open( pathname, flags) 其pathname 欲打文件路徑名flags 指示打式(讀、寫)open 返值文件描述符 1)給open 實現算 2)說明用戶文件描述符表、系統打文件表與I 節點表作用及三者間關系 3.Linux 系統文件共享哪兩種式 4.說明Linux 虛擬文件系統VFS 工作原理 5.說明Linux 虛擬文件系統VFS 查找文件程 6.塊設備驅程序 7.別給文件磁碟索引節點與內存索引節點引用數能於1情況 10 9 1.死鎖給產死鎖必要條件 2.三進程P1、P2 P3 並發工作進程P1 需用資源S3 S1;進程P2 需用資源S1 S2;進程P3 需用資源S2 S3答: (1) 若資源配加限制發情況?? (2) 保證進程確工作應採用資源配策略?? 3.某系統R1R2R3 三種資源T0 刻P1P2P3P4 四進程資源佔用需求情況表1 所示刻系統用資源向量(2, 1, 2)問題: ① 系統各種資源總數刻各進程各資源需求數目用向量或矩陣表示; ② P1 P2 均發資源請求向量Request(1, 0, 1)保持系統安全性應該何配資源給兩進程說明所採用策略原; ③ ②兩請求立刻滿足系統刻否處於死鎖狀態 表1 T0 刻P1P2P3P4 四進程資源佔用需求情況表 Maximum demand Current allocation R1 R2 R3 R1 R2 R3 P1 3 2 2 1 0 0 P2 6 1 3 4 1 1 P3 3 1 4 2 1 1 P4 4 2 2 0 0 2 4.解決死鎖問題幾種哪種容易實現哪種使資源利用率高